Merge "Added job testing to gating job"
diff --git a/cicd-lab-pipeline.groovy b/cicd-lab-pipeline.groovy
index 11fc586..b742e04 100644
--- a/cicd-lab-pipeline.groovy
+++ b/cicd-lab-pipeline.groovy
@@ -32,26 +32,6 @@
 salt = new com.mirantis.mk.Salt()
 orchestrate = new com.mirantis.mk.Orchestrate()
 
-def waitForServices(saltMaster) {
-    retry(30) {
-        out = salt.cmdRun(saltMaster, 'I@docker:swarm:role:master', """/bin/bash -c 'docker service ls | grep -E "0/[0-9]+"' && echo 'Some services are not running'""")
-        for (int a = 0; a < out['return'].size(); a++) {
-            def entry = out['return'].get(a)
-            for (int i = 0; i < entry.size(); i++) {
-                def node = entry.get(i)
-                if (node) {
-                    if (node.value =~ /Some services are not running/) {
-                        sleep(10)
-                        throw new Exception("$node.key: $node.value")
-                    } else {
-                        print out
-                    }
-                }
-            }
-        }
-    }
-}
-
 timestamps {
     node {
         try {
@@ -117,7 +97,7 @@
                 try {
                     saltMasterPort = SALT_MASTER_PORT
                 } catch (MissingPropertyException e) {
-                    saltMasterPort = 8000
+                    saltMasterPort = 6969
                 }
                 saltMasterHost = openstack.getHeatStackOutputParam(openstackCloud, HEAT_STACK_NAME, 'salt_master_ip', openstackEnv)
                 saltMasterUrl = "http://${saltMasterHost}:${saltMasterPort}"
@@ -165,7 +145,6 @@
 
                 // XXX: Hack to fix dependency of gerrit on mysql
                 print salt.cmdRun(saltMaster, 'I@docker:swarm:role:master', "docker service rm gerrit; sleep 5; rm -rf /srv/volumes/gerrit/*")
-                waitForServices(saltMaster)
 
                 timeout(10) {
                     salt.cmdRun(saltMaster, 'I@docker:swarm:role:master', 'apt-get install -y mysql-client')
@@ -174,11 +153,11 @@
                 }
                 salt.enforceState(saltMaster, 'I@docker:swarm:role:master', 'docker.client')
                 // ---- cut here (end of hack) ----
-
-                waitForServices(saltMaster)
             }
 
             stage("Configure CI/CD services") {
+                salt.syncAll(saltMaster, '*')
+
                 // Aptly
                 salt.enforceState(saltMaster, 'I@aptly:server', 'aptly', true)
 
diff --git a/lab-pipeline.groovy b/lab-pipeline.groovy
index 6f0717d..55722af 100644
--- a/lab-pipeline.groovy
+++ b/lab-pipeline.groovy
@@ -359,8 +359,17 @@
                     if (INSTALL.toLowerCase().contains('contrail')) {
                         // Install opencontrail database services
                         //runSaltProcessStep(saltMaster, 'I@opencontrail:database', 'state.sls', ['opencontrail.database'], 1)
-                        salt.enforceState(saltMaster, 'ntw01*', 'opencontrail.database', true)
-                        salt.enforceState(saltMaster, 'I@opencontrail:database', 'opencontrail.database', true)
+                        try {
+                            salt.enforceState(saltMaster, 'ntw01*', 'opencontrail.database', true)
+                        } catch (Exception e) {
+                            print.warningMsg('Exception in state opencontrail.database on ntw01*')
+                        }
+
+                        try {
+                            salt.enforceState(saltMaster, 'I@opencontrail:database', 'opencontrail.database', true)
+                        } catch (Exception e) {
+                            print.warningMsg('Exception in state opencontrail.database on I@opencontrail:database')
+                        }
 
                         // Install opencontrail control services
                         //runSaltProcessStep(saltMaster, 'I@opencontrail:control', 'state.sls', ['opencontrail'], 1)
@@ -438,8 +447,10 @@
 
                     sleep(10)
 
-                    salt.enforceState(saltMaster, 'I@elasticsearch:client', 'elasticsearch.client', true)
-                    salt.enforceState(saltMaster, 'I@kibana:client', 'kibana.client', true)
+                    salt.runSaltProcessStep(saltMaster, 'I@elasticsearch.client', 'cmd.run', ['salt-call state.sls elasticsearch.client'], null, true)
+                    // salt.enforceState(saltMaster, 'I@elasticsearch:client', 'elasticsearch.client', true)
+                    salt.runSaltProcessStep(saltMaster, 'I@kibana.client', 'cmd.run', ['salt-call state.sls kibana.client'], null, true)
+                    // salt.enforceState(saltMaster, 'I@kibana:client', 'kibana.client', true)
 
                     // install monitor
                     // Restart salt-minion to make sure that it uses the latest Jinja library
@@ -457,6 +468,7 @@
                     // Install collectd, heka and sensu services on the nodes, this will also
                     // generate the metadata that goes into the grains and eventually into Salt Mine
                     salt.enforceState(saltMaster, '*', 'collectd', true)
+                    salt.enforceState(saltMaster, '*', 'salt.minion', true)
                     salt.enforceState(saltMaster, '*', 'heka', true)
 
                     // Gather the Grafana metadata as grains
@@ -488,13 +500,14 @@
                     // Finalize the configuration of Grafana (add the dashboards...)
                     salt.enforceState(saltMaster, 'I@grafana:client', 'grafana.client.service', true)
                     // nw salt -C 'I@grafana:client' --async service.restart salt-minion; sleep 10
-                    salt.enforceState(saltMaster, 'I@grafana:client', 'grafana.client', true)
+
+                    salt.runSaltProcessStep(saltMaster, 'I@grafana.client and *01*', 'cmd.run', ['salt-call state.sls grafana.client'], null, true)
+                    // salt.enforceState(saltMaster, 'I@grafana:client and *01*', 'grafana.client', true)
 
                     // Get the StackLight monitoring VIP addres
-                    // TODO
                     //vip=$(salt-call pillar.data _param:stacklight_monitor_address --out key|grep _param: |awk '{print $2}')
                     //vip=${vip:=172.16.10.253}
-                    def pillar = salt.pillarGet(saltMaster, 'ctl01*', '_param:stacklight_monitor_address')
+                    def pillar = salt.getPillar(saltMaster, 'ctl01*', '_param:stacklight_monitor_address')
                     print(pillar)
                     def stacklight_vip = pillar['return'][0]['ctl01.nfv-lab.local']
                     common.infoMsg("restart services on node with IP: ${stacklight_vip}")