docker support

Change-Id: Iab5a6c6cd7bd3400d15c6783b2b61c839998f2d7
diff --git a/cinder/controller.sls b/cinder/controller.sls
index a890055..7799f88 100644
--- a/cinder/controller.sls
+++ b/cinder/controller.sls
@@ -22,6 +22,19 @@
   - require:
     - pkg: cinder_controller_packages
 
+{%- if grains.get('virtual_subtype', None) == "Docker" %}
+
+cinder_entrypoint:
+  file.managed:
+  - name: /entrypoint.sh
+  - template: jinja
+  - source: salt://cinder/files/entrypoint.sh
+  - mode: 755
+
+{%- endif %}
+
+{%- if not grains.get('noservices', False) %}
+
 cinder_controller_services:
   service.running:
   - names: {{ controller.services }}
@@ -56,6 +69,8 @@
 
 {%- endfor %}
 
+{%- endif %}
+
 {# old way #}
 
 {% for type in controller.get('types', []) %}
diff --git a/cinder/files/entrypoint.sh b/cinder/files/entrypoint.sh
new file mode 100644
index 0000000..a6ef478
--- /dev/null
+++ b/cinder/files/entrypoint.sh
@@ -0,0 +1,28 @@
+{%- from "cinder/map.jinja" import controller with context -%}
+#!/bin/bash -e
+
+cat /srv/salt/pillar/cinder-controller.sls | envsubst > /tmp/cinder-controller.sls
+mv /tmp/cinder-controller.sls /srv/salt/pillar/cinder-controller.sls
+
+salt-call --local --retcode-passthrough state.highstate
+
+{% for service in controller.services %}
+service {{ service }} stop || true
+{% endfor %}
+
+if [ "$1" == "api" ]; then
+    echo "starting cinder-api"
+    su cinder --shell=/bin/sh -c '/usr/bin/cinder-api --config-file=/etc/cinder/cinder.conf'
+elif [ "$1" == "scheduler" ]; then
+    echo "starting cinder-scheduler"
+    su cinder --shell=/bin/sh -c '/usr/bin/cinder-scheduler --config-file=/etc/cinder/cinder.conf'
+elif [ "$1" == "volume" ]; then
+    echo "starting cinder-volume"
+    su cinder --shell=/bin/sh -c '/usr/bin/cinder-volume --config-file=/etc/cinder/cinder.conf'
+else
+    echo "No parameter submitted, don't know what to start" 1>&2
+fi
+
+{#-
+vim: syntax=jinja
+-#}
diff --git a/cinder/map.jinja b/cinder/map.jinja
index d2282cb..c231887 100644
--- a/cinder/map.jinja
+++ b/cinder/map.jinja
@@ -1,7 +1,7 @@
 
 {% set controller = salt['grains.filter_by']({
     'Debian': {
-        'pkgs': ['cinder-api', 'cinder-scheduler', 'lvm2', 'python-cinder'],
+        'pkgs': ['cinder-api', 'cinder-scheduler', 'lvm2', 'python-cinder', 'gettext-base'],
         'services': ['cinder-api', 'cinder-scheduler'],
         'wipe_method': 'none',
         'notification': False,
@@ -16,7 +16,7 @@
 
 {% set volume = salt['grains.filter_by']({
     'Debian': {
-        'pkgs': ['cinder-volume', 'lvm2', 'sysfsutils', 'sg3-utils', 'python-cinder','python-mysqldb','p7zip'],
+        'pkgs': ['cinder-volume', 'lvm2', 'sysfsutils', 'sg3-utils', 'python-cinder','python-mysqldb','p7zip', 'gettext-base'],
         'services': ['cinder-volume'],
         'wipe_method': 'none',
         'notification': False,
diff --git a/cinder/volume.sls b/cinder/volume.sls
index b4ab4ba..7245907 100644
--- a/cinder/volume.sls
+++ b/cinder/volume.sls
@@ -36,6 +36,8 @@
 
 {%- endif %}
 
+{%- if not grains.get('noservices', False) %}
+
 cinder_volume_services:
   service.running:
   - names: {{ volume.services }}
@@ -44,6 +46,8 @@
     - file: /etc/cinder/cinder.conf
     - file: /etc/cinder/api-paste.ini
 
+{%- endif %}
+
 {# new way #}
 
 {%- if volume.backend is defined %}