def _validate_broker_config(broker_dict, msg_update_callback=NullPrinter(), logger_debug=NULL_LOGGER): """Ensure that 'broker' section of config is correct. Checks that 'broker' section of config has correct keys and value types. Also checks that 'default_broker' property is a valid template. :param dict broker_dict: 'broker' section of config file as a dict. :param utils.ConsoleMessagePrinter msg_update_callback: Callback object. :raises KeyError: if @broker_dict has missing or extra properties. :raises TypeError: if the value type for a @broker_dict property is incorrect. :raises ValueError: if 'ip_allocation_mode' is not 'dhcp' or 'pool'. Or if remote_template_cookbook_url is invalid. """ check_keys_and_value_types(broker_dict, SAMPLE_BROKER_CONFIG['broker'], location="config file 'broker' section", msg_update_callback=msg_update_callback) valid_ip_allocation_modes = ['dhcp', 'pool'] if broker_dict['ip_allocation_mode'] not in valid_ip_allocation_modes: raise ValueError(f"IP allocation mode is " f"'{broker_dict['ip_allocation_mode']}' when it " f"should be either 'dhcp' or 'pool'") rtm = RemoteTemplateManager( remote_template_cookbook_url=broker_dict[ 'remote_template_cookbook_url'], # noqa: E501 logger=logger_debug) remote_template_cookbook = rtm.get_remote_template_cookbook() if not remote_template_cookbook: raise Exception("Remote template cookbook is invalid.")
def init_environment(config_filepath=BASE_CONFIG_FILEPATH): """Set up module variables according to config dict. :param str config_filepath: """ global AMQP_USERNAME, AMQP_PASSWORD, CLIENT, ORG_HREF, VDC_HREF, \ CATALOG_NAME, TEARDOWN_INSTALLATION, TEARDOWN_CLUSTERS, \ TEMPLATE_DEFINITIONS, TEST_ALL_TEMPLATES, SYS_ADMIN_LOGIN_CMD, \ ORG_ADMIN_LOGIN_CMD, K8_AUTHOR_LOGIN_CMD, USERNAME_TO_LOGIN_CMD, \ USERNAME_TO_CLUSTER_NAME, TEST_ORG_HREF, TEST_VDC_HREF config = testutils.yaml_to_dict(config_filepath) rtm = \ RemoteTemplateManager(config['broker']['remote_template_cookbook_url']) template_cookbook = rtm.get_remote_template_cookbook() TEMPLATE_DEFINITIONS = template_cookbook['templates'] rtm.download_all_template_scripts(force_overwrite=True) init_test_vars(config.get('test')) CLIENT = Client(config['vcd']['host'], api_version=config['vcd']['api_version'], verify_ssl_certs=config['vcd']['verify']) credentials = BasicLoginCredentials(config['vcd']['username'], SYSTEM_ORG_NAME, config['vcd']['password']) CLIENT.set_credentials(credentials) CATALOG_NAME = config['broker']['catalog'] AMQP_USERNAME = config['amqp']['username'] AMQP_PASSWORD = config['amqp']['password'] SYS_ADMIN_LOGIN_CMD = f"login {config['vcd']['host']} system " \ f"{config['vcd']['username']} " \ f"-iwp {config['vcd']['password']} " \ f"-V {config['vcd']['api_version']}" ORG_ADMIN_LOGIN_CMD = f"login {config['vcd']['host']} " \ f"{TEST_ORG}" \ f" {ORG_ADMIN_NAME} -iwp {ORG_ADMIN_PASSWORD} " \ f"-V {config['vcd']['api_version']}" K8_AUTHOR_LOGIN_CMD = f"login {config['vcd']['host']} " \ f"{TEST_ORG} " \ f"{K8_AUTHOR_NAME} -iwp {K8_AUTHOR_PASSWORD}" \ f" -V {config['vcd']['api_version']}" USERNAME_TO_LOGIN_CMD = { 'sys_admin': SYS_ADMIN_LOGIN_CMD, 'org_admin': ORG_ADMIN_LOGIN_CMD, 'k8_author': K8_AUTHOR_LOGIN_CMD } USERNAME_TO_CLUSTER_NAME = { 'sys_admin': SYS_ADMIN_TEST_CLUSTER_NAME, 'org_admin': ORG_ADMIN_TEST_CLUSTER_NAME, 'k8_author': K8_AUTHOR_TEST_CLUSTER_NAME } # hrefs for Org and VDC that hosts the catalog org = pyvcloud_utils.get_org(CLIENT, org_name=config['broker']['org']) vdc = pyvcloud_utils.get_vdc(CLIENT, vdc_name=config['broker']['vdc'], org=org) ORG_HREF = org.href VDC_HREF = vdc.href # hrefs for Org and VDC that tests cluster operations test_org = pyvcloud_utils.get_org(CLIENT, org_name=TEST_ORG) test_vdc = pyvcloud_utils.get_vdc(CLIENT, vdc_name=TEST_VDC, org=test_org) TEST_ORG_HREF = test_org.href TEST_VDC_HREF = test_vdc.href create_k8_author_role(config['vcd'])