Add extra chack to galera restore test

* add restore params to openstack/database/init.yml
* add the upgrade pipeline to DriveTrain
Related: PROD-33920
Change-Id: I00c037bf0d4b17a60e5697dc7bf5b02596769d54

Change-Id: I4ecd684ad4a5e89884d12f760a12278e7ec5bd60
diff --git a/tcp_tests/tests/system/test_backup_restore_galera.py b/tcp_tests/tests/system/test_backup_restore_galera.py
index ee4043b..fd250a5 100644
--- a/tcp_tests/tests/system/test_backup_restore_galera.py
+++ b/tcp_tests/tests/system/test_backup_restore_galera.py
@@ -1,5 +1,6 @@
 import pytest
 
+from devops.helpers.proc_enums import ExitCodes
 from tcp_tests import logger
 from tcp_tests import settings
 
@@ -10,26 +11,89 @@
     """
     Created by https://mirantis.jira.com/browse/PROD-32674
     """
+    @pytest.fixture()
+    def handle_restore_params(self, reclass_actions):
+        reclass_actions.add_key(
+            'parameters.xtrabackup.client.restore_full_latest',
+            '1',
+            'cluster/*/openstack/database/init.yml')
+        reclass_actions.add_bool_key(
+            'parameters.xtrabackup.client.enabled',
+            'True',
+            'cluster/*/openstack/database/init.yml')
+        reclass_actions.add_key(
+            'parameters.xtrabackup.client.restore_from',
+            'remote',
+            'cluster/*/openstack/database/init.yml')
+        yield
+        reclass_actions.delete_key(
+            'parameters.xtrabackup.client.restore_full_latest',
+            'cluster/*/openstack/database/init.yml')
+        reclass_actions.delete_key(
+            'parameters.xtrabackup.client.enabled',
+            'cluster/*/openstack/database/init.yml')
+        reclass_actions.delete_key(
+            'parameters.xtrabackup.client.restore_from',
+            'cluster/*/openstack/database/init.yml')
+
+    def _get_cfg_fqn(self, salt):
+        salt_master = salt.local("I@salt:master", "network.get_fqdn")
+        return salt_master['return'][0].keys()[0]
+
+    def _perform_action_on_flavor(self, underlay_actions,
+                                  name, action, cfg_node):
+        xxx = underlay_actions.check_call(
+            'source /root/keystonercv3 && '
+            'openstack flavor {} {}'.format(action, name),
+            node_name=cfg_node)
+        LOG.info(xxx)
+
+    def create_flavor(self, underlay_actions, name, cfg_node):
+        self._perform_action_on_flavor(underlay_actions, name,
+                                       'create', cfg_node)
+
+    def delete_flavor(self, underlay_actions, name, cfg_node):
+        self._perform_action_on_flavor(underlay_actions, name,
+                                       'delete', cfg_node)
+
+    def is_flavor_restored(self, underlay_actions, name, cfg_node):
+        get_by_name = underlay_actions.check_call(
+            'source /root/keystonercv3 && ' +
+            'openstack flavor show {}'.format(name),
+            node_name=cfg_node,
+            raise_on_err=False,
+            expected=[ExitCodes.EX_OK, ExitCodes.EX_ERROR]
+        )
+        return len(get_by_name['stderr']) == 0
 
     @pytest.mark.grab_versions
     @pytest.mark.parametrize("_", [settings.ENV_NAME])
     @pytest.mark.run_galera_backup_restore
-    def test_backup_restore_galera(self, drivetrain_actions,
-                                   show_step, _):
+    def test_backup_restore_galera(self, salt_actions, drivetrain_actions,
+                                   show_step, underlay_actions,
+                                   handle_restore_params,  _):
         """Execute backup/restore for galera
 
         Scenario:
-            1. Run job galera_backup_database
-            2. Run tests with cvp-sanity job
-            3. Run tests with cvp-tempest job
-            4. Run job galera_verify_restore
-            5. If jobs are passed then start tests with cvp-sanity job
-            6. Run tests with cvp-tempest job
+            1. Create flavor to be backuped
+            2. Run job galera_backup_database
+            3. Run tests with cvp-sanity job
+            4. Run tests with cvp-tempest job
+            5. Create flavor not to be restored
+            6. Run job galera_verify_restore
+            7. If jobs are passed then start tests with cvp-sanity job
+            8. Run tests with cvp-tempest job
         """
         dt = drivetrain_actions
+        salt = salt_actions
 
-        # ################## Run backup job #########################
         show_step(1)
+        cfg_node = self._get_cfg_fqn(salt)
+        fixture_flavor1 = 'test1'
+        fixture_flavor2 = 'test2'
+        self.create_flavor(underlay_actions, fixture_flavor1, cfg_node)
+        # ################## Run backup job #########################
+        show_step(2)
         job_name = 'galera_backup_database'
         job_parameters = {
             'ASK_CONFIRMATION': False
@@ -41,7 +105,7 @@
         assert backup_galera_pipeline == 'SUCCESS'
 
         # ######################## Run CPV ###########################
-        show_step(2)
+        show_step(3)
         job_name = 'cvp-sanity'
         job_cvp_sanity_parameters = {
             'EXTRA_PARAMS': '''
@@ -65,7 +129,7 @@
         assert run_cvp_sanity == 'SUCCESS'
 
         # ######################## Run Tempest ###########################
-        show_step(3)
+        show_step(4)
         job_name = 'cvp-tempest'
         job_parameters = {
              'TEMPEST_ENDPOINT_TYPE': 'internalURL'
@@ -75,8 +139,10 @@
             job_parameters=job_parameters)
 
         assert run_cvp_tempest == 'SUCCESS'
+        show_step(5)
+        self.create_flavor(underlay_actions, fixture_flavor2, cfg_node)
         # ######################## Run Restore ###########################
-        show_step(4)
+        show_step(6)
         job_name = 'galera_verify_restore'
         job_parameters = {
              'RESTORE_TYPE': 'ONLY_RESTORE',
@@ -87,8 +153,16 @@
             job_parameters=job_parameters)
 
         assert run_galera_verify_restore == 'SUCCESS'
+
+        assert self.is_flavor_restored(underlay_actions,
+                                       fixture_flavor1,
+                                       cfg_node)
+        assert self.is_flavor_restored(underlay_actions,
+                                       fixture_flavor2,
+                                       cfg_node) is False
         # ######################## Run CPV ###########################
-        show_step(5)
+        show_step(7)
+
         job_name = 'cvp-sanity'
         run_cvp_sanity = dt.start_job_on_cid_jenkins(
             job_name=job_name,
@@ -96,7 +170,7 @@
 
         assert run_cvp_sanity == 'SUCCESS'
         # ######################## Run Tempest ###########################
-        show_step(6)
+        show_step(8)
         job_name = 'cvp-tempest'
         job_parameters = {
              'TEMPEST_ENDPOINT_TYPE': 'internalURL'
@@ -106,3 +180,4 @@
             job_parameters=job_parameters)
 
         assert run_cvp_tempest == 'SUCCESS'
+        self.delete_flavor(underlay_actions, fixture_flavor1, cfg_node)