Ceph deploy

Change-Id: If3ff9384357b16b4e519b10af06e4856a148b318
diff --git a/src/com/mirantis/mk/Orchestrate.groovy b/src/com/mirantis/mk/Orchestrate.groovy
index 5efc6d3..a6edf04 100644
--- a/src/com/mirantis/mk/Orchestrate.groovy
+++ b/src/com/mirantis/mk/Orchestrate.groovy
@@ -463,8 +463,8 @@
 
     //Install and Configure Docker
     salt.enforceState(master, 'I@aptly:publisher', 'aptly.publisher')
-    salt.enforceState(master, 'I@docker:swarm:role:master', 'docker.client', true)
-    sleep(300)
+    salt.enforceState(master, 'I@docker:swarm:role:master and I@jenkins:client', 'docker.client', true)
+    sleep(500)
     salt.enforceState(master, 'I@aptly:server', 'aptly', true)
     salt.enforceState(master, 'I@openldap:client', 'openldap', true)
 
@@ -496,6 +496,11 @@
             salt.enforceState(master, 'I@glusterfs:client', 'glusterfs.client', true)
         }
     }
+
+    // Launch containers
+    salt.enforceState(master, 'I@docker:swarm:role:master and I@prometheus:server', 'docker.client', true)
+    salt.runSaltProcessStep(master, 'I@docker:swarm and I@prometheus:server', 'dockerng.ps', [], null, true)
+
     //Install Telegraf
     salt.enforceState(master, 'I@telegraf:agent or I@telegraf:remote_agent', 'telegraf', true)
 
@@ -543,8 +548,6 @@
     else {
         salt.enforceState(master, 'I@docker:swarm and I@prometheus:server', ['prometheus', 'heka.remote_collector'], true, false)
     }
-    salt.enforceState(master, 'I@docker:swarm:role:master', 'docker', true)
-    salt.runSaltProcessStep(master, 'I@docker:swarm', 'dockerng.ps', [], null, true)
 
     //Configure Grafana
     def pillar = salt.getPillar(master, 'ctl01*', '_param:stacklight_monitor_address')
@@ -683,20 +686,26 @@
 def installCephMon(master, target='I@ceph:mon') {
     def salt = new com.mirantis.mk.Salt()
 
+    // generate keyrings
+    if (salt.testTarget(master, 'I@ceph:mon:keyring:mon or I@ceph:common:keyring:admin')) {
+        salt.enforceState(master, 'I@ceph:mon:keyring:mon or I@ceph:common:keyring:admin', 'ceph.mon', true)
+        salt.runSaltProcessStep(master, 'I@ceph:mon:keyring:mon or I@ceph:common:keyring:admin', 'mine.update', [], null, true)
+    }
     // install Ceph Mons
     salt.enforceState(master, target, 'ceph.mon', true)
+    if (salt.testTarget(master, 'I@ceph:mgr')) {
+        salt.enforceState(master, 'I@ceph.mgr', 'ceph.mgr', true)
+    }
 }
 
 def installCephOsd(master, target='I@ceph:osd', setup=true) {
     def salt = new com.mirantis.mk.Salt()
 
-    // Prapare filesystem on OSD drives
-    salt.enforceState(master, target, 'linux.storage', true)
-
     // install Ceph OSDs
     salt.enforceState(master, target, 'ceph.osd', true)
+    salt.enforceState(master, target, 'ceph.osd.custom', true)
 
-    // setup poools, keyrings and maybe crush
+    // setup pools, keyrings and maybe crush
     if (salt.testTarget(master, 'I@ceph:setup') && setup) {
         sleep(30)
         salt.enforceState(master, 'I@ceph:setup', 'ceph.setup', true)
@@ -711,3 +720,20 @@
         salt.enforceState(master, 'I@ceph:radosgw', 'ceph.radosgw', true)
     }
 }
+
+def connectCeph(master) {
+    def salt = new com.mirantis.mk.Salt()
+
+    // connect Ceph to the env
+    if (salt.testTarget(master, 'I@ceph:common and I@glance:server')) {
+        salt.enforceState(master, 'I@ceph:common and I@glance:server', ['ceph.common', 'ceph.setup.keyring', 'glance'], true)
+        salt.runSaltProcessStep(master, 'I@ceph:common and I@glance:server', 'service.restart', ['glance-api', 'glance-glare', 'glance-registry'])
+    }
+    if (salt.testTarget(master, 'I@ceph:common and I@cinder:controller')) {
+        salt.enforceState(master, 'I@ceph:common and I@cinder:controller', ['ceph.common', 'ceph.setup.keyring', 'cinder'], true)
+    }
+    if (salt.testTarget(master, 'I@ceph:common and I@nova:compute')) {
+        salt.enforceState(master, 'I@ceph:common and I@nova:compute', ['ceph.common', 'ceph.setup.keyring'], true)
+        salt.enforceState(master, 'I@ceph:common and I@nova:compute', ['nova'], true)
+    }
+}