Moved keystone settings in the ceilometer collector

Removed _connect abstract method as we can't assume the collector will
connect somewhere and should be handled by the collector himself.
Removed now useless state manager in orchestrator(handled by the storage
backend).
Kept the keystone instance in the orchestrator for future token
validation purpose.

Change-Id: I471ed1ad94345c83a637247d814a30b38743b100
This commit is contained in:
Stéphane Albert 2014-11-14 10:42:44 +01:00
parent de644c15d9
commit 32d83e3614
5 changed files with 49 additions and 34 deletions

View File

@ -40,20 +40,12 @@ class BaseCollector(object):
def __init__(self, transformers, **kwargs):
try:
self.transformers = transformers
self.user = kwargs['user']
self.password = kwargs['password']
self.tenant = kwargs['tenant']
self.region = kwargs['region']
self.keystone_url = kwargs['keystone_url']
self.period = kwargs['period']
except IndexError as e:
raise ValueError("Missing argument (%s)" % e)
self._check_transformers()
self._conn = None
self._connect()
def _check_transformers(self):
"""Check for transformer prerequisites
@ -63,12 +55,6 @@ class BaseCollector(object):
raise TransformerDependencyError(self.collector_name,
dependency)
@abc.abstractmethod
def _connect(self):
"""Connect to the backend
"""
@staticmethod
def last_month():
month_start = ck_utils.get_month_start()

View File

@ -16,10 +16,30 @@
# @author: Stéphane Albert
#
from ceilometerclient import client as cclient
from oslo.config import cfg
from cloudkitty import collector
from cloudkitty import utils as ck_utils
ceilometer_collector_opts = [
cfg.StrOpt('username',
default='cloudkitty',
help='OpenStack username.'),
cfg.StrOpt('password',
default='',
help='OpenStack password.'),
cfg.StrOpt('tenant',
default='service',
help='OpenStack tenant.'),
cfg.StrOpt('region',
default='',
help='OpenStack region.'),
cfg.StrOpt('url',
default='http://127.0.0.1:5000',
help='OpenStack auth URL.'), ]
cfg.CONF.register_opts(ceilometer_collector_opts, 'ceilometer_collector')
class ResourceNotFound(Exception):
"""Raised when the resource doesn't exist."""
@ -63,13 +83,17 @@ class CeilometerCollector(collector.BaseCollector):
def __init__(self, transformers, **kwargs):
super(CeilometerCollector, self).__init__(transformers, **kwargs)
self.user = cfg.CONF.ceilometer_collector.username
self.password = cfg.CONF.ceilometer_collector.password
self.tenant = cfg.CONF.ceilometer_collector.tenant
self.region = cfg.CONF.ceilometer_collector.region
self.keystone_url = cfg.CONF.ceilometer_collector.url
self.t_ceilometer = self.transformers['CeilometerTransformer']
self.t_cloudkitty = self.transformers['CloudKittyFormatTransformer']
self._cacher = CeilometerResourceCacher()
def _connect(self):
"""Initialize connection to the Ceilometer endpoint."""
self._conn = cclient.get_client('2', os_username=self.user,
os_password=self.password,
os_auth_url=self.keystone_url,

View File

@ -35,9 +35,6 @@ class MetaCollector(collector.BaseCollector):
self._mappings = {}
self._load_mappings()
def _connect(self):
pass
def _load_mappings(self):
mappings = self._db.list_services()
for mapping in mappings:
@ -60,11 +57,6 @@ class MetaCollector(collector.BaseCollector):
if self._check_enabled(name):
self._collectors[name] = collectors[name].plugin(
self.transformers,
user=self.user,
password=self.password,
tenant=self.tenant,
region=self.region,
keystone_url=self.keystone_url,
period=self.period)
def map_retrieve(self, trans_resource, res_collector=None):

View File

@ -28,7 +28,6 @@ from cloudkitty import config # NOQA
from cloudkitty import extension_manager
from cloudkitty.openstack.common import lockutils
from cloudkitty.openstack.common import log as logging
from cloudkitty import state
from cloudkitty import utils as ck_utils
eventlet.monkey_patch()
@ -94,25 +93,17 @@ class BillingEndpoint(object):
class Orchestrator(object):
def __init__(self):
self.keystone = kclient.Client(username=CONF.auth.username,
self.admin_ks = kclient.Client(username=CONF.auth.username,
password=CONF.auth.password,
tenant_name=CONF.auth.tenant,
region_name=CONF.auth.region,
auth_url=CONF.auth.url)
self.sm = state.DBStateManager(self.keystone.user_id,
'osrtf')
# Transformers
self.transformers = {}
self._load_transformers()
collector_args = {'transformers': self.transformers,
'user': CONF.auth.username,
'password': CONF.auth.password,
'tenant': CONF.auth.tenant,
'region': CONF.auth.region,
'keystone_url': CONF.auth.url,
'period': CONF.collect.period}
self.collector = driver.DriverManager(
COLLECTORS_NAMESPACE,

View File

@ -347,6 +347,28 @@
#url=
[ceilometer_collector]
#
# Options defined in cloudkitty.collector.ceilometer
#
# OpenStack username. (string value)
#username=cloudkitty
# OpenStack password. (string value)
#password=
# OpenStack tenant. (string value)
#tenant=service
# OpenStack region. (string value)
#region=
# OpenStack auth URL. (string value)
#url=http://127.0.0.1:5000
[collect]
#