Manage grains using support metadata

Change-Id: Ica97d22d788c9acd3841ce84535324686345867b
diff --git a/telegraf/agent.sls b/telegraf/agent.sls
index 686bd98..105b0c9 100644
--- a/telegraf/agent.sls
+++ b/telegraf/agent.sls
@@ -1,4 +1,4 @@
-{% from "telegraf/map.jinja" import agent with context %}
+{% from "telegraf/map.jinja" import agent, service_grains with context %}
 {%- if agent.enabled %}
 
 telegraf_packages:
@@ -16,38 +16,6 @@
     - require:
       - pkg: telegraf_packages
 
-{%- set service_grains = {'telegraf': {'agent': {'input': {}}}} %}
-{%- for service_name, service in pillar.items() %}
-  {%- if service.get('_support', {}).get('telegraf', {}).get('enabled', False) %}
-    {%- set grains_fragment_file = service_name+'/meta/telegraf.yml' %}
-    {%- macro load_grains_file() %}{% include grains_fragment_file ignore missing %}{% endmacro %}
-    {%- set grains_yaml = load_grains_file()|load_yaml %}
-    {%- if grains_yaml is mapping %}
-      {%- set service_grains = salt['grains.filter_by']({'default': service_grains}, merge={'telegraf': grains_yaml}) %}
-    {%- endif %}
-  {%- endif %}
-{%- endfor %}
-
-{%- set service_grains = salt['grains.filter_by']({'default': service_grains}, merge={'telegraf': {'agent': {'input': agent.get('input', {})}}}) %}
-
-telegraf_grains_dir:
-  file.directory:
-  - name: /etc/salt/grains.d
-  - mode: 700
-  - makedirs: true
-  - user: root
-
-telegraf_grain:
-  file.managed:
-  - name: /etc/salt/grains.d/telegraf
-  - source: salt://telegraf/files/telegraf.grain
-  - template: jinja
-  - mode: 600
-  - defaults:
-    service_grains: {{ service_grains|yaml }}
-  - require:
-    - file: telegraf_grains_dir
-
 {%- set telegraf_input = service_grains.telegraf.agent.input %}
 
 {%- for name,values in telegraf_input.iteritems() %}
diff --git a/telegraf/files/telegraf.grain b/telegraf/files/telegraf.grain
deleted file mode 100644
index 3e3b373..0000000
--- a/telegraf/files/telegraf.grain
+++ /dev/null
@@ -1 +0,0 @@
-{{ service_grains|yaml(False) }}
diff --git a/telegraf/map.jinja b/telegraf/map.jinja
index a4ee28d..51580e5 100644
--- a/telegraf/map.jinja
+++ b/telegraf/map.jinja
@@ -9,3 +9,16 @@
       },
     },
 }, merge=salt['pillar.get']('telegraf:agent')) %}
+
+{%- set service_grains = {'telegraf': {'agent': {'input': {}}}} %}
+{%- for service_name, service in pillar.items() %}
+  {%- if service.get('_support', {}).get('telegraf', {}).get('enabled', False) %}
+    {%- set grains_fragment_file = service_name+'/meta/telegraf.yml' %}
+    {%- macro load_grains_file() %}{% include grains_fragment_file ignore missing %}{% endmacro %}
+    {%- set grains_yaml = load_grains_file()|load_yaml %}
+    {%- if grains_yaml is mapping %}
+      {%- set service_grains = salt['grains.filter_by']({'default': service_grains}, merge={'telegraf': grains_yaml}) %}
+    {%- endif %}
+  {%- endif %}
+{%- endfor %}
+{%- set service_grains = salt['grains.filter_by']({'default': service_grains}, merge={'telegraf': {'agent': {'input': agent.get('input', {})}}}) %}
diff --git a/telegraf/meta/salt.yml b/telegraf/meta/salt.yml
new file mode 100644
index 0000000..1e2330b
--- /dev/null
+++ b/telegraf/meta/salt.yml
@@ -0,0 +1,6 @@
+grain:
+  {%- if pillar.telegraf.agent is defined %}
+  {%- from "telegraf/map.jinja" import service_grains with context %}
+  telegraf:
+    {{ service_grains|yaml(False)|indent(4) }}
+  {%- endif %}