Add scenario which updates DriveTrain to the minor version

Change-Id: Ic03c059ac4d765c92b768bb496034b8d5074f254
diff --git a/tcp_tests/tests/system/test_update.py b/tcp_tests/tests/system/test_update.py
new file mode 100644
index 0000000..3db5a74
--- /dev/null
+++ b/tcp_tests/tests/system/test_update.py
@@ -0,0 +1,139 @@
+import pytest
+
+from tcp_tests import logger
+from tcp_tests import settings
+from tcp_tests.utils import run_jenkins_job
+from tcp_tests.utils import get_jenkins_job_stages
+
+LOG = logger.logger
+
+
+class TestUpdateMcpCluster(object):
+    """
+    Following the steps in
+    https://docs.mirantis.com/mcp/q4-18/mcp-operations-guide/update-upgrade/minor-update.html#minor-update
+    """
+
+    @pytest.mark.grab_versions
+    @pytest.mark.parametrize("_", [settings.ENV_NAME])
+    @pytest.mark.run_mcp_update
+    def test_update_drivetrain(self, salt_actions, show_step, _):
+        """Updating DriveTrain component to release/proposed/2019.2.0 version
+
+        Scenario:
+            1. Get CICD Jenkins access credentials from salt
+            2. Run job git-mirror-downstream-mk-pipelines
+            3. Run job git-mirror-downstream-pipeline-library
+            4. If jobs are passed then start 'Deploy - upgrade MCP Drivetrain'
+
+        Duration: ~35 min
+        """
+        salt = salt_actions
+        jenkins_creds = salt.get_cluster_jenkins_creds()
+
+        # #################### Login Jenkins on cid01 node ###################
+        show_step(1)
+
+        jenkins_url = jenkins_creds.get('url')
+        jenkins_user = jenkins_creds.get('user')
+        jenkins_pass = jenkins_creds.get('pass')
+        jenkins_start_timeout = 60
+        jenkins_build_timeout = 1800
+
+        # FIXME: workaround for PROD-32751
+        salt.cmd_run("cfg01*", "cd /srv/salt/reclass; git add -u && \
+                        git commit --allow-empty -m 'Cluster model update'")
+
+        # ################### Downstream mk-pipelines #########################
+        show_step(2)
+        job_name = 'git-mirror-downstream-mk-pipelines'
+        job_parameters = {
+            'BRANCHES': 'release/proposed/2019.2.0'
+        }
+        update_pipelines = run_jenkins_job.run_job(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            start_timeout=jenkins_start_timeout,
+            build_timeout=jenkins_build_timeout,
+            verbose=False,
+            job_name=job_name,
+            job_parameters=job_parameters)
+
+        (description, stages) = get_jenkins_job_stages.get_deployment_result(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            job_name=job_name,
+            build_number='lastBuild')
+
+        LOG.info(description)
+        LOG.info('\n'.join(stages))
+
+        assert update_pipelines == 'SUCCESS', "{0}\n{1}".format(
+            description, '\n'.join(stages))
+
+        # ################### Downstream pipeline-library ####################
+        show_step(3)
+        job_name = 'git-mirror-downstream-pipeline-library'
+        job_parameters = {
+            'BRANCHES': 'release/proposed/2019.2.0'
+        }
+        update_pipeline_library = run_jenkins_job.run_job(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            start_timeout=jenkins_start_timeout,
+            build_timeout=jenkins_build_timeout,
+            verbose=False,
+            job_name=job_name,
+            job_parameters=job_parameters)
+
+        (description, stages) = get_jenkins_job_stages.get_deployment_result(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            job_name=job_name,
+            build_number='lastBuild')
+
+        LOG.info(description)
+        LOG.info('\n'.join(stages))
+
+        assert update_pipeline_library == 'SUCCESS', "{0}\n{1}".format(
+            description, '\n'.join(stages))
+
+        # ################### Start 'Deploy - upgrade MCP Drivetrain' job #####
+        show_step(4)
+
+        jenkins_build_timeout = 3600
+        job_name = 'upgrade-mcp-release'
+        job_parameters = {
+            'MK_PIPELINES_REFSPEC': 'release/proposed/2019.2.0',
+            'TARGET_MCP_VERSION': '2019.2.0'
+        }
+        update_drivetrain = run_jenkins_job.run_job(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            start_timeout=jenkins_start_timeout,
+            build_timeout=jenkins_build_timeout,
+            verbose=False,
+            job_name=job_name,
+            job_parameters=job_parameters)
+
+        (description, stages) = get_jenkins_job_stages.get_deployment_result(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            job_name=job_name,
+            build_number='lastBuild')
+
+        LOG.info(description)
+        LOG.info('\n'.join(stages))
+
+        assert update_drivetrain == 'SUCCESS', "{0}\n{1}".format(
+            description, '\n'.join(stages))
+
+    @pytest.mark.run_mcp_update
+    def test_update_gluster(self):
+        pass