Rework CLI, add list-domains
diff --git a/reclass_tools/create_inventory.py b/reclass_tools/create_inventory.py
index ce0d7a6..9b03632 100644
--- a/reclass_tools/create_inventory.py
+++ b/reclass_tools/create_inventory.py
@@ -1,9 +1,6 @@
import yaml
import json
-
-from cookiecutter import __version__
-#from cookiecutter.log import configure_logger
-#from cookiecutter.main import cookiecutter
+import sys
from cookiecutter import generate
from cookiecutter.exceptions import UndefinedVariableInTemplate
@@ -41,12 +38,7 @@
reclass_storage = reclass_models.reclass_storage(domain=domain, inventory=inventory)
if domain is None:
- raise Exception("Please specify a domain name from: \n{}".format('\n'.join(reclass_storage.keys())))
-
- #current_underlay_context = {
- # 'current_clusters': {
- # }
- #}
+ sys.exit("Error: please specify a domain name from: \n{}".format('\n'.join(reclass_storage.keys())))
for storage_domain, storage_nodes in reclass_storage.items():
if storage_domain != domain:
@@ -78,9 +70,6 @@
if reclass_key:
helpers.create_nested_key(current_cluster_nodes[inventory_node_name], path=key_path, value=reclass_key)
- #current_underlay_context['current_clusters'][domain] = {
- # 'nodes': current_cluster_nodes
- #}
current_underlay_context = {
'cookiecutter': {
'cluster_name': storage_domain,
@@ -91,32 +80,6 @@
return current_underlay_context
- #1. Generate jinga interfaces / hw details based on node information provided to jinja
-
- #2. Generate appropriate includes to reclass.storate model in config node
- #configure_logger(
- # stream_level='DEBUG' if verbose else 'INFO',
- # debug_file=debug_file,
- #)
-
-#current_clusters:
-# <cluster_names>:
-# nodes:
-# <node_names>:
-# name: ctl01
-# reclass_storage_name: openstack_control_node01
-# # if classes - then classes
-# roles:
-# - vcp # to select wich interface type to use
-# #- openstack_controller # Don't forget to map the roles to corresponded classes if needed
-# parameters: # there is just a DUMP of the existing model,
-# # which could be re-used complete or particulary for rendering new model
-# linux:
-# network:
-# interfaces:
-# ..
-
-
def render_dir(template_dir, output_dir, contexts):
"""Coockiecutter echancement to use several source JSON files
@@ -128,23 +91,7 @@
dict is in the same order as files in the list.
"""
-#ipdb> repo_dir
-#u'/root/cookiecutter-templates/cluster_product/openstack'
-#ipdb> context
-#{u'cookiecutter': {u'openstack_telemetry_node02_hostname': u'mdb02', ... }}
-#ipdb> overwrite_if_exists
-#False
-#ipdb> output_dir
-#'/root/my_new_deployment/'
-
- print(template_dir)
- print(output_dir)
- print(contexts)
- #return
- #repo_dir = '/root/cookiecutter-templates/cluster_product/openstack'
overwrite_if_exists = True
- #output_dir = '/root/my_new_deployment/'
- #context = {'cookiecutter': {'openstack_telemetry_node02_hostname': 'mdb02' }}
merged_context = {}
for fcon in contexts:
@@ -153,16 +100,10 @@
elif fcon.endswith('.json'):
context = helpers.json_read(fcon)
else:
- print("Error: Please use YAML or JSON files for contexts")
- return # should be exit 1
+ sys.exit("Error: Please use YAML or JSON files for contexts")
-
- #merged_context.update(context)
- #merged_context = dict(chain(merged_context.items(), context.items()))
merged_context = helpers.merge_nested_objects(merged_context, context)
- #print(yaml.dump(merged_context, default_flow_style=False))
-
try:
generate.generate_files(
repo_dir=template_dir,
@@ -171,14 +112,11 @@
output_dir=output_dir
)
-
except UndefinedVariableInTemplate as undefined_err:
- print('>>> {}'.format(undefined_err.message))
- print('>>> Error message: {}'.format(undefined_err.error.message))
-
context_str = yaml.dump(
undefined_err.context,
default_flow_style=False
)
print('='*15 + ' Context: '+ '='*15 + '\n{}'.format(context_str) + '='*40)
- return
+ print('>>> {}'.format(undefined_err.message))
+ sys.exit('>>> Error message: {}'.format(undefined_err.error.message))