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 }}