Added new logic for deployment data generation

* All files are in yaml format
* Hierarchy is static now

Change-Id: Iccd605d13940457bfb087607ef99f86dd2db76dd
This commit is contained in:
Dmitry Ukov 2016-11-11 16:56:28 +03:00
parent 159301b4fc
commit 94372326df
1 changed files with 36 additions and 2 deletions

View File

@ -25,8 +25,37 @@ from nailgun.extensions import BasePipeline
from nailgun.logger import logger
# TODO(dukov) add cluster remove callback
class OpenStackConfigPipeline(BasePipeline):
# TODO(dukov) add cluster remove callback
@classmethod
def lcm_v2(cls, repo_path, node_data):
roles_dir = os.path.join(repo_path, 'roles')
nodes_dir = os.path.join(repo_path, 'nodes')
res_mapping = {}
node_role_list = node_data.get('roles', [])
node_fqdn = node_data['fqdn']
yaml_drv = 'fuel_external_git.drivers.yaml_driver.YamlConfig'
yaml_list = []
if os.path.isdir(roles_dir):
yaml_list += os.listdir(roles_dir)
if os.path.isdir(nodes_dir):
yaml_list += os.listdir(nodes_dir)
for cfg in yaml_list:
for node_role in node_role_list:
file_name = ".".join(cfg.split('.')[:-1])
if file_name in node_role or file_name == node_fqdn:
res_mapping[cfg] = {'driver': yaml_drv, 'resource': 'yaml'}
roles_data = utils.get_config_hash(roles_dir,
res_mapping,
exts=['yaml'])
node_data = utils.get_config_hash(nodes_dir,
res_mapping,
exts=['yaml'])
utils.deep_merge(roles_data, node_data)
return roles_data
@classmethod
def lcm_v1(cls, node, node_data, repo_path):
@ -94,7 +123,12 @@ class OpenStackConfigPipeline(BasePipeline):
GitRepo.checkout(repo)
repo_path = os.path.join(const.REPOS_DIR, repo.repo_name)
data = cls.lcm_v1(node, node_data, repo_path)
lcm_version = ExternalGit.ext_settings.get('lcm_version', 'v1')
if lcm_version == 'v1':
data = cls.lcm_v1(node, node_data, repo_path)
else:
data = cls.lcm_v2(repo_path, node_data)
utils.deep_merge(node_data, data)
logger.info("Finished serialisation for node {}".format(node.id))
return node_data