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 %}