Add wait time for Operations API and UI to come up

Change-Id: I1b9eb78f5c8f8f54a8fced39bbe0bb43338d32d5
Related-task: #PROD-25044 (PROD:25044)
diff --git a/test-model-generator.groovy b/test-model-generator.groovy
index e6df832..67c638b 100644
--- a/test-model-generator.groovy
+++ b/test-model-generator.groovy
@@ -23,13 +23,13 @@
 def defaultRef = 'master'
 def apiGerritRef = env.API_GERRIT_REF ?: defaultRef
 def uiGerritRef = env.UI_GERRIT_REF ?: defaultRef
-def version = env.MCP_VERSION ?: 'testing'
+def version = env.MCP_VERSION ?: 'nightly'
 def dockerRegistry = env.DOCKER_REGISTRY ?: 'docker-prod-local.docker.mirantis.net'
 def dockerReviewRegistry = env.DOCKER_REVIEW_REGISTRY ?: 'docker-dev-local.docker.mirantis.net'
 def cvpImageName = env.CVP_DOCKER_IMG ? "${dockerRegistry}/${env.CVP_DOCKER_IMG}:${version}" : "${dockerRegistry}/mirantis/cvp/cvp-trymcp-tests:${version}"
 
 def checkouted = false
-def testReportFile = "${env.WORKSPACE}/reports/report.html"
+def testReportFile = 'reports/report.html'
 def manualTrigger = false
 
 def apiProject = 'operations-api'
@@ -41,6 +41,7 @@
     node(slaveNode) {
         sh "mkdir -p reports ${apiProject} ${uiProject}"
         def testImage = docker.image(cvpImageName)
+        def testImageOptions = "-u root:root --network=host -v ${env.WORKSPACE}/reports:/var/lib/qa_reports --entrypoint=''"
         try {
             stage("checkout") {
                 if (event) {
@@ -123,21 +124,39 @@
             stage('Prepare and run docker compose services') {
                 python.setupVirtualenv("${env.WORKSPACE}/venv", 'python2', ['docker-compose==1.22.0'])
 
+                // Make sure cockroach_data is cleaned up
+                if(fileExists("${apiProject}/cockroach_data")) {
+                    testImage.inside(testImageOptions) {
+                        sh("rm -rf ${env.WORKSPACE}/${apiProject}/cockroach_data")
+                    }
+                }
+
                 dir(apiProject) {
                     python.runVirtualenvCommand("${env.WORKSPACE}/venv",
                             "export IMAGE=${apiImage.id}; ./bootstrap_env.sh up")
+                    common.retry(5, 20) {
+                        sh 'curl -v http://127.0.0.1:8001/api/v1 > /dev/null'
+                    }
                 }
                 dir(uiProject) {
                     python.runVirtualenvCommand("${env.WORKSPACE}/venv",
                             "export IMAGE=${uiImage.id}; docker-compose up -d")
+                    common.retry(5, 20) {
+                        sh 'curl -v http://127.0.0.1:3000 > /dev/null'
+                    }
                 }
             }
 
             stage('Test') {
-                testImage.inside("-u root:root" +
-                        " -v ${env.WORKSPACE}/reports:/var/lib/qa_reports" +
-                        "--entrypoint=/bin/bash") {
-                    sh "pytest -m 'not trymcp'"
+                testImage.inside(testImageOptions) {
+                    sh """
+                        export TEST_LOGIN=test
+                        export TEST_PASSWORD=default
+                        export TEST_MODELD_URL=127.0.0.1
+                        export TEST_MODELD_PORT=3000
+                        cd /var/lib/trymcp-tests
+                        pytest -m 'not trymcp'
+                    """
                 }
             }
         } catch (Throwable e) {
@@ -165,10 +184,8 @@
                     sh "docker rmi ${uiImage.id}"
                 }
                 // Remove everything what is owned by root
-                testImage.inside("-u root:root" +
-                        " -v ${env.WORKSPACE}/reports:/var/lib/qa_reports" +
-                        "--entrypoint=/bin/bash") {
-                    sh("rm -rf /var/lib/qa_reports/* /${env.WORKSPACE}/cockroach_data")
+                testImage.inside(testImageOptions) {
+                    sh("rm -rf /var/lib/qa_reports/* ${env.WORKSPACE}/${apiProject}/cockroach_data")
                 }
             }
         }