Source code for cfme.fixtures.multi_region

import attr
import pytest


[docs]@attr.s class ApplianceCluster(object): """ Holder for Multi-Region appliances setup. Appliance from global region is stored in global_appliance. Whereas remote region appliances are stored in remote_appliances property. """ global_appliance = attr.ib(default=None) remote_appliances = attr.ib(default=[])
[docs]@pytest.fixture(scope='module') def multi_region_cluster(temp_appliances_unconfig_modscope_rhevm): # todo: make it work for all appliance types appliances = temp_appliances_unconfig_modscope_rhevm cluster = ApplianceCluster() cluster.global_appliance = appliances[0] cluster.remote_appliances = appliances[1:] yield cluster
[docs]@pytest.fixture(scope='module') def setup_global_appliance(multi_region_cluster, app_creds_modscope): global_app = multi_region_cluster.global_appliance app_params = dict(region=99, dbhostname='localhost', username=app_creds_modscope['username'], password=app_creds_modscope['password'], dbname='vmdb_production', dbdisk=global_app.unpartitioned_disks[0]) global_app.appliance_console_cli.configure_appliance_internal(**app_params) global_app.evmserverd.wait_for_running() global_app.wait_for_web_ui()
[docs]@pytest.fixture(scope='module') def setup_remote_appliances(multi_region_cluster, setup_global_appliance, app_creds_modscope): remote_apps = multi_region_cluster.remote_appliances gip = multi_region_cluster.global_appliance.hostname for num, app in enumerate(remote_apps): region_n = str((num + 1) * 10) app_params = dict(region=region_n, dbhostname='localhost', username=app_creds_modscope['username'], password=app_creds_modscope['password'], dbname='vmdb_production', dbdisk=app.unpartitioned_disks[0], fetch_key=gip, sshlogin=app_creds_modscope['sshlogin'], sshpass=app_creds_modscope['sshpass']) app.appliance_console_cli.configure_appliance_internal_fetch_key(**app_params) app.evmserverd.wait_for_running() app.wait_for_web_ui() app.set_pglogical_replication(replication_type=':remote')
[docs]@pytest.fixture(scope='module') def setup_multi_region_cluster(multi_region_cluster, setup_remote_appliances, setup_global_appliance): global_app = multi_region_cluster.global_appliance global_app.set_pglogical_replication(replication_type=':global') for app in multi_region_cluster.remote_appliances: global_app.add_pglogical_replication_subscription(app.hostname)
[docs]@pytest.fixture(scope='function') def setup_remote_provider(multi_region_cluster, setup_multi_region_cluster, provider): with multi_region_cluster.remote_appliances[0]: provider.create_rest() yield provider provider.delete_rest()
[docs]@pytest.fixture(scope='function') def activate_global_appliance(multi_region_cluster): global_appliance = multi_region_cluster.global_appliance with global_appliance: yield