Refactor structure of kubernetes.config

Change-Id: Iac8cb4fd20b155ea943f612d8076d68c2fff7d3f
diff --git a/kubernetes/control/cluster.sls b/kubernetes/control/cluster.sls
index f597c40..4f894ba 100644
--- a/kubernetes/control/cluster.sls
+++ b/kubernetes/control/cluster.sls
@@ -1,153 +1,6 @@
-{% from "kubernetes/map.jinja" import control with context %}
-{%- if control.enabled %}
-
-/srv/kubernetes:
-  file.directory:
-  - makedirs: true
-
-{%- if control.job is defined %}
-
-{%- for job_name, job in control.job.iteritems() %}
-
-/srv/kubernetes/jobs/{{ job_name }}-job.yml:
-  file.managed:
-  - source: salt://kubernetes/files/job.yml
-  - user: root
-  - group: root
-  - template: jinja
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      job: {{ job|yaml }}
-
-{%- endfor %}
-
-{%- endif %}
-
-{%- for service_name, service in control.service.iteritems() %}
-
-{%- if service.enabled %}
-
-/srv/kubernetes/services/{{ service.cluster }}/{{ service_name }}-svc.yml:
-  file.managed:
-  - source: salt://kubernetes/files/svc.yml
-  - user: root
-  - group: root
-  - template: jinja
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      service: {{ service|yaml }}
-
-{%- endif %}
-
-/srv/kubernetes/{{ service.kind|lower }}/{{ service_name }}-{{ service.kind }}.yml:
-  file.managed:
-  - source: salt://kubernetes/files/rc.yml
-  - user: root
-  - group: root
-  - template: jinja
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      service: {{ service|yaml }}
-
-{%- endfor %}
-
-{%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %}
-
-{%- if node_grains.get('kubernetes', {}).service is defined %}
-
-{%- set service = node_grains.get('kubernetes', {}).get('service', {}) %}
-
-{%- if service.enabled %}
-
-/srv/kubernetes/services/{{ node_name }}-svc.yml:
-  file.managed:
-  - source: salt://kubernetes/files/svc.yml
-  - user: root
-  - group: root
-  - template: jinja
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      service: {{ service|yaml }}
-
-{%- endif %}
-/srv/kubernetes/{{ service.kind|lower }}/{{ node_name }}-{{ service.kind }}.yml:
-  file.managed:
-  - source: salt://kubernetes/files/rc.yml
-  - user: root
-  - group: root
-  - template: jinja
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      service: {{ service|yaml }}
-
-{%- endif %}
-
-{%- endfor %}
-
-{%- for configmap_name, configmap in control.get('configmap', {}).iteritems() %}
-{%- if configmap.enabled|default(True) %}
-
-{%- if configmap.pillar is defined %}
-{%- if control.config_type == "default" %}
-  {%- for service_name in configmap.pillar.keys() %}
-    {%- if pillar.get(service_name, {}).get('_support', {}).get('config', {}).get('enabled', False) %}
-
-      {%- set support_fragment_file = service_name+'/meta/config.yml' %}
-      {% macro load_support_file(pillar, grains) %}{% include support_fragment_file %}{% endmacro %}
-
-      {%- set service_config_files = load_support_file(configmap.pillar, configmap.get('grains', {}))|load_yaml %}
-      {%- for service_config_name, service_config in service_config_files.config.iteritems() %}
-
-/srv/kubernetes/configmap/{{ configmap_name }}/{{ service_config_name }}:
-  file.managed:
-  - source: {{ service_config.source }}
-  - user: root
-  - group: root
-  - template: {{ service_config.template }}
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      pillar: {{ configmap.pillar|yaml }}
-      grains: {{ configmap.get('grains', {}) }}
-
-      {%- endfor %}
-    {%- endif %}
-  {%- endfor %}
-
-{%- else %}
-
-/srv/kubernetes/configmap/{{ configmap_name }}.yml:
-  file.managed:
-  - source: salt://kubernetes/files/configmap.yml
-  - user: root
-  - group: root
-  - template: jinja
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      configmap_name: {{ configmap_name }}
-      configmap: {{ configmap|yaml }}
-      grains: {{ configmap.get('grains', {}) }}
-
-{%- endif %}
-
-{%- else %}
-{# TODO: configmap not using support between formulas #}
-{%- endif %}
-
-{%- endif %}
-{%- endfor %}
-
-{%- endif %}
+{#-
+  kubernetes.control.cluster is only for backward compatibility and simply
+  includes kubernetes.control and it's child states
+-#}
+include:
+  - kubernetes.control
diff --git a/kubernetes/control/configmap.sls b/kubernetes/control/configmap.sls
new file mode 100644
index 0000000..07b8189
--- /dev/null
+++ b/kubernetes/control/configmap.sls
@@ -0,0 +1,59 @@
+{% from "kubernetes/map.jinja" import control with context %}
+include:
+  - kubernetes.control
+
+{%- for configmap_name, configmap in control.get('configmap', {}).iteritems() %}
+{%- if configmap.enabled|default(True) %}
+
+{%- if configmap.pillar is defined %}
+{%- if control.config_type == "default" %}
+  {%- for service_name in configmap.pillar.keys() %}
+    {%- if pillar.get(service_name, {}).get('_support', {}).get('config', {}).get('enabled', False) %}
+
+      {%- set support_fragment_file = service_name+'/meta/config.yml' %}
+      {% macro load_support_file(pillar, grains) %}{% include support_fragment_file %}{% endmacro %}
+
+      {%- set service_config_files = load_support_file(configmap.pillar, configmap.get('grains', {}))|load_yaml %}
+      {%- for service_config_name, service_config in service_config_files.config.iteritems() %}
+
+/srv/kubernetes/configmap/{{ configmap_name }}/{{ service_config_name }}:
+  file.managed:
+  - source: {{ service_config.source }}
+  - user: root
+  - group: root
+  - template: {{ service_config.template }}
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      pillar: {{ configmap.pillar|yaml }}
+      grains: {{ configmap.get('grains', {}) }}
+
+      {%- endfor %}
+    {%- endif %}
+  {%- endfor %}
+
+{%- else %}
+
+/srv/kubernetes/configmap/{{ configmap_name }}.yml:
+  file.managed:
+  - source: salt://kubernetes/files/configmap.yml
+  - user: root
+  - group: root
+  - template: jinja
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      configmap_name: {{ configmap_name }}
+      configmap: {{ configmap|yaml }}
+      grains: {{ configmap.get('grains', {}) }}
+
+{%- endif %}
+
+{%- else %}
+{# TODO: configmap not using support between formulas #}
+{%- endif %}
+
+{%- endif %}
+{%- endfor %}
diff --git a/kubernetes/control/init.sls b/kubernetes/control/init.sls
index 35c5745..ea56c42 100644
--- a/kubernetes/control/init.sls
+++ b/kubernetes/control/init.sls
@@ -1,3 +1,16 @@
-
+{% from "kubernetes/map.jinja" import control with context %}
 include:
-- kubernetes.control.cluster
+  - kubernetes.control.cluster
+  {%- if control.job is defined %}
+  - kubernetes.control.job
+  {%- endif %}
+  {%- if control.service is defined %}
+  - kubernetes.control.service
+  {%- endif %}
+  {%- if control.configmap is defined %}
+  - kubernetes.control.configmap
+  {%- endif %}
+
+/srv/kubernetes:
+  file.directory:
+  - makedirs: true
diff --git a/kubernetes/control/job.sls b/kubernetes/control/job.sls
new file mode 100644
index 0000000..b3a0696
--- /dev/null
+++ b/kubernetes/control/job.sls
@@ -0,0 +1,19 @@
+{% from "kubernetes/map.jinja" import control with context %}
+include:
+  - kubernetes.control
+
+{%- for job_name, job in control.job.iteritems() %}
+
+/srv/kubernetes/jobs/{{ job_name }}-job.yml:
+  file.managed:
+  - source: salt://kubernetes/files/job.yml
+  - user: root
+  - group: root
+  - template: jinja
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      job: {{ job|yaml }}
+
+{%- endfor %}
diff --git a/kubernetes/control/service.sls b/kubernetes/control/service.sls
new file mode 100644
index 0000000..b88dd85
--- /dev/null
+++ b/kubernetes/control/service.sls
@@ -0,0 +1,69 @@
+{% from "kubernetes/map.jinja" import control with context %}
+include:
+  - kubernetes.control
+
+{%- for service_name, service in control.service.iteritems() %}
+  {%- if service.enabled %}
+
+/srv/kubernetes/services/{{ service.cluster }}/{{ service_name }}-svc.yml:
+  file.managed:
+  - source: salt://kubernetes/files/svc.yml
+  - user: root
+  - group: root
+  - template: jinja
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      service: {{ service|yaml }}
+
+  {%- endif %}
+
+/srv/kubernetes/{{ service.kind|lower }}/{{ service_name }}-{{ service.kind }}.yml:
+  file.managed:
+  - source: salt://kubernetes/files/rc.yml
+  - user: root
+  - group: root
+  - template: jinja
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      service: {{ service|yaml }}
+
+{%- endfor %}
+
+{%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %}
+
+  {%- if node_grains.get('kubernetes', {}).service is defined %}
+    {%- set service = node_grains.get('kubernetes', {}).get('service', {}) %}
+    {%- if service.enabled %}
+
+/srv/kubernetes/services/{{ node_name }}-svc.yml:
+  file.managed:
+  - source: salt://kubernetes/files/svc.yml
+  - user: root
+  - group: root
+  - template: jinja
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      service: {{ service|yaml }}
+
+    {%- endif %}
+/srv/kubernetes/{{ service.kind|lower }}/{{ node_name }}-{{ service.kind }}.yml:
+  file.managed:
+  - source: salt://kubernetes/files/rc.yml
+  - user: root
+  - group: root
+  - template: jinja
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      service: {{ service|yaml }}
+
+  {%- endif %}
+
+{%- endfor %}