added backups,rsyslog,sphinx to Orchestrate

PROD-17570
PROD-17567
PROD-17565

Change-Id: I262b807c118cae3ee6a7ef8281d0ea1417c77e7c
diff --git a/src/com/mirantis/mk/Orchestrate.groovy b/src/com/mirantis/mk/Orchestrate.groovy
index 1633a24..8fde788 100644
--- a/src/com/mirantis/mk/Orchestrate.groovy
+++ b/src/com/mirantis/mk/Orchestrate.groovy
@@ -34,7 +34,7 @@
     if (staticMgmtNet) {
         salt.runSaltProcessStep(master, '*', 'cmd.shell', ["salt-call state.sls linux.network; salt-call service.restart salt-minion"], null, true, 60)
     }
-    salt.enforceState(master, 'I@linux:system', ['linux', 'openssh', 'ntp'])
+    salt.enforceState(master, 'I@linux:system', ['linux', 'openssh', 'ntp', 'rsyslog'])
     salt.enforceState(master, '*', ['salt.minion'], true, false, null, false, 60, 2)
     sleep(5)
     salt.enforceState(master, '*', ['linux.network.host'])
@@ -52,7 +52,7 @@
     salt.enforceState(master, target, ['salt.minion'], true, false, null, false, 60, 2)
     salt.enforceState(master, target, ['salt.minion'])
 
-    salt.enforceState(master, target, ['linux', 'openssh', 'ntp'])
+    salt.enforceState(master, target, ['linux', 'openssh', 'ntp', 'rsyslog'])
     sleep(5)
     salt.enforceState(master, target, ['linux.network.host'])
 }
@@ -62,7 +62,7 @@
     salt.fullRefresh(master, 'I@linux:system')
 
     salt.enforceState(master, 'I@salt:control', ['salt.minion'], true, false, null, false, 60, 2)
-    salt.enforceState(master, 'I@salt:control', ['linux.system', 'linux.network', 'ntp'])
+    salt.enforceState(master, 'I@salt:control', ['linux.system', 'linux.network', 'ntp', 'rsyslog'])
     salt.enforceState(master, 'I@salt:control', 'libvirt')
     salt.enforceState(master, 'I@salt:control', 'salt.control')
 
@@ -103,6 +103,7 @@
             salt.enforceState(master, 'I@mysql:client', 'mysql.client')
         }
     }
+    installBackup(master, 'mysql')
 
     // Install docker
     if (salt.testTarget(master, 'I@docker:host')) {
@@ -153,6 +154,7 @@
         }
         salt.enforceState(master, 'I@redis:server', 'redis')
     }
+    installBackup(master, 'common')
 }
 
 def installOpenstackInfra(master) {
@@ -170,6 +172,10 @@
     if (salt.testTarget(master, 'I@horizon:server')) {
         salt.enforceState(master, 'I@horizon:server', 'horizon')
     }
+    // Install sphinx server
+    if (salt.testTarget(master, 'I@sphinx:server')) {
+        salt.enforceState(master, 'I@sphinx:server', 'sphinx')
+    }
     if (salt.testTarget(master, 'I@nginx:server')) {
         salt.enforceState(master, 'I@nginx:server', 'salt.minion')
         salt.enforceState(master, 'I@nginx:server', 'nginx')
@@ -436,6 +442,7 @@
     if (salt.testTarget(master, 'I@docker:client and I@opencontrail:control')) {
         salt.enforceState(master, 'I@opencontrail:control or I@opencontrail:collector', 'docker.client')
     }
+    installBackup(master, 'contrail')
 }
 
 
@@ -659,6 +666,11 @@
         salt.enforceState(master, 'I@docker:swarm and I@prometheus:server', 'heka.remote_collector', true, false)
     }
 
+    // Install sphinx server
+    if (salt.testTarget(master, 'I@sphinx:server')) {
+        salt.enforceState(master, 'I@sphinx:server', 'sphinx')
+    }
+
     //Configure Grafana
     def pillar = salt.getPillar(master, 'ctl01*', '_param:stacklight_monitor_address')
     common.prettyPrint(pillar)
@@ -788,6 +800,70 @@
     }
 }
 
+//
+// backups
+//
+
+def installBackup(master, component='common') {
+    def salt = new com.mirantis.mk.Salt()
+    if (component == 'common') {
+        // Install Backupninja
+        if (salt.testTarget(master, 'I@backupninja:client')) {
+            salt.enforceState(master, 'I@backupninja:client', 'salt.minion.grains')
+            salt.runSaltProcessStep(master, 'I@backupninja:client', 'saltutil.sync_grains')
+            salt.runSaltProcessStep(master, 'I@backupninja:client', 'mine.update')
+            salt.enforceState(master, 'I@backupninja:client', 'xtrabackup')
+        }
+        if (salt.testTarget(master, 'I@backupninja:server')) {
+            salt.enforceState(master, 'I@backupninja:server', 'xtrabackup')
+        }
+    } else if (component == 'mysql') {
+        // Install Xtrabackup
+        if (salt.testTarget(master, 'I@xtrabackup:client')) {
+            salt.enforceState(master, 'I@xtrabackup:client', 'salt.minion.grains')
+            salt.runSaltProcessStep(master, 'I@xtrabackup:client', 'saltutil.sync_grains')
+            salt.runSaltProcessStep(master, 'I@xtrabackup:client', 'mine.update')
+            salt.enforceState(master, 'I@xtrabackup:client', 'xtrabackup')
+        }
+        if (salt.testTarget(master, 'I@xtrabackup:server')) {
+            salt.enforceState(master, 'I@xtrabackup:server', 'xtrabackup')
+        }
+    } else if (component == 'contrail') {
+
+        // Install Cassandra backup
+        if (salt.testTarget(master, 'I@cassandra:backup:client')) {
+            salt.enforceState(master, 'I@cassandra:backup:client', 'salt.minion.grains')
+            salt.runSaltProcessStep(master, 'I@cassandra:backup:client', 'saltutil.sync_grains')
+            salt.runSaltProcessStep(master, 'I@cassandra:backup:client', 'mine.update')
+            salt.enforceState(master, 'I@cassandra:backup:client', 'cassandra.backup')
+        }
+        if (salt.testTarget(master, 'I@cassandra:backup:server')) {
+            salt.enforceState(master, 'I@cassandra:backup:server', 'cassandra.backup')
+        }
+        // Install Zookeeper backup
+        if (salt.testTarget(master, 'I@zookeeper:backup:client')) {
+            salt.enforceState(master, 'I@zookeeper:backup:client', 'salt.minion.grains')
+            salt.runSaltProcessStep(master, 'I@zookeeper:backup:client', 'saltutil.sync_grains')
+            salt.runSaltProcessStep(master, 'I@zookeeper:backup:client', 'mine.update')
+            salt.enforceState(master, 'I@zookeeper:backup:client', 'zookeeper.backup')
+        }
+        if (salt.testTarget(master, 'I@zookeeper:backup:server')) {
+            salt.enforceState(master, 'I@zookeeper:backup:server', 'zookeeper.backup')
+        }
+    } else if (component == 'ceph') {
+        // Install Ceph backup
+        if (salt.testTarget(master, 'I@ceph:backup:client')) {
+            salt.enforceState(master, 'I@ceph:backup:client', 'salt.minion.grains')
+            salt.runSaltProcessStep(master, 'I@ceph:backup:client', 'saltutil.sync_grains')
+            salt.runSaltProcessStep(master, 'I@ceph:backup:client', 'mine.update')
+            salt.enforceState(master, 'I@ceph:backup:client', 'zookeeper.backup')
+        }
+        if (salt.testTarget(master, 'I@ceph:backup:server')) {
+            salt.enforceState(master, 'I@ceph:backup:server', 'zookeeper.backup')
+        }
+    }
+
+}
 
 //
 // Ceph
@@ -821,6 +897,7 @@
     salt.enforceState(master, target, 'ceph.osd.custom')
     salt.runSaltProcessStep(master, 'I@ceph:osd', 'saltutil.sync_grains')
     salt.runSaltProcessStep(master, 'I@ceph:osd', 'mine.update')
+    installBackup(master, 'ceph')
 
     // setup pools, keyrings and maybe crush
     if (salt.testTarget(master, 'I@ceph:setup') && setup) {