Add support for prometheus

Add docker input

Change-Id: Ic8de00d37fecad5e6197f95f5852b60028688191
diff --git a/metadata/service/agent.yml b/metadata/service/agent.yml
index 5c6c2f6..c1501fe 100644
--- a/metadata/service/agent.yml
+++ b/metadata/service/agent.yml
@@ -1,5 +1,7 @@
 applications:
   - telegraf
+classes:
+ - service.telegraf.support
 parameters:
   telegraf:
     agent:
diff --git a/metadata/service/support.yml b/metadata/service/support.yml
new file mode 100644
index 0000000..a4b5e81
--- /dev/null
+++ b/metadata/service/support.yml
@@ -0,0 +1,5 @@
+parameters:
+  telegraf:
+    _support:
+      prometheus:
+        enabled: true
diff --git a/telegraf/agent.sls b/telegraf/agent.sls
index 04707ab..78a06f4 100644
--- a/telegraf/agent.sls
+++ b/telegraf/agent.sls
@@ -65,6 +65,16 @@
         name: {{ name }}
         values: {{ values }}
 
+{%- if name == 'docker' %}
+telegraf_user:
+  user.present:
+    - name: telegraf
+    - groups:
+      - docker
+    - require:
+      - pkg: telegraf_packages
+{%- endif %}
+
 {%- endfor %}
 
 {%- for name,values in agent.output.iteritems() %}
diff --git a/telegraf/files/input/docker.conf b/telegraf/files/input/docker.conf
new file mode 100644
index 0000000..8d27a55
--- /dev/null
+++ b/telegraf/files/input/docker.conf
@@ -0,0 +1,11 @@
+[[inputs.{{ name }}]]
+{%- if values is defined %}
+  endpoint = "{{ values.endpoint }}"
+  timeout = "{{ values.timeout }}s"
+{%- if values.perdevice is defined %}
+  perdevice = {{ values.perdevice | lower }}
+{%- endif %}
+{%- if values.total is defined %}
+  total = {{ values.total | lower }}
+{%- endif %}
+{%- endif %}
diff --git a/telegraf/files/telegraf.grain b/telegraf/files/telegraf.grain
index f9625aa..3e3b373 100644
--- a/telegraf/files/telegraf.grain
+++ b/telegraf/files/telegraf.grain
@@ -1,13 +1 @@
-{%- from "telegraf/map.jinja" import agent with context -%}
-{%- if agent.output is defined %}
-  {%- if agent.output.prometheus_client is defined %}
-    {%- if agent.output.prometheus_client.bind.address == '0.0.0.0' %}
-      {%- set address = grains['fqdn_ip4'][0] %}
-    {%- else %}
-      {%- set address = agent.output.prometheus_client.bind.address %}
-    {%- endif %}
-    {%- do service_grains['telegraf'].update({'prometheus_client': {'address': address, 'port': agent.output.prometheus_client.bind.port}}) %}
-  {%- endif %}
-{%- endif %}
-
 {{ service_grains|yaml(False) }}
diff --git a/telegraf/meta/prometheus.yml b/telegraf/meta/prometheus.yml
new file mode 100644
index 0000000..eea9e7a
--- /dev/null
+++ b/telegraf/meta/prometheus.yml
@@ -0,0 +1,20 @@
+{%- from "telegraf/map.jinja" import agent with context -%}
+{%- if agent.output is defined %}
+  {%- if agent.output.prometheus_client is defined %}
+    {%- if agent.output.prometheus_client.bind.address == '0.0.0.0' %}
+      {%- set address = grains['fqdn_ip4'][0] %}
+    {%- else %}
+      {%- set address = agent.output.prometheus_client.bind.address %}
+    {%- endif %}
+  {%- endif %}
+{%- endif %}
+
+{%- if address is defined %}
+server:
+  target:
+    static:
+      telegraf:
+        endpoint:
+          - address: {{ address }}
+            port: {{ agent.output.prometheus_client.bind.port }}
+{%- endif %}
diff --git a/tests/pillar/telegraf_agent.sls b/tests/pillar/telegraf_agent.sls
index c19fdd2..1b8d362 100644
--- a/tests/pillar/telegraf_agent.sls
+++ b/tests/pillar/telegraf_agent.sls
@@ -6,10 +6,6 @@
     metric_batch_size: 1000
     metric_buffer_limit: 10000
     collection_jitter: 2
-    input:
-      disk:
-      processes:
-      mem:
     output:
       prometheus_client:
         bind: