def _get_keystoneclient(self, username, password, tenant_name, auth_url, retries=3, ca_cert=None, insecure=False): keystone = None for i in range(retries): try: if ca_cert: keystone = KeystoneClient(username=username, password=password, tenant_name=tenant_name, auth_url=auth_url, cacert=ca_cert, insecure=insecure) else: keystone = KeystoneClient(username=username, password=password, tenant_name=tenant_name, auth_url=auth_url) break except ClientException as e: err = "Try nr {0}. Could not get keystone client, error: {1}" LOGGER.warning(err.format(i + 1, e)) time.sleep(5) if not keystone: raise return keystone
def _get_keystoneclient(username, password, tenant_name, auth_url, retries=3, ca_cert=None, insecure=False): exc_type, exc_value, exc_traceback = None, None, None for i in xrange(retries): try: if ca_cert: return KeystoneClient(username=username, password=password, tenant_name=tenant_name, auth_url=auth_url, cacert=ca_cert, insecure=insecure) else: return KeystoneClient(username=username, password=password, tenant_name=tenant_name, auth_url=auth_url) except ClientException as exc: exc_type, exc_value, exc_traceback = sys.exc_info() err = "Try nr {0}. Could not get keystone client, error: {1}" logger.warning(err.format(i + 1, exc)) time.sleep(5) if exc_type and exc_traceback and exc_value: six.reraise(exc_type, exc_value, exc_traceback) raise RuntimeError()
def get_keystone(self): """Returns a Keystone.Client instance.""" if self.region is None: return KeystoneClient(username=self.username, password=self.password, tenant_name=self.tenant, auth_url=self.auth_url) else: return KeystoneClient(username=self.username, password=self.password, tenant_name=self.tenant, auth_url=self.auth_url, region_name=self.region)
def get_stats(user, passwd, tenant, url): keystone = KeystoneClient(username=user, password=passwd, tenant_name=tenant, auth_url=url) data = dict() # Define list of keys to query for keys = ('tenants', 'users', 'roles', 'services', 'endpoints') for key in keys: data["openstack.keystone.%s.count" % key] = len( keystone.__getattribute__(key).list()) tenant_list = keystone.tenants.list() for tenant in tenant_list: tenant_key = "openstack.keystone.tenants.tenants.%s.users.count" % tenant.name.replace( ' ', '') data[tenant_key] = len(keystone.tenants.list_users(tenant.id)) ########## # debug #for key in data.keys(): # print "%s = %s" % (key, data[key]) ########## return data
def get_keystone(self): """Returns a Keystone.Client instance.""" return KeystoneClient(username=self.username, password=self.password, tenant_name=self.tenant, auth_url=self.auth_url, ca_cert=self.cacert)
def get_stats(user, passwd, tenant, url): keystone = KeystoneClient(username=user, password=passwd, tenant_name=tenant, auth_url=url) # Find my uuid user_list = keystone.users.list() admin_uuid = "" for usr in user_list: if usr.name == user: admin_uuid = usr.id # Find out which tenants I have roles in tenant_list = keystone.tenants.list() my_tenants = list() for tenant in tenant_list: if keystone.users.list_roles(user=admin_uuid, tenant=tenant.id): my_tenants.append( { "name": tenant.name, "id": tenant.id } ) #prefix = "openstack.nova.cluster" prefix = "openstack.nova" # Default data structure data = dict() # Prep counters data["%s.total.count" % (prefix)] = 0 counters = ('ram', 'vcpus', 'disk', 'ephemeral') for counter in counters: data["%s.total.%s" % (prefix,counter)] = 0 # for tenant in tenant_list: for tenant in my_tenants: client = NovaClient("1.1",user,passwd,tenant['name'],url,service_type="compute") # Figure out how much ram has been allocated total for all servers server_list = client.servers.list() data["%s.total.count" % (prefix)] += len(server_list) data["%s.tenant.%s.count" % (prefix,tenant['name'])] = 0 for server in server_list: flavor = client.flavors.get(int(server.flavor["id"])) tenant_uuid = keystone.tenants.get(server.tenant_id).name data["%s.tenant.%s.count" % (prefix,tenant_uuid)] += 1 for counter in counters: data["%s.total.%s" % (prefix,counter)] += int(flavor.__getattribute__(counter)) if "%s.%s.%s" % (prefix,tenant_uuid, counter) in data: data["%s.tenant.%s.%s" % (prefix,tenant_uuid,counter)] += int(flavor.__getattribute__(counter)) else: data["%s.tenant.%s.%s" % (prefix,tenant_uuid,counter)] = int(flavor.__getattribute__(counter)) ########## # debug for key in data.keys(): print "%s = %s" % (key, data[key]) ########## return data
def _client(self) -> NeutronClient: if self._cached_client is None: keystone = KeystoneClient( auth_url=self.openstack_connector.auth_url, username=self.openstack_connector.username, password=self.openstack_connector.password, tenant_name=self.openstack_connector.tenant) neutron_endpoint = keystone.service_catalog.url_for( service_type="network", endpoint_type="publicURL") self._cached_client = NeutronClient(endpoint_url=neutron_endpoint, token=keystone.auth_token) return self._cached_client
def __init__(self, controller_ip, user='******', password='******', tenant='admin', cert=None, env=None, proxy_session=None): logger.debug('Init OpenStack clients on {0}'.format(controller_ip)) self.controller_ip = controller_ip self.username = user self.password = password self.tenant = tenant if cert is None: auth_url = 'http://{0}:5000/v2.0/'.format(self.controller_ip) self.path_to_cert = None self.insecure = True else: auth_url = 'https://{0}:5000/v2.0/'.format(self.controller_ip) with gen_temp_file(prefix="fuel_cert_", suffix=".pem") as f: f.write(cert) self.path_to_cert = f.name self.insecure = False logger.debug('Auth URL is {0}'.format(auth_url)) auth = KeystonePassword(username=user, password=password, auth_url=auth_url, tenant_name=tenant) self.session = session.Session(auth=auth, verify=self.path_to_cert) self.keystone = KeystoneClient(session=self.session) self.keystone.management_url = auth_url self.nova = nova_client.Client(version=2, session=self.session) self.cinder = cinderclient.Client(version=2, session=self.session) self.neutron = neutron_client.Client(session=self.session) self.glance = GlanceClient(session=self.session) endpoint_url = self.session.get_endpoint(service_type='orchestration', endpoint_type='publicURL') token = self.session.get_token() self.heat = HeatClient(endpoint=endpoint_url, token=token) self.env = env
def authenticate(self): try: logger.info('Initialize keystoneclient with url %s', self.keystone_url) self.keystone = KeystoneClient(auth_url=self.keystone_url, **self.creds) # it depends on keystone version, some versions doing auth # explicitly some don't, but we are making it explicitly always self.keystone.authenticate() logger.debug('Authorization token is successfully updated') except exceptions.AuthorizationFailure: logger.warning('Cant establish connection to keystone with url %s', self.keystone_url)
def _client(self) -> GlanceClient: if self._cached_client is None: keystone = KeystoneClient( auth_url=self.openstack_connector.auth_url, username=self.openstack_connector.username, password=self.openstack_connector.password, tenant_name=self.openstack_connector.tenant) glance_endpoint = keystone.service_catalog.url_for( service_type="image", endpoint_type="publicURL") self._cached_client = GlanceClient( GlanceOpenstackImageManager.GLANCE_VERSION, glance_endpoint, token=keystone.auth_token) return self._cached_client
def _get_keystoneclient(self, username, password, tenant_name, auth_url, retries=3, ca_cert=None, insecure=False): exception = None for i in xrange(retries): try: if ca_cert: return KeystoneClient(username=username, password=password, tenant_name=tenant_name, auth_url=auth_url, cacert=ca_cert, insecure=insecure) else: return KeystoneClient(username=username, password=password, tenant_name=tenant_name, auth_url=auth_url) except ClientException as exc: err = "Try nr {0}. Could not get keystone client, error: {1}" logger.warning(err.format(i + 1, exc)) exception = exc time.sleep(5) raise exception if exception else RuntimeError()
def _init_keystone_client(self, username, password, tenant_id, auth_url): """ Init the keystone client to request token and endpoint data :param string username: Username for authentication. :param string password: Password for authentication. :param string tenant_id: Tenant id. :param string auth_url: Keystone service endpoint for authorization. :return None """ __logger__.debug("Init Keystone Client") self.keystone_client = KeystoneClient(username=username, password=password, tenant_id=tenant_id, auth_url=auth_url)
def __init_keystone_client__(self, username, password, tenant_id, auth_url): """ Init the keystone client to request token and endpoint data :param string username: Username for authentication. :param string password: Password for authentication. :param string tenant_id: Tenant id. :param string auth_url: Keystone service endpoint for authorization. :param string region_name: Name of a region to select when choosing an endpoint from the service catalog. :return None """ logger.debug("Init Keystone Client") self.keystone_client = KeystoneClient(username=username, password=password, tenant_id=tenant_id, auth_url=auth_url)
def keystone(self): return KeystoneClient(session=self.keystone_session)