Example #1
0
 def aodh_url(self):
     if self._aodh_url is None:
         if cfg.CONF.api.aodh_is_enabled is False:
             self._aodh_url = ""
         elif cfg.CONF.api.aodh_url is not None:
             self._aodh_url = self._normalize_aodh_url(
                 cfg.CONF.api.aodh_url)
         else:
             try:
                 catalog = keystone_client.get_service_catalog(
                     keystone_client.get_client())
                 self._aodh_url = self._normalize_aodh_url(
                     catalog.url_for(service_type='alarming'))
             except exceptions.EndpointNotFound:
                 self._aodh_url = ""
             except exceptions.ClientException:
                 LOG.warning(
                     _LW("Can't connect to keystone, assuming aodh "
                         "is disabled and retry later."))
             else:
                 LOG.warning(
                     _LW("ceilometer-api started with aodh "
                         "enabled. Alarms URLs will be redirected "
                         "to aodh endpoint."))
     return self._aodh_url
Example #2
0
    def gnocchi_is_enabled(self):
        if self._gnocchi_is_enabled is None:
            if pecan.request.cfg.api.gnocchi_is_enabled is not None:
                self._gnocchi_is_enabled = (
                    pecan.request.cfg.api.gnocchi_is_enabled)

            elif ("gnocchi" not in pecan.request.cfg.meter_dispatchers
                  or "database" in pecan.request.cfg.meter_dispatchers):
                self._gnocchi_is_enabled = False
            else:
                try:
                    catalog = keystone_client.get_service_catalog(
                        keystone_client.get_client(pecan.request.cfg))
                    catalog.url_for(service_type='metric')
                except exceptions.EndpointNotFound:
                    self._gnocchi_is_enabled = False
                except exceptions.ClientException:
                    LOG.warning("Can't connect to keystone, assuming "
                                "gnocchi is disabled and retry later")
                else:
                    self._gnocchi_is_enabled = True
                    LOG.warning("ceilometer-api started with gnocchi "
                                "enabled. The resources/meters/samples "
                                "URLs are disabled.")
        return self._gnocchi_is_enabled
Example #3
0
 def panko_url(self):
     if self._panko_url is None:
         if pecan.request.cfg.api.panko_is_enabled is False:
             self._panko_url = ""
         elif pecan.request.cfg.api.panko_url is not None:
             self._panko_url = self._normalize_url(
                 pecan.request.cfg.api.panko_url)
         else:
             try:
                 catalog = keystone_client.get_service_catalog(
                     keystone_client.get_client(pecan.request.cfg))
                 self._panko_url = self._normalize_url(
                     catalog.url_for(service_type='event'))
             except exceptions.EndpointNotFound:
                 self._panko_url = ""
             except exceptions.ClientException:
                 LOG.warning(
                     _LW("Can't connect to keystone, assuming Panko "
                         "is disabled and retry later."))
             else:
                 LOG.warning(
                     _LW("ceilometer-api started with Panko "
                         "enabled. Events URLs will be redirected "
                         "to Panko endpoint."))
     return self._panko_url
Example #4
0
    def gnocchi_is_enabled(self):
        print cfg.CONF.meter_dispatchers  # debug by Tony
        pdb.set_trace()  # debug by Tony
        if self._gnocchi_is_enabled is None:
            if cfg.CONF.api.gnocchi_is_enabled is not None:
                self._gnocchi_is_enabled = cfg.CONF.api.gnocchi_is_enabled

            elif ("gnocchi" not in cfg.CONF.meter_dispatchers
                  or "database" in cfg.CONF.meter_dispatchers):
                self._gnocchi_is_enabled = False
            else:
                try:
                    catalog = keystone_client.get_service_catalog(
                        keystone_client.get_client())
                    catalog.url_for(service_type='metric')
                except exceptions.EndpointNotFound:
                    self._gnocchi_is_enabled = False
                except exceptions.ClientException:
                    LOG.warning(
                        _LW("Can't connect to keystone, assuming "
                            "gnocchi is disabled and retry later"))
                else:
                    self._gnocchi_is_enabled = True
                    LOG.warning(
                        _LW("ceilometer-api started with gnocchi "
                            "enabled. The resources/meters/samples "
                            "URLs are disabled."))
        return self._gnocchi_is_enabled
Example #5
0
    def gnocchi_is_enabled(self):
        if self._gnocchi_is_enabled is None:
            if pecan.request.cfg.api.gnocchi_is_enabled is not None:
                self._gnocchi_is_enabled = (
                    pecan.request.cfg.api.gnocchi_is_enabled)

            elif ("gnocchi" not in pecan.request.cfg.meter_dispatchers
                  or "database" in pecan.request.cfg.meter_dispatchers):
                self._gnocchi_is_enabled = False
            else:
                try:
                    catalog = keystone_client.get_service_catalog(
                        keystone_client.get_client(pecan.request.cfg))
                    catalog.url_for(service_type='metric')
                except exceptions.EndpointNotFound:
                    self._gnocchi_is_enabled = False
                except exceptions.ClientException:
                    LOG.warning(_LW("Can't connect to keystone, assuming "
                                    "gnocchi is disabled and retry later"))
                else:
                    self._gnocchi_is_enabled = True
                    LOG.warning(_LW("ceilometer-api started with gnocchi "
                                    "enabled. The resources/meters/samples "
                                    "URLs are disabled."))
        return self._gnocchi_is_enabled
Example #6
0
 def discover(self, manager, param=None):
     endpoints = keystone_client.get_service_catalog(
         manager.keystone).get_urls(
             service_type=param,
             interface=self.conf.service_credentials.interface,
             region_name=self.conf.service_credentials.region_name)
     if not endpoints:
         LOG.warning(_LW('No endpoints found for service %s'),
                     "<all services>" if param is None else param)
         return []
     return endpoints
Example #7
0
 def discover(manager, param=None):
     endpoints = keystone_client.get_service_catalog(
         manager.keystone).get_urls(
             service_type=param,
             interface=cfg.CONF.service_credentials.interface,
             region_name=cfg.CONF.service_credentials.region_name)
     if not endpoints:
         LOG.warning(_LW('No endpoints found for service %s'),
                     "<all services>" if param is None else param)
         return []
     return endpoints
Example #8
0
 def _get_endpoint(conf, ksclient):
     # we store the endpoint as a base class attribute, so keystone is
     # only ever called once
     if _Base._ENDPOINT is None:
         try:
             creds = conf.service_credentials
             _Base._ENDPOINT = keystone_client.get_service_catalog(ksclient).url_for(
                 service_type=conf.service_types.swift, interface=creds.interface, region_name=creds.region_name
             )
         except exceptions.EndpointNotFound as e:
             LOG.info(_LI("Swift endpoint not found: %s"), e)
     return _Base._ENDPOINT
Example #9
0
 def _get_endpoint(conf, ksclient):
     # we store the endpoint as a base class attribute, so keystone is
     # only ever called once
     if _Base._ENDPOINT is None:
         try:
             creds = conf.service_credentials
             _Base._ENDPOINT = keystone_client.get_service_catalog(
                 ksclient).url_for(service_type=conf.service_types.swift,
                                   interface=creds.interface,
                                   region_name=creds.region_name)
         except exceptions.EndpointNotFound as e:
             LOG.info(_LI("Swift endpoint not found: %s"), e)
     return _Base._ENDPOINT
 def _get_endpoint(ksclient):
     # we store the endpoint as a base class attribute, so keystone is
     # only ever called once
     if _Base._ENDPOINT is None:
         try:
             conf = cfg.CONF.service_credentials
             _Base._ENDPOINT = keystone_client.get_service_catalog(
                 ksclient).url_for(
                     service_type=cfg.CONF.service_types.swift,
                     interface=conf.interface)
         except exceptions.EndpointNotFound:
             LOG.debug("Swift endpoint not found")
     return _Base._ENDPOINT
Example #11
0
 def _get_endpoint(ksclient):
     # we store the endpoint as a base class attribute, so keystone is
     # only ever called once
     if _Base._ENDPOINT is None:
         try:
             conf = cfg.CONF.service_credentials
             _Base._ENDPOINT = keystone_client.get_service_catalog(
                 ksclient).url_for(
                     service_type=cfg.CONF.service_types.swift,
                     interface=conf.interface)
         except exceptions.EndpointNotFound:
             LOG.debug("Swift endpoint not found")
     return _Base._ENDPOINT
Example #12
0
 def _get_endpoint(conf, ksclient):
     # we store the endpoint as a base class attribute, so keystone is
     # only ever called once, also we assume that in a single deployment
     # we may be only deploying `radosgw` or `swift` as the object-store
     if _Base._ENDPOINT is None:
         try:
             creds = conf.service_credentials
             rgw_url = keystone_client.get_service_catalog(
                 ksclient).url_for(service_type=conf.service_types.radosgw,
                                   interface=creds.interface)
             _Base._ENDPOINT = urlparse.urljoin(rgw_url, '/admin')
         except exceptions.EndpointNotFound:
             LOG.debug("Radosgw endpoint not found")
     return _Base._ENDPOINT
Example #13
0
    def discover(self, discovery=None, discovery_cache=None):
        resources = []
        discovery = discovery or []
        for url in discovery:
            if discovery_cache is not None and url in discovery_cache:
                resources.extend(discovery_cache[url])
                continue
            name, param = self._parse_discoverer(url)
            discoverer = self._discoverer(name)
            if discoverer:
                try:
                    if discoverer.KEYSTONE_REQUIRED_FOR_SERVICE:
                        service_type = getattr(
                            self.conf.service_types,
                            discoverer.KEYSTONE_REQUIRED_FOR_SERVICE)
                        if not keystone_client.get_service_catalog(
                                self.keystone).get_endpoints(
                                    service_type=service_type):
                            LOG.warning(
                                'Skipping %(name)s, %(service_type)s service '
                                'is not registered in keystone', {
                                    'name': name,
                                    'service_type': service_type
                                })
                            continue

                    discovered = discoverer.discover(self, param)

                    if self.partition_coordinator:
                        discovered = [
                            v for v in discovered
                            if self.hashrings[self.construct_group_id(
                                discoverer.group_id)].belongs_to_self(
                                    six.text_type(v))
                        ]

                    resources.extend(discovered)
                    if discovery_cache is not None:
                        discovery_cache[url] = discovered
                except ka_exceptions.ClientException as e:
                    LOG.error('Skipping %(name)s, keystone issue: '
                              '%(exc)s', {
                                  'name': name,
                                  'exc': e
                              })
                except Exception as err:
                    LOG.exception('Unable to discover resources: %s', err)
            else:
                LOG.warning('Unknown discovery extension: %s', name)
        return resources
Example #14
0
 def _get_endpoint(conf, ksclient):
     # we store the endpoint as a base class attribute, so keystone is
     # only ever called once, also we assume that in a single deployment
     # we may be only deploying `radosgw` or `swift` as the object-store
     if _Base._ENDPOINT is None:
         try:
             creds = conf.service_credentials
             rgw_url = keystone_client.get_service_catalog(
                 ksclient).url_for(
                     service_type=conf.service_types.radosgw,
                     interface=creds.interface)
             _Base._ENDPOINT = urlparse.urljoin(rgw_url, '/admin')
         except exceptions.EndpointNotFound:
             LOG.debug("Radosgw endpoint not found")
     return _Base._ENDPOINT
Example #15
0
    def discover(self, discovery=None, discovery_cache=None):
        resources = []
        discovery = discovery or []
        for url in discovery:
            if discovery_cache is not None and url in discovery_cache:
                resources.extend(discovery_cache[url])
                continue
            name, param = self._parse_discoverer(url)
            discoverer = self._discoverer(name)
            if discoverer:
                try:
                    if discoverer.KEYSTONE_REQUIRED_FOR_SERVICE:
                        service_type = getattr(
                            cfg.CONF.service_types,
                            discoverer.KEYSTONE_REQUIRED_FOR_SERVICE)
                        if not keystone_client.get_service_catalog(
                                self.keystone).get_endpoints(
                                    service_type=service_type):
                            LOG.warning(
                                _LW('Skipping %(name)s, %(service_type)s service '
                                    'is not registered in keystone'), {
                                        'name': name,
                                        'service_type': service_type
                                    })
                            continue

                    discovered = discoverer.discover(self, param)
                    partitioned = self.partition_coordinator.extract_my_subset(
                        self.construct_group_id(discoverer.group_id),
                        discovered)
                    resources.extend(partitioned)
                    if discovery_cache is not None:
                        discovery_cache[url] = partitioned
                except (ka_exceptions.ClientException,
                        ks_exceptions.ClientException) as e:
                    LOG.error(
                        _LE('Skipping %(name)s, keystone issue: '
                            '%(exc)s'), {
                                'name': name,
                                'exc': e
                            })
                except Exception as err:
                    LOG.exception(_('Unable to discover resources: %s') % err)
            else:
                LOG.warning(_('Unknown discovery extension: %s') % name)
        return resources
Example #16
0
    def discover(self, discovery=None, discovery_cache=None):
        resources = []
        discovery = discovery or []
        for url in discovery:
            if discovery_cache is not None and url in discovery_cache:
                resources.extend(discovery_cache[url])
                continue
            name, param = self._parse_discoverer(url)
            discoverer = self._discoverer(name)
            if discoverer:
                try:
                    if discoverer.KEYSTONE_REQUIRED_FOR_SERVICE:
                        service_type = getattr(
                            self.conf.service_types,
                            discoverer.KEYSTONE_REQUIRED_FOR_SERVICE)
                        if not keystone_client.get_service_catalog(
                                self.keystone).get_endpoints(
                                    service_type=service_type):
                            LOG.warning(_LW(
                                'Skipping %(name)s, %(service_type)s service '
                                'is not registered in keystone'),
                                {'name': name, 'service_type': service_type})
                            continue

                    discovered = discoverer.discover(self, param)
                    if self.partition_coordinator:
                        partitioned = (
                            self.partition_coordinator.extract_my_subset(
                                self.construct_group_id(discoverer.group_id),
                                discovered)
                        )
                    else:
                        partitioned = discovered
                    resources.extend(partitioned)
                    if discovery_cache is not None:
                        discovery_cache[url] = partitioned
                except ka_exceptions.ClientException as e:
                    LOG.error(_LE('Skipping %(name)s, keystone issue: '
                                  '%(exc)s'), {'name': name, 'exc': e})
                except Exception as err:
                    LOG.exception(_LE('Unable to discover resources: %s'), err)
            else:
                LOG.warning(_LW('Unknown discovery extension: %s'), name)
        return resources
Example #17
0
 def aodh_url(self):
     if self._aodh_url is None:
         if cfg.CONF.api.aodh_is_enabled is False:
             self._aodh_url = ""
         elif cfg.CONF.api.aodh_url is not None:
             self._aodh_url = self._normalize_aodh_url(
                 cfg.CONF.api.aodh_url)
         else:
             try:
                 catalog = keystone_client.get_service_catalog(
                     keystone_client.get_client())
                 self._aodh_url = self._normalize_aodh_url(
                     catalog.url_for(service_type='alarming'))
             except exceptions.EndpointNotFound:
                 self._aodh_url = ""
             except exceptions.ClientException:
                 LOG.warning(_LW("Can't connect to keystone, assuming aodh "
                                 "is disabled and retry later."))
             else:
                 LOG.warning(_LW("ceilometer-api started with aodh "
                                 "enabled. Alarms URLs will be redirected "
                                 "to aodh endpoint."))
     return self._aodh_url
Example #18
0
 def panko_url(self):
     if self._panko_url is None:
         if pecan.request.cfg.api.panko_is_enabled is False:
             self._panko_url = ""
         elif pecan.request.cfg.api.panko_url is not None:
             self._panko_url = self._normalize_url(
                 pecan.request.cfg.api.panko_url)
         else:
             try:
                 catalog = keystone_client.get_service_catalog(
                     keystone_client.get_client(pecan.request.cfg))
                 self._panko_url = self._normalize_url(
                     catalog.url_for(service_type='event'))
             except exceptions.EndpointNotFound:
                 self._panko_url = ""
             except exceptions.ClientException:
                 LOG.warning(
                     _LW("Can't connect to keystone, assuming Panko "
                         "is disabled and retry later."))
             else:
                 LOG.warning(_LW("ceilometer-api started with Panko "
                                 "enabled. Events URLs will be redirected "
                                 "to Panko endpoint."))
     return self._panko_url
Example #19
0
    def discover(self, discovery=None, discovery_cache=None):
        resources = []
        discovery = discovery or []
        for url in discovery:
            if discovery_cache is not None and url in discovery_cache:
                resources.extend(discovery_cache[url])
                continue
            name, param = self._parse_discoverer(url)
            discoverer = self._discoverer(name)
            if discoverer:
                try:
                    if discoverer.KEYSTONE_REQUIRED_FOR_SERVICE:
                        service_type = getattr(cfg.CONF.service_types, discoverer.KEYSTONE_REQUIRED_FOR_SERVICE)
                        if not keystone_client.get_service_catalog(self.keystone).get_endpoints(
                            service_type=service_type
                        ):
                            LOG.warning(
                                _LW("Skipping %(name)s, %(service_type)s service " "is not registered in keystone"),
                                {"name": name, "service_type": service_type},
                            )
                            continue

                    discovered = discoverer.discover(self, param)
                    partitioned = self.partition_coordinator.extract_my_subset(
                        self.construct_group_id(discoverer.group_id), discovered
                    )
                    resources.extend(partitioned)
                    if discovery_cache is not None:
                        discovery_cache[url] = partitioned
                except (ka_exceptions.ClientException, ks_exceptions.ClientException) as e:
                    LOG.error(_LE("Skipping %(name)s, keystone issue: " "%(exc)s"), {"name": name, "exc": e})
                except Exception as err:
                    LOG.exception(_("Unable to discover resources: %s") % err)
            else:
                LOG.warning(_("Unknown discovery extension: %s") % name)
        return resources