Code Cleanup, introduce docs_path and use it for create-docs
This commit is contained in:
parent
d4b6837260
commit
478f8a4bfa
@ -1,7 +1,6 @@
|
|||||||
import pathlib
|
import pathlib
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from .utils import ensure_dir
|
|
||||||
from .stackgroup import StackGroup
|
from .stackgroup import StackGroup
|
||||||
from .jinja import read_config_file
|
from .jinja import read_config_file
|
||||||
from .exceptions import InvalidProjectDir
|
from .exceptions import InvalidProjectDir
|
||||||
@ -18,7 +17,8 @@ class CloudBender(object):
|
|||||||
self.ctx = {
|
self.ctx = {
|
||||||
"config_path": self.root.joinpath("config"),
|
"config_path": self.root.joinpath("config"),
|
||||||
"template_path": self.root.joinpath("cloudformation"),
|
"template_path": self.root.joinpath("cloudformation"),
|
||||||
"parameter_path": self.root.joinpath("parameters"),
|
"hooks_path": self.root.joinpath("hooks"),
|
||||||
|
"docs_path": self.root.joinpath("docs"),
|
||||||
"artifact_paths": [self.root.joinpath("artifacts")]
|
"artifact_paths": [self.root.joinpath("artifacts")]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ class CloudBender(object):
|
|||||||
|
|
||||||
# Make sure all paths are abs
|
# Make sure all paths are abs
|
||||||
for k, v in self.ctx.items():
|
for k, v in self.ctx.items():
|
||||||
if k in ['config_path', 'template_path', 'parameter_path', 'artifact_paths']:
|
if k in ['config_path', 'template_path', 'hooks_path', 'docs_path', 'artifact_paths']:
|
||||||
if isinstance(v, list):
|
if isinstance(v, list):
|
||||||
new_list = []
|
new_list = []
|
||||||
for p in v:
|
for p in v:
|
||||||
@ -50,9 +50,6 @@ class CloudBender(object):
|
|||||||
if not v.is_absolute():
|
if not v.is_absolute():
|
||||||
self.ctx[k] = self.root.joinpath(v)
|
self.ctx[k] = self.root.joinpath(v)
|
||||||
|
|
||||||
if k in ['template_path', 'parameter_path']:
|
|
||||||
ensure_dir(self.ctx[k])
|
|
||||||
|
|
||||||
self.sg = StackGroup(self.ctx['config_path'], self.ctx)
|
self.sg = StackGroup(self.ctx['config_path'], self.ctx)
|
||||||
self.sg.read_config()
|
self.sg.read_config()
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ import os
|
|||||||
import re
|
import re
|
||||||
import hashlib
|
import hashlib
|
||||||
import oyaml as yaml
|
import oyaml as yaml
|
||||||
import json
|
|
||||||
import time
|
import time
|
||||||
import pathlib
|
import pathlib
|
||||||
import pprint
|
import pprint
|
||||||
@ -12,7 +11,7 @@ from dateutil.tz import tzutc
|
|||||||
|
|
||||||
from botocore.exceptions import ClientError
|
from botocore.exceptions import ClientError
|
||||||
|
|
||||||
from .utils import dict_merge, search_refs
|
from .utils import dict_merge, search_refs, ensure_dir
|
||||||
from .connection import BotoConnection
|
from .connection import BotoConnection
|
||||||
from .jinja import JinjaEnv, read_config_file
|
from .jinja import JinjaEnv, read_config_file
|
||||||
from . import __version__
|
from . import __version__
|
||||||
@ -230,7 +229,7 @@ class Stack(object):
|
|||||||
def write_template_file(self):
|
def write_template_file(self):
|
||||||
if self.cfn_template:
|
if self.cfn_template:
|
||||||
yaml_file = os.path.join(self.ctx['template_path'], self.rel_path, self.stackname + ".yaml")
|
yaml_file = os.path.join(self.ctx['template_path'], self.rel_path, self.stackname + ".yaml")
|
||||||
self._ensure_dirs('template_path')
|
ensure_dir(os.path.join(self.ctx['template_path'], self.rel_path))
|
||||||
with open(yaml_file, 'w') as yaml_contents:
|
with open(yaml_file, 'w') as yaml_contents:
|
||||||
yaml_contents.write(self.cfn_template)
|
yaml_contents.write(self.cfn_template)
|
||||||
logger.info('Wrote %s to %s', self.template, yaml_file)
|
logger.info('Wrote %s to %s', self.template, yaml_file)
|
||||||
@ -348,7 +347,8 @@ class Stack(object):
|
|||||||
if 'Outputs' in self.cfn_data:
|
if 'Outputs' in self.cfn_data:
|
||||||
data['outputs'] = self.cfn_data['Outputs']
|
data['outputs'] = self.cfn_data['Outputs']
|
||||||
|
|
||||||
doc_file = os.path.join(self.ctx['template_path'], self.rel_path, self.stackname.upper() + ".md")
|
doc_file = os.path.join(self.ctx['docs_path'], self.rel_path, self.stackname.upper() + ".md")
|
||||||
|
ensure_dir(os.path.join(self.ctx['docs_path'], self.rel_path))
|
||||||
|
|
||||||
with open(doc_file, 'w') as doc_contents:
|
with open(doc_file, 'w') as doc_contents:
|
||||||
doc_contents.write(template.render(**data))
|
doc_contents.write(template.render(**data))
|
||||||
@ -401,28 +401,6 @@ class Stack(object):
|
|||||||
if _errors:
|
if _errors:
|
||||||
raise ParameterNotFound('Cannot find value for parameters: {0}'.format(_errors))
|
raise ParameterNotFound('Cannot find value for parameters: {0}'.format(_errors))
|
||||||
|
|
||||||
def write_parameter_file(self):
|
|
||||||
parameter_file = os.path.join(self.ctx['parameter_path'], self.rel_path, self.stackname + ".yaml")
|
|
||||||
|
|
||||||
# Render parameters as json for AWS CFN
|
|
||||||
self._ensure_dirs('parameter_path')
|
|
||||||
with open(parameter_file, 'w') as parameter_contents:
|
|
||||||
parameter_contents.write(json.dumps(self.cfn_parameters, indent=2, separators=(',', ': '), sort_keys=True))
|
|
||||||
logger.info('Wrote json parameters for %s to %s', self.stackname, parameter_file)
|
|
||||||
|
|
||||||
if not self.cfn_parameters:
|
|
||||||
# Make sure there are no parameters from previous runs
|
|
||||||
if os.path.isfile(parameter_file):
|
|
||||||
os.remove(parameter_file)
|
|
||||||
|
|
||||||
def delete_parameter_file(self):
|
|
||||||
parameter_file = os.path.join(self.ctx['parameter_path'], self.rel_path, self.stackname + ".yaml")
|
|
||||||
try:
|
|
||||||
os.remove(parameter_file)
|
|
||||||
logger.debug('Deleted parameter %s.', parameter_file)
|
|
||||||
except OSError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def create(self):
|
def create(self):
|
||||||
"""Creates a stack """
|
"""Creates a stack """
|
||||||
|
|
||||||
@ -613,11 +591,6 @@ class Stack(object):
|
|||||||
]))
|
]))
|
||||||
self.most_recent_event_datetime = event["Timestamp"]
|
self.most_recent_event_datetime = event["Timestamp"]
|
||||||
|
|
||||||
def _ensure_dirs(self, path):
|
|
||||||
# Ensure output dirs exist
|
|
||||||
if not os.path.exists(os.path.join(self.ctx[path], self.rel_path)):
|
|
||||||
os.makedirs(os.path.join(self.ctx[path], self.rel_path))
|
|
||||||
|
|
||||||
# stackoutput inspection
|
# stackoutput inspection
|
||||||
def _inspect_stacks(self, conglomerate):
|
def _inspect_stacks(self, conglomerate):
|
||||||
# Get all stacks of the conglomertate
|
# Get all stacks of the conglomertate
|
||||||
|
@ -30,7 +30,7 @@ def ensure_dir(path):
|
|||||||
"""Creates dir if it does not already exist."""
|
"""Creates dir if it does not already exist."""
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
os.makedirs(path)
|
os.makedirs(path)
|
||||||
logger.info('Created directory: %s', path)
|
logger.debug('Created directory: %s', path)
|
||||||
|
|
||||||
|
|
||||||
def setup_logging(debug):
|
def setup_logging(debug):
|
||||||
|
Loading…
Reference in New Issue
Block a user