Support InfluxDB in container

This changes updates the formula to support the deployment of InfluxDB
as a container (eg Docker Swarm).

Change-Id: I5e815109987f928024f05cdaa99de6f558866174
diff --git a/influxdb/init.sls b/influxdb/init.sls
index c4499cc..9d0eeb9 100644
--- a/influxdb/init.sls
+++ b/influxdb/init.sls
@@ -1,4 +1,3 @@
-
 {% if pillar.influxdb.server is defined %}
 include:
 - influxdb.server
diff --git a/influxdb/map.jinja b/influxdb/map.jinja
index 974c839..c9a0419 100644
--- a/influxdb/map.jinja
+++ b/influxdb/map.jinja
@@ -1,10 +1,10 @@
-
-
 {%- load_yaml as base_defaults %}
 default:
   pkgs:
   - influxdb
   service: influxdb
+  container_mode: false
+  prefix_dir: /
   reporting_disabled: true
   http:
     enabled: true
diff --git a/influxdb/server.sls b/influxdb/server.sls
index 30899fc..fb5bcf5 100644
--- a/influxdb/server.sls
+++ b/influxdb/server.sls
@@ -2,18 +2,30 @@
 
 {%- if server.enabled %}
 
+{%- if not server.container_mode %}
 influxdb_packages:
   pkg.installed:
   - names: {{ server.pkgs }}
+{%- endif %}
+
+{{ server.prefix_dir }}/etc/influxdb:
+  file.directory:
+    - user: root
+    - group: root
+    - mode: 755
+    - makedirs: True
 
 influxdb_config:
   file.managed:
-  - name: /etc/influxdb/influxdb.conf
+  - name: {{ server.prefix_dir }}/etc/influxdb/influxdb.conf
   - source: salt://influxdb/files/influxdb.conf
   - template: jinja
+{%- if not server.container_mode %}
   - require:
     - pkg: influxdb_packages
+{%- endif %}
 
+{%- if not server.container_mode %}
 influxdb_default:
   file.managed:
   - name: /etc/default/influxdb
@@ -21,6 +33,7 @@
   - template: jinja
   - require:
     - pkg: influxdb_packages
+{%- endif %}
 
 influxdb_service:
   service.running:
@@ -29,17 +42,19 @@
   # This delay is needed before being able to send data to server to create
   # users and databases.
   - init_delay: 5
-  {%- if grains.get('noservices') %}
+{%- if grains.get('noservices') or server.container_mode %}
   - onlyif: /bin/false
-  {%- endif %}
+{%- endif %}
   - watch:
     - file: influxdb_config
+{%- if not server.container_mode %}
     - file: influxdb_default
+{%- endif %}
 
 {% set url_for_query = "http://{}:{}/query".format(server.http.bind.address, server.http.bind.port) %}
 {% set admin_created = false %}
 
-{%- if server.admin.get('user', {}).get('enabled', False) %}
+{%- if not server.container_mode and server.admin.get('user', {}).get('enabled', False) %}
   {% set query_create_admin = "--data-urlencode \"q=CREATE USER {} WITH PASSWORD '{}' WITH ALL PRIVILEGES\"".format(server.admin.user.name, server.admin.user.password) %}
   {% set admin_url = "http://{}:{}/query?u={}&p={}".format(server.http.bind.address, server.http.bind.port, server.admin.user.name, server.admin.user.password) %}
 influxdb_create_admin:
diff --git a/metadata/service/server/container.yml b/metadata/service/server/container.yml
new file mode 100644
index 0000000..aec2b3e
--- /dev/null
+++ b/metadata/service/server/container.yml
@@ -0,0 +1,15 @@
+applications:
+- influxdb
+classes:
+- service.influxdb.support
+parameters:
+  influxdb:
+    server:
+      enabled: true
+      container_mode: true
+      admin:
+        bind:
+          address: 0.0.0.0
+      http:
+        bind:
+          address: 0.0.0.0