Пример #1
0
def add_glance(api, provider, glance_server):
    provider_dict = cfme_data['template_upload'][glance_server]
    creds_key = provider_dict['credentials']

    def is_glance_added(api, name):
        for domain in api.openstackimageproviders.list():
            if domain.get_name() == glance_server:
                return True
        else:
            return False

    # Get the list of OpenStack image providers (a.k.a. Glance providers)
    # that match the name that we want to use:
    providers = [
        domain for domain in api.openstackimageproviders.list()
        if domain.get_name() == glance_server
    ]

    try:
        # If there is no such provider, then add it:
        if len(providers) == 0:
            glance_sd = api.openstackimageproviders.add(
                params.OpenStackImageProvider(
                    name=glance_server,
                    description=glance_server,
                    url=provider_dict['url'],
                    requires_authentication=True,
                    authentication_url=provider_dict['auth_url'],
                    username=credentials[creds_key]['username'],
                    password=credentials[creds_key]['password'],
                    tenant_name=credentials[creds_key]['tenant']))
        else:
            logger.info(
                "RHEVM:%r Warning: Found a Glance provider with this name (%r).",
                provider, glance_server)
            logger.info("RHEVM:%r Skipping this step, attempting to continue",
                        provider)
            return

        wait_for(is_glance_added, [api, glance_server],
                 fail_condition=False,
                 delay=5,
                 num_sec=240)
        if not api.openstackimageproviders.get(name=glance_server):
            logger.error("RHV:%s Glance provider %s could not be attached",
                         provider, glance_server)
            sys.exit(127)
        logger.info('RHV:%s Attached Glance provider %s', provider,
                    glance_sd.get_name())
    except Exception:
        logger.exception("RHV:%r add_glance failed:", provider)
Пример #2
0
def add_glance_3(api):
    target_server = params.OpenStackImageProvider(name=SD_GLANCE_NAME,
                                                  url=GLANCE_SERVER_URL)
    try:
        provider = api.openstackimageproviders.add(target_server)
        glance = []

        def get():
            instance = api.openstackimageproviders.get(id=provider.get_id())
            if instance:
                glance.append(instance)
                return True
            else:
                return False

        testlib.assert_true_within_short(
            func=get, allowed_exceptions=[errors.RequestError])
    except (AssertionError, errors.RequestError):
        # RequestError if add method was failed.
        # AssertionError if add method succeed but we couldn't verify that glance was actually added
        return None

    return glance.pop()