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)
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()