def configure_cinder_backup(): """Configure cinder-backup-swift-proxy.""" keystone_ip = zaza_model.get_app_ips( 'swift-keystone')[0] swift_ip = zaza_model.get_app_ips( 'swift-proxy')[0] auth_ver = (zaza_model.get_application_config('swift-keystone') .get('preferred-api-version').get('value')) if auth_ver == 2: auth_url = 'http://{}:5000/v2.0'.format(keystone_ip) endpoint_url = 'http://{}:8080/v1/AUTH_'.format(swift_ip) else: auth_url = 'http://{}:5000/v3'.format(keystone_ip) endpoint_url = 'http://{}:8080/v1/AUTH'.format(swift_ip) cinder_backup_swift_proxy_conf = { 'endpoint-url': endpoint_url, 'auth-url': auth_url } juju_service = 'cinder-backup-swift-proxy' zaza_model.set_application_config(juju_service, cinder_backup_swift_proxy_conf) zaza_model.wait_for_agent_status() zaza_model.wait_for_application_states() _singleton = zaza.openstack.charm_tests.test_utils.OpenStackBaseTest() _singleton.setUpClass() with _singleton.config_change(cinder_backup_swift_proxy_conf, cinder_backup_swift_proxy_conf): # wait for configuration to be applied then return pass
def _skipIfNotHA_inner_2(*args, **kwargs): ips = model.get_app_ips(service_name) if len(ips) > 1: return f(*args, **kwargs) else: logging.warn("Skipping HA test for non-ha service {}".format( service_name))
def nfs_setup(): """Run setup for testing Trilio. Setup for testing Trilio is currently part of functional tests. """ logging.info("Configuring NFS Server") nfs_server_ip = zaza_model.get_app_ips("nfs-server-test-fixture")[0] trilio_wlm_unit = zaza_model.get_first_unit_name("trilio-wlm") nfs_shares_conf = {"nfs-shares": "{}:/srv/testing".format(nfs_server_ip)} logging.info("NFS share config: {}".format(nfs_shares_conf)) _trilio_services = ["trilio-wlm", "trilio-data-mover"] conf_changed = False for juju_service in _trilio_services: app_config = zaza_model.get_application_config(juju_service) if app_config["nfs-shares"] != nfs_shares_conf["nfs-shares"]: logging.info("Updating nfs-shares config option") zaza_model.set_application_config(juju_service, nfs_shares_conf) conf_changed = True if conf_changed: zaza_model.wait_for_agent_status() # NOTE(jamespage): wlm-api service must be running in order # to execute the setup actions zaza_model.block_until_service_status( unit_name=trilio_wlm_unit, services=["wlm-api"], target_status="active", )
def setup_ceph_proxy(): """ Configure ceph proxy with ceph metadata. Fetches admin_keyring and FSID from ceph-mon and uses those to configure ceph-proxy. """ raw_admin_keyring = model.run_on_leader( "ceph-mon", 'cat /etc/ceph/ceph.client.admin.keyring')["Stdout"] admin_keyring = [ line for line in raw_admin_keyring.split("\n") if "key" in line ][0].split(' = ')[-1].rstrip() fsid = model.run_on_leader("ceph-mon", "leader-get fsid")["Stdout"] cluster_ips = model.get_app_ips("ceph-mon") proxy_config = { 'auth-supported': 'cephx', 'admin-key': admin_keyring, 'fsid': fsid, 'monitor-hosts': ' '.join(cluster_ips) } logging.debug('Config: {}'.format(proxy_config)) model.set_application_config("ceph-proxy", proxy_config)
def basic_setup(): """Run setup for testing Trilio. Setup for testing Trilio is currently part of functional tests. """ logging.info("Configuring NFS Server") nfs_server_ip = zaza_model.get_app_ips("nfs-server-test-fixture")[0] trilio_wlm_unit = zaza_model.get_first_unit_name("trilio-wlm") nfs_shares_conf = {"nfs-shares": "{}:/srv/testing".format(nfs_server_ip)} _trilio_services = ["trilio-wlm", "trilio-data-mover"] conf_changed = False for juju_service in _trilio_services: app_config = zaza_model.get_application_config(juju_service) if app_config["nfs-shares"] != nfs_shares_conf["nfs-shares"]: zaza_model.set_application_config(juju_service, nfs_shares_conf) conf_changed = True if conf_changed: zaza_model.wait_for_agent_status() # NOTE(jamespage): wlm-api service must be running in order # to execute the setup actions zaza_model.block_until_service_status( unit_name=trilio_wlm_unit, services=["wlm-api"], target_status="active", ) logging.info("Executing create-cloud-admin-trust") password = juju_utils.leader_get("keystone", "admin_passwd") generic_utils.assertActionRanOK( zaza_model.run_action_on_leader( "trilio-wlm", "create-cloud-admin-trust", raise_on_failure=True, action_params={"password": password}, ) ) logging.info("Executing create-license") test_license = os.environ.get("TEST_TRILIO_LICENSE") if test_license and os.path.exists(test_license): zaza_model.attach_resource("trilio-wlm", resource_name='license', resource_path=test_license) generic_utils.assertActionRanOK( zaza_model.run_action_on_leader( "trilio-wlm", "create-license", raise_on_failure=True ) ) else: logging.error("Unable to find Trilio License file")
def setUpClass(cls): """Run setup for tests.""" cls.model_name = model.get_juju_model() cls.application_name = "nrpe" cls.lead_unit_name = model.get_lead_unit_name( cls.application_name, model_name=cls.model_name) cls.units = model.get_units(cls.application_name, model_name=cls.model_name) cls.nrpe_ip = model.get_app_ips(cls.application_name)[0]
def configure_cinder_backup(): """Configure cinder-backup-swift.""" keystone_ip = zaza_model.get_app_ips('swift-keystone')[0] swift_ip = zaza_model.get_app_ips('swift-proxy')[0] auth_ver = (zaza_model.get_application_config('swift-keystone').get( 'preferred-api-version').get('value')) if auth_ver == 2: auth_url = 'http://{}:5000/v2.0'.format(keystone_ip) endpoint_url = 'http://{}:8080/v1/AUTH_'.format(swift_ip) else: auth_url = 'http://{}:5000/v3'.format(keystone_ip) endpoint_url = 'http://{}:8080/v1/AUTH'.format(swift_ip) cinder_backup_swift_conf = { 'endpoint-url': endpoint_url, 'auth-url': auth_url } juju_service = 'cinder-backup-swift' zaza_model.set_application_config(juju_service, cinder_backup_swift_conf) zaza_model.wait_for_application_states() time.sleep(300)
def test_04_check_nagios_ip_is_allowed(self): """Verify nagios ip is allowed in nrpe.cfg.""" nagios_ip = model.get_app_ips("nagios")[0] line = "allowed_hosts=127.0.0.1,{}/32".format(nagios_ip) cmd = "cat /etc/nagios/nrpe.cfg" result = model.run_on_unit(self.lead_unit_name, cmd) code = result.get("Code") if code != "0": logging.warning( "Unable to find nrpe config file at /etc/nagios/nrpe.cfg") raise model.CommandRunFailed(cmd, result) content = result.get("Stdout") self.assertTrue(line in content)
def setup_ceph_proxy(): raw_admin_keyring = model.run_on_leader( "ceph-mon", 'cat /etc/ceph/ceph.client.admin.keyring')["Stdout"] admin_keyring = raw_admin_keyring.split(' = ')[-1].rstrip() fsid = model.run_on_leader("ceph-mon", "leader-get fsid")["Stdout"] cluster_ips = model.get_app_ips("ceph-mon") proxy_config = { 'auth-supported': 'cephx', 'admin-key': admin_keyring, 'fsid': fsid, 'monitor-hosts': ' '.join(cluster_ips) } logging.debug('Config: {}'.format(proxy_config)) model.set_application_config("ceph-proxy", proxy_config)
def test_get_app_ips(self): self.patch_object(model, 'get_juju_model', return_value='mname') self.patch_object(model, 'get_units') self.get_units.return_value = self.units self.assertEqual(model.get_app_ips('model', 'app'), ['ip1', 'ip2'])