Support connecting gnocchi on internal endpoint

currently interface type in ks_auth section of
cloudkitty.conf has no effect. gnocchi driver in
storage driver always tries connection to public
endpoint. This patch will enable connection as
per the interface type mentioned in conf file .

Change-Id: I1212b95f470b243342ff5face08ce17d26cfbe65
Closes-Bug: 1750095
Story: 2001558
This commit is contained in:
bhujay 2018-02-17 12:02:17 +05:30
parent 15d0a7dd05
commit 03f7bd9df8
4 changed files with 27 additions and 6 deletions

View File

@ -29,8 +29,12 @@ LOG = logging.getLogger(__name__)
GNOCCHI_COLLECTOR_OPTS = 'gnocchi_collector'
gnocchi_collector_opts = ks_loading.get_auth_common_conf_options()
end_point_type_opts = [
cfg.StrOpt('interface',
default='internalURL',
help='endpoint url type'), ]
cfg.CONF.register_opts(gnocchi_collector_opts, GNOCCHI_COLLECTOR_OPTS)
cfg.CONF.register_opts(end_point_type_opts, GNOCCHI_COLLECTOR_OPTS)
ks_loading.register_session_conf_options(
cfg.CONF,
GNOCCHI_COLLECTOR_OPTS)
@ -103,7 +107,9 @@ class GnocchiCollector(collector.BaseCollector):
auth=self.auth)
self._conn = gclient.Client(
'1',
session=self.session)
session=self.session,
adapter_options={'connect_retries': 3,
'interface': CONF.gnocchi_collector.interface})
@classmethod
def get_metadata(cls, resource_name, transformers):
@ -299,8 +305,8 @@ class GnocchiCollector(collector.BaseCollector):
if isinstance(qty, str):
resource_data[qty] = ck_utils.convert_unit(
resource_data[qty],
conv_data.get('factor', 1),
conv_data.get('offset', 0),
conv_data.get('factor', '1'),
conv_data.get('offset', '0'),
)
# NOTE(mc): deprecated except part kept for backward compatibility.
except KeyError:

View File

@ -41,6 +41,7 @@ _opts = [
('collector_monasca', list(itertools.chain(
cloudkitty.collector.monasca.collector_monasca_opts))),
('gnocchi_collector', list(itertools.chain(
cloudkitty.collector.gnocchi.end_point_type_opts,
cloudkitty.collector.gnocchi.gnocchi_collector_opts))),
('keystone_fetcher', list(itertools.chain(
cloudkitty.tenant_fetcher.keystone.keystone_fetcher_opts,

View File

@ -38,6 +38,9 @@ METRICS_CONF = ck_utils.get_metrics_conf(CONF.collect.metrics_conf)
GNOCCHI_STORAGE_OPTS = 'storage_gnocchi'
gnocchi_storage_opts = [
cfg.StrOpt('interface',
default='internalURL',
help='endpoint url type'),
cfg.StrOpt('archive_policy_name',
default='rating',
help='Gnocchi storage archive policy name.'),
@ -78,7 +81,11 @@ class GnocchiStorage(storage.BaseStorage):
CONF,
GNOCCHI_STORAGE_OPTS,
auth=self.auth)
self._conn = gclient.Client('1', session=self.session)
self._conn = gclient.Client(
'1',
session=self.session,
adapter_options={'connect_retries': 3,
'interface': CONF.storage_gnocchi.interface})
self._measures = {}
self._archive_policy_name = (
CONF.storage_gnocchi.archive_policy_name)

View File

@ -40,6 +40,9 @@ CONF.import_opt('period', 'cloudkitty.collector', 'collect')
GNOCCHI_STORAGE_OPTS = 'storage_gnocchi'
gnocchi_storage_opts = [
cfg.StrOpt('interface',
default='internalURL',
help='endpoint url type'),
cfg.StrOpt('archive_policy_name',
default='rating',
help='Gnocchi storage archive policy name.'),
@ -239,7 +242,11 @@ class GnocchiStorage(BaseHybridBackend):
CONF,
GNOCCHI_STORAGE_OPTS,
auth=self.auth)
self._conn = gclient.Client('1', session=self.session)
self._conn = gclient.Client(
'1',
session=self.session,
adapter_options={'connect_retries': 3,
'interface': CONF.storage_gnocchi.interface})
self._archive_policy_name = (
CONF.storage_gnocchi.archive_policy_name)
self._archive_policy_definition = json.loads(