Revert "Rewrite managing of virtualenvs"

This reverts commit 1dcc7b6852ca1d6e2b72cf2e8d4a7f7bf7e2602d.

Reason for revert: merged by mistake

Change-Id: I6ec48448d9f4f8c3a81a508c246b0848bd5e12b0
diff --git a/jobs/pipelines/deploy-cicd-and-run-tests.groovy b/jobs/pipelines/deploy-cicd-and-run-tests.groovy
index 5106d80..8156eed 100644
--- a/jobs/pipelines/deploy-cicd-and-run-tests.groovy
+++ b/jobs/pipelines/deploy-cicd-and-run-tests.groovy
@@ -178,6 +178,12 @@
             stage("report results to testrail from jenkins master") {
                 common.printMsg("Running on: " + node_with_reports, "blue")
                 common.printMsg("Running on: " + env.NODE_NAME, "blue")
+                shared.verbose_sh("""\
+                       [ -d /home/jenkins/venv_testrail_reporter ] || virtualenv --python=python3.7 /home/jenkins/venv_testrail_reporter""", true, false, true)
+                sshagent(credentials: ['maintenance-team-ssh']) {
+                    shared.run_cmd("""\
+                            . /home/jenkins/venv_testrail_reporter/bin/activate; pip install git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter -U""")
+                }
                 shared.swarm_testrail_report(steps, env.NODE_NAME)
             }
             stage("Store TestRail reports to job description") {
diff --git a/jobs/pipelines/run-test-scenarios.groovy b/jobs/pipelines/run-test-scenarios.groovy
index b83dcec..fc45ad8 100644
--- a/jobs/pipelines/run-test-scenarios.groovy
+++ b/jobs/pipelines/run-test-scenarios.groovy
@@ -65,6 +65,12 @@
                 stage("report results to testrail from jenkins master") {
                     if ("${env.REPORT_TO_TESTRAIL}" != "false") {
                         common.infoMsg("Running on: " + env.PARENT_NODE_NAME, "blue")
+                        shared.verbose_sh("""\
+                               [ -d /home/jenkins/venv_testrail_reporter ] || virtualenv --python=python3.7 /home/jenkins/venv_testrail_reporter""", true, false, true)
+                        sshagent(credentials: ['maintenance-team-ssh']) {
+                            shared.run_cmd("""\
+                                    . /home/jenkins/venv_testrail_reporter/bin/activate; pip install git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter -U""")
+                        }
                         shared.swarm_testrail_report(steps, env.PARENT_NODE_NAME)
                     } else {
                         common.infoMsg("REPORT_TO_TESTRAIL is set to FALSE. Skipped this step ")
diff --git a/jobs/pipelines/swarm-testrail-report.groovy b/jobs/pipelines/swarm-testrail-report.groovy
index f9820f8..1167978 100644
--- a/jobs/pipelines/swarm-testrail-report.groovy
+++ b/jobs/pipelines/swarm-testrail-report.groovy
@@ -78,6 +78,26 @@
             common.printMsg(stacklight_report_name ? "Found stacklight-pytest report: ${stacklight_report_name}" : "stacklight-pytest report not found", stacklight_report_name ? "blue" : "red")
             common.printMsg(cvp_sanity_report_name ? "Found CVP Sanity report: ${cvp_sanity_report_name}" : "CVP Sanity report not found", cvp_sanity_report_name ? "blue" : "red")
 
+            stage("Prepare/update venvs for reporter/analyzer tools"){
+                sshagent(credentials: ['maintenance-team-ssh']) {
+                    shared.run_cmd("""\
+                            . /home/jenkins/venv_testrail_reporter/bin/activate;
+                            pip install git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter -U;
+                            pip install --force-reinstall --no-deps git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter;""")
+                }
+                shared.run_cmd("""\
+                    if [ -f /home/jenkins/venv_testrail_analyzer/bin/python &&
+                        $(/home/jenkins/venv_testrail_analyzer/bin/python -V | awk -F "." '{print \$2}') -lt 6 ] ; then
+                        rm -rf /home/jenkins/venv_testrail_analyzer ;
+                    fi
+                """)
+                shared.run_cmd("""\
+                    [ -d /home/jenkins/venv_testrail_analyzer ] || virtualenv --python=python3.7 /home/jenkins/venv_testrail_analyzer ;
+                    source /home/jenkins/venv_testrail_analyzer/bin/activate;
+                    pip install git+https://review.gerrithub.io/ibumarskov/testrail-reporter@b9041b241f3364022cd0ad63510f02aab4352a6b
+                """)
+            }
+
             if (deployment_report_name) {
                 stage("Deployment report") {
                     testSuiteName = "[MCP] Integration automation"
diff --git a/src/com/mirantis/system_qa/SharedPipeline.groovy b/src/com/mirantis/system_qa/SharedPipeline.groovy
index c937fbe..8390c1b 100644
--- a/src/com/mirantis/system_qa/SharedPipeline.groovy
+++ b/src/com/mirantis/system_qa/SharedPipeline.groovy
@@ -686,42 +686,8 @@
     writeFile(file: filename, text: script, encoding: "UTF-8")
 }
 
-
-def withVirtualEnv(name, pythonVersion, installRepo = "", command = "") {
-    /// name - str, name of virtualenv, name of folder which will be located in /home/jenkins
-    /// pythonVersion - str, version of python defined through the ShiningPanda settings in the Jenkins (Jenkins ->
-    //Manage Jenkins -> Global Tool Configuration -> Python Installations)
-    /// installRepo - repo with tool which should be installed in that virtualenv
-    def homeDir = "/home/jenkins"
-    venvPath = "${homeDir}/${name}"
-    // check if venv exists
-
-    withPythonEnv("${pythonVersion}") {
-        if (!fileExists(venvPath)) {
-            sh """
-                set -x;
-                virtualenv ${venvPath};
-                source ${venvPath}/bin/activate;
-                pip install -U ${installRepo};
-            """
-        }
-        sh """
-        set -x;
-        source ${venvPath}/bin/activate;
-        ${command};
-        deactivate;
-
-        """
-    }
-    // if no - create folder, install specific python, install repo
-
-    // if yes - launch command
-
-
-}
-
-
 def upload_results_to_testrail(report_name, testPlanName, testSuiteName, methodname, testrail_name_template, reporter_extra_options=[]) {
+  def venvPath = '/home/jenkins/venv_testrail_reporter'
   def testPlanDesc = env.LAB_CONFIG_NAME
   def testrailURL = "https://mirantis.testrail.com"
   def testrailProject = "Mirantis Cloud Platform"
@@ -747,6 +713,8 @@
   ] + reporter_extra_options
 
   def script = """
+    . ${venvPath}/bin/activate
+    set -ex
     report ${reporterOptions.join(' ')} ${report_name}
   """
 
@@ -758,26 +726,17 @@
              passwordVariable: 'TESTRAIL_PASSWORD',
              usernameVariable: 'TESTRAIL_USER']
   ]) {
-
-        def ret = [:]
-        ret.stdout = ''
-        ret.exception = ''
-        try {
-            sshagent(credentials: ['maintenance-team-ssh']) {
-                withVirtualEnv(
-                    name: "venv_testrail_reporter",
-                    pythonVersion: "python3.7",
-                    installRepo: "git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter",
-                    command: script
-                )}
-//             ret.stdout = run_cmd_stdout(script)
-        } catch (Exception ex) {
-            ret.exception = ("""\
-    ##### Report to '${testSuiteName}' failed: #####\n""" + ex.message + "\n\n")
-        }
-
-        return ret
-      }
+    def ret = [:]
+    ret.stdout = ''
+    ret.exception = ''
+    try {
+        ret.stdout = run_cmd_stdout(script)
+    } catch (Exception ex) {
+        ret.exception = ("""\
+##### Report to '${testSuiteName}' failed: #####\n""" + ex.message + "\n\n")
+    }
+    return ret
+  }
 }
 
 
@@ -791,13 +750,16 @@
 }
 
 def mark_test_results(testPlanName, testSuiteName) {
+    def venvPath = '/home/jenkins/venv_testrail_analyzer'
     def testrailURL = "https://mirantis.testrail.com"
     def testrailProject = "Mirantis Cloud Platform"
     def configName = env.LAB_CONFIG_NAME
     def testRunName = "${configName} <${testSuiteName}>"
 
     def script = """
-    export TESTRAIL_URL=${testrailURL};
+    . ${venvPath}/bin/activate
+    set -ex
+    export TESTRAIL_URL=${testrailURL}
     testrail-reporter analyze -p "${testrailProject}" -t "${testPlanName}" -r "${testRunName}" checklist.yaml
     """
 
@@ -807,17 +769,13 @@
              [$class          : 'UsernamePasswordMultiBinding',
              credentialsId   : testrail_cred_id,
              passwordVariable: 'TESTRAIL_PASSWORD',
-             usernameVariable: 'TESTRAIL_USER'
+             usernameVariable: 'TESTRAIL_USER']
   ]) {
     def ret = [:]
     ret.stdout = ''
     ret.exception = ''
     try {
-        withVirtualEnv( name: "venv_testrail_analyzer",
-                        pythonVersion: "python3.7",
-                        installRepo: "git+https://review.gerrithub.io/ibumarskov/testrail-reporter",
-                        command: script)
-//         ret.stdout = run_cmd_stdout(script)
+        ret.stdout = run_cmd_stdout(script)
     } catch (Exception ex) {
         ret.exception = ("""\
 ##### Report to '${testRunName}' failed: #####\n""" + ex.message + "\n\n")
@@ -825,7 +783,6 @@
     return ret
   }
 }
-
 def reboot_hardware_nodes(creds_name) {
     bm_ips_file = readFile("tcp_tests/templates/${creds_name}")
     bm_ips = bm_ips_file.split("\n")