Merge "Use correct name of reclass custom state"
diff --git a/_modules/reclass.py b/_modules/reclass.py
index 3cefbad..f15eb44 100644
--- a/_modules/reclass.py
+++ b/_modules/reclass.py
@@ -49,6 +49,10 @@
# find classes
for root, dirs, files in os.walk(path):
+ # skip hidden files and folders in reclass dir
+ files = [f for f in files if not f[0] == '.']
+ dirs[:] = [d for d in dirs if not d[0] == '.']
+ # translate found init.yml to valid class name
if 'init.yml' in files:
class_file = root + '/' + 'init.yml'
class_name = class_file.replace(path, '')[:-9].replace('/', '.')
@@ -252,7 +256,7 @@
salt '*' reclass.node_create server.domain.com classes=[system.neco1, system.neco2]
salt '*' reclass.node_create namespace/test enabled=False
-
+
'''
ret = {}
@@ -344,6 +348,9 @@
ret = {}
for root, sub_folders, files in os.walk(_get_nodes_dir()):
+ # skip hidden files and folders in reclass dir
+ files = [f for f in files if not f[0] == '.']
+ sub_folders[:] = [d for d in sub_folders if not d[0] == '.']
for fl in files:
file_path = os.path.join(root, fl)
with open(file_path, 'r') as file_handle:
@@ -506,7 +513,7 @@
.. code-block:: bash
salt-call reclass.graph_data
-
+
'''
pillar_data = _pillar_graph_data().get('graph')
grain_data = _grain_graph_data().get('graph')
@@ -551,13 +558,39 @@
.. code-block:: bash
- salt '*' reclass.node_update name=nodename classes="[clas1, class2]"
+ salt '*' reclass.node_update name=nodename classes="[clas1, class2]" parameters="{param: value, another_param: another_value}"
'''
node = node_get(name=name)
- if not node.has_key('Error'):
- node = node[name.split("/")[1]]
- else:
+ if node.has_key('Error'):
return {'Error': 'Error in retrieving node'}
+
+ for name, values in node.items():
+ param = values.get('parameters', {})
+ path = values.get('path')
+ cluster = values.get('cluster')
+ environment = values.get('environment')
+ write_class = values.get('classes', [])
+
+ if parameters:
+ param.update(parameters)
+
+ if classes:
+ for classe in classes:
+ if not classe in write_class:
+ write_class.append(classe)
+
+ node_meta = _get_node_meta(name, cluster, environment, write_class, param)
+ LOG.debug(node_meta)
+
+ if path == None:
+ file_path = os.path.join(_get_nodes_dir(), name + '.yml')
+ else:
+ file_path = os.path.join(_get_nodes_dir(), path, name + '.yml')
+
+ with open(file_path, 'w') as node_file:
+ node_file.write(yaml.safe_dump(node_meta, default_flow_style=False))
+
+ return node_get(name)
def _get_node_classes(node_data, class_mapping_fragment):
diff --git a/reclass/orchestrate/reactor/node_register.sls b/reclass/orchestrate/reactor/node_register.sls
index 1bd211a..6cc2f0e 100644
--- a/reclass/orchestrate/reactor/node_register.sls
+++ b/reclass/orchestrate/reactor/node_register.sls
@@ -17,5 +17,5 @@
- tgt_type: pillar
- sls: reclass.storage.node
- queue: True
- - requires:
+ - require:
- salt: classify_node_{{ node_name }}