Exemple #1
0
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)
Exemple #2
0
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')
Exemple #3
0
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
Exemple #4
0
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)))
Exemple #5
0
 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'
         })