def add_lts_image(glance_client=None, image_name=None, release=None, properties=None): """Add an Ubuntu LTS image to the current deployment. :param glance: Authenticated glanceclient :type glance: glanceclient.Client :param image_name: Label for the image in glance :type image_name: str :param release: Name of ubuntu release. :type release: str :param properties: Custom image properties :type properties: dict """ deploy_ctxt = deployment_env.get_deployment_context() image_arch = deploy_ctxt.get('TEST_IMAGE_ARCH', 'amd64') arch_image_properties = { 'arm64': { 'hw_firmware_type': 'uefi' }, 'ppc64el': { 'architecture': 'ppc64' } } properties = properties or arch_image_properties.get(image_arch) logging.info("Image architecture set to {}".format(image_arch)) image_name = image_name or LTS_IMAGE_NAME release = release or LTS_RELEASE image_url = openstack_utils.find_ubuntu_image(release=release, arch=image_arch) add_image(image_url, glance_client=glance_client, image_name=image_name, properties=properties)
def deploy(bundle, model, wait=True, model_ctxt=None, force=False): """Run all steps to complete deployment. :param bundle: Path to bundle file :type bundle: str :param model: Name of model to deploy bundle in :type model: str :param wait: Whether to wait until deployment completes :type wait: bool :param model_ctxt: Additional context to be used when rendering bundle templates. :type model_ctxt: {} :param force: Pass the force parameter if True :type force: Boolean """ run_report.register_event_start('Deploy Bundle') deploy_bundle(bundle, model, model_ctxt=model_ctxt, force=force) run_report.register_event_finish('Deploy Bundle') if wait: run_report.register_event_start('Wait for Deployment') test_config = utils.get_charm_config() logging.info("Waiting for environment to settle") zaza.model.set_juju_model(model) deploy_ctxt = deployment_env.get_deployment_context() timeout = int(deploy_ctxt.get('TEST_DEPLOY_TIMEOUT', '3600')) logging.info( "Timeout for deployment to settle set to: {}".format(timeout)) zaza.model.wait_for_application_states(model, test_config.get( 'target_deploy_status', {}), timeout=timeout) run_report.register_event_finish('Wait for Deployment')
def get_template_overlay_context(): """Combine contexts which can be used for overlay template rendering. :returns: Context for template rendering :rtype: dict """ context = {} contexts = [ deployment_env.get_deployment_context(), ] try: contexts.append(get_charm_config_context()) except KeyError: pass for c in contexts: context.update(c) return context
def add_environment_var_config(ctxt, services): """Add environment variable config to context. :param ctxt: Context dictionary :type ctxt: dict :returns: None :rtype: None """ deploy_env = deployment_env.get_deployment_context() for svc, env_vars in SETUP_ENV_VARS.items(): if svc in services: for var in env_vars: value = deploy_env.get(var) if value: ctxt[var.lower()] = value else: raise ValueError( ("Environment variables {} must all be set to run this" " test").format(', '.join(env_vars)))
def test_get_deployment_context(self): self.patch_object(deployment_env.os, 'environ') self.patch_object(deployment_env, 'get_setup_file_contents', return_value={ 'runtime_config': { 'OS_SETTING1': 'from-file', 'OS_SETTING2': 'from-file' } }) self.environ.items.return_value = [('AMULET_OS_VIP', '10.10.0.2'), ('OS_SETTING2', 'from-env'), ('OS_VIP04', '10.10.0.2'), ('ZAZA_TEMPLATE_VIP00', '20.3.4.5'), ('PATH', 'aa')] self.assertEqual( deployment_env.get_deployment_context(), { 'OS_VIP04': '10.10.0.2', 'AMULET_OS_VIP': '10.10.0.2', 'OS_SETTING1': 'from-file', 'OS_SETTING2': 'from-env' })