Feature: Cleanup unnecessary files from nodes/_generate folder
Doc: Nodes definitions
Change-Id: I35bc2c1ea8fe4f9d30037932990fa3f271c0bb9c
diff --git a/README.rst b/README.rst
index aab9378..1b61ae1 100644
--- a/README.rst
+++ b/README.rst
@@ -114,6 +114,65 @@
salt-call event.send 'reclass/minion/declassify'
+Nodes definitions generator
+===========================
+
+Generate nodes definitions by running:
+
+.. code-block:: bash
+
+ salt-call state.sls reclass.storage -l debug
+
+Remove unnecessary files from nodes/_generated:
+
+.. code-block:: yaml
+
+ reclass:
+ storage:
+ reclass_nodes_cleanup: true
+
+Static node definition:
+
+.. code-block:: yaml
+
+ reclass:
+ storage:
+ enabled: true
+ node:
+ openstack_benchmark_node01:
+ classes:
+ - cluster.example.openstack.benchmark
+ domain: example.com
+ name: bmk01
+ params:
+ linux_system_codename: xenial
+ salt_master_host: 192.168.0.253
+ single_address: 192.168.2.95
+
+Multiple nodes definitions (using generator):
+
+.. code-block:: yaml
+
+ reclass:
+ storage:
+ enabled: true
+ node:
+ openstack_compute_rack01:
+ classes:
+ - cluster.example.openstack.compute
+ domain: example.com
+ name: cmp<<count>>
+ params:
+ linux_system_codename: xenial
+ salt_master_host: 192.168.0.253
+ repeat:
+ start: 1
+ count: 50
+ digits: 3
+ params:
+ single_address:
+ start: 101
+ value: 192.168.2.<<count>>
More Information
================
diff --git a/reclass/map.jinja b/reclass/map.jinja
index 9915c0c..efa41bc 100644
--- a/reclass/map.jinja
+++ b/reclass/map.jinja
@@ -13,6 +13,7 @@
'engine': 'pkg'
},
'version': '1.4.1',
+ 'reclass_nodes_cleanup': False,
},
'Debian': {
'pkgs': ['reclass', 'python-reclass'],
diff --git a/reclass/storage/node.sls b/reclass/storage/node.sls
index e3ce328..3014b4a 100644
--- a/reclass/storage/node.sls
+++ b/reclass/storage/node.sls
@@ -1,6 +1,18 @@
{%- from "reclass/map.jinja" import storage with context %}
{%- if storage.enabled %}
+{%- if storage.reclass_nodes_cleanup %}
+{{ storage.base_dir }}/nodes/_generated_cleanup:
+ file.directory:
+ - name: {{ storage.base_dir }}/nodes/_generated
+ - user: root
+ - group: root
+ - dir_mode: 755
+ - file_mode: 644
+ - makedirs: True
+ - clean: True
+{%- endif %}
+
{%- for node_name, node in storage.get('node', {}).iteritems() %}
{%- if node.repeat is defined %}
@@ -29,6 +41,10 @@
node: {{ node|yaml }}
node_name: "{{ node_name }}"
extra_params: {{ extra_params }}
+{%- if storage.reclass_nodes_cleanup %}
+ - require_in:
+ - file: {{ storage.base_dir }}/nodes/_generated_cleanup
+{%- endif %}
{%- endfor %}
@@ -45,6 +61,10 @@
node: {{ node|yaml }}
node_name: "{{ node.get('name', node_name) }}"
extra_params: {}
+{%- if storage.reclass_nodes_cleanup %}
+ - require_in:
+ - file: {{ storage.base_dir }}/nodes/_generated_cleanup
+{%- endif %}
{%- endif %}
diff --git a/tests/pillar/generate_multi.sls b/tests/pillar/generate_multi.sls
index d25e2f6..628724e 100644
--- a/tests/pillar/generate_multi.sls
+++ b/tests/pillar/generate_multi.sls
@@ -1,6 +1,7 @@
reclass:
storage:
enabled: true
+ reclass_nodes_cleanup: true
repeat_replace_symbol: <<count>>
node:
service_node01: