Reactor - node_register

Reactor file, reactor orchestrate file and reactor state file. Reclass module and states updated
with methods to automatically classify node, generate node metadata and cluster level metadata
override.
diff --git a/_states/reclass.py b/_states/reclass.py
index 8f94b3e..4f9e09e 100644
--- a/_states/reclass.py
+++ b/_states/reclass.py
@@ -79,6 +79,27 @@
     return ret
 
 
+def dynamic_node_present(name, node_data={}, class_mapping={}, **kwargs):
+    '''
+    Classify node, create cluster level overrides and node metadata
+
+    :param name: node FQDN
+    :param node_data: dictionary of known informations about the node
+    :param class_mapping: dictionary of classes and parameters, with conditions
+
+    '''
+    ret = {'name': name,
+           'changes': {},
+           'result': True,
+           'comment': 'Node "{0}" already exists and it is in correct state'.format(name)}
+
+    classify_ret = __salt__['reclass.node_classify'](name, node_data, class_mapping, **kwargs)
+    ret['comment'] = 'Node "{0}" has been created'.format(name)
+    ret['changes']['Node'] = classify_ret
+
+    return ret
+
+
 def cluster_meta_present(name, value, file_name="overrides.yml", cluster="", **kwargs):
     '''
     Ensures that the cluster metadata entry exists