Exemple #1
0
    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
Exemple #2
0
    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()
Exemple #3
0
 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
Exemple #5
0
 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)
Exemple #6
0
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
Exemple #7
0
 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
Exemple #8
0
    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
Exemple #9
0
 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)
Exemple #10
0
 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
Exemple #11
0
    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()
Exemple #12
0
    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)
Exemple #13
0
    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)
Exemple #14
0
 def keystone(self):
     return KeystoneClient(session=self.keystone_session)