Fix gerrit - mysql depedency hack
Change-Id: I3a3f0777a6b36e24d9581df354b26034b712581f
diff --git a/cicd-lab-pipeline.groovy b/cicd-lab-pipeline.groovy
index cbcbd58..96b6529 100644
--- a/cicd-lab-pipeline.groovy
+++ b/cicd-lab-pipeline.groovy
@@ -31,6 +31,26 @@
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
+ }
+ }
+ }
+ }
+ }
+}
+
node {
try {
// connection objects
@@ -125,30 +145,11 @@
// 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/*")
- sleep(10)
- print salt.cmdRun(saltMaster, 'I@docker:swarm:role:master', "apt-get install -y mysql-client; mysql -ppassword -h172.16.10.11 -P13306 -e'drop database gerrit;create database gerrit;'")
+ waitForServices(saltMaster)
salt.enforceState(saltMaster, 'I@docker:swarm:role:master', 'docker.client')
// ---- cut here (end of hack) ----
- 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
- }
- }
- }
- }
- }
- // Give services some time to settle
- sleep(30)
+ waitForServices(saltMaster)
}
stage("Configure CI/CD services") {