From a49e59b1151ce87c8f4ed6e12368e01dbbb6243a Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Tue, 29 May 2012 16:18:04 +0200 Subject: [PATCH] Use openstack.common.cfg for ceilometer options Change-Id: Iba7df922a7d6b3eec7db427b4135e6fa2ad2d416 Signed-off-by: Julien Danjou --- ceilometer/agent/manager.py | 7 +++---- ceilometer/cfg.py | 21 +++++++++++++++++++++ ceilometer/collector/manager.py | 11 ++++++----- ceilometer/meter.py | 9 ++++----- tests/test_meter.py | 9 ++++----- 5 files changed, 38 insertions(+), 19 deletions(-) create mode 100644 ceilometer/cfg.py diff --git a/ceilometer/agent/manager.py b/ceilometer/agent/manager.py index e0f59f504..8d3e94875 100644 --- a/ceilometer/agent/manager.py +++ b/ceilometer/agent/manager.py @@ -18,14 +18,13 @@ import pkg_resources -from nova import flags from nova import log as logging from nova import manager from nova import rpc from ceilometer import meter +from ceilometer import cfg -FLAGS = flags.FLAGS # FIXME(dhellmann): We need to have the main program set up logging # correctly so messages from modules outside of the nova package @@ -77,9 +76,9 @@ class AgentManager(manager.Manager): 'args': {'data': meter.meter_message_from_counter(c), }, } - rpc.cast(context, FLAGS.metering_topic, msg) + rpc.cast(context, cfg.CONF.metering_topic, msg) rpc.cast(context, - FLAGS.metering_topic + '.' + c.type, + cfg.CONF.metering_topic + '.' + c.type, msg) except Exception as err: LOG.warning('Continuing after error from %s: %s', name, err) diff --git a/ceilometer/cfg.py b/ceilometer/cfg.py new file mode 100644 index 000000000..86312e4a2 --- /dev/null +++ b/ceilometer/cfg.py @@ -0,0 +1,21 @@ +# -*- encoding: utf-8 -*- +# +# Copyright © 2012 eNovance +# +# Author: Julien Danjou +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from openstack.common.cfg import * + +CONF = ConfigOpts() diff --git a/ceilometer/collector/manager.py b/ceilometer/collector/manager.py index acbed6dc1..d053440b7 100644 --- a/ceilometer/collector/manager.py +++ b/ceilometer/collector/manager.py @@ -25,6 +25,7 @@ from nova.rpc import dispatcher as rpc_dispatcher from ceilometer import rpc from ceilometer import meter +from ceilometer import cfg from ceilometer.collector import dispatcher # FIXME(dhellmann): There must be another way to do this. @@ -61,9 +62,9 @@ class CollectorManager(manager.Manager): # Set ourselves up as a separate worker for the metering data, # since the default for manager is to use create_consumer(). self.connection.create_worker( - flags.FLAGS.metering_topic, + cfg.CONF.metering_topic, rpc_dispatcher.RpcDispatcher([self]), - 'ceilometer.collector.' + flags.FLAGS.metering_topic, + 'ceilometer.collector.' + cfg.CONF.metering_topic, ) self.connection.consume_in_thread() @@ -81,10 +82,10 @@ class CollectorManager(manager.Manager): }, } ctxt = context.get_admin_context() - nova_rpc.cast(ctxt, FLAGS.metering_topic, msg) + nova_rpc.cast(ctxt, cfg.CONF.metering_topic, msg) nova_rpc.cast(ctxt, - FLAGS.metering_topic + '.' + counter.type, - msg) + cfg.CONF.metering_topic + '.' + counter.type, + msg) def record_metering_data(self, context, data): """This method is triggered when metering data is diff --git a/ceilometer/meter.py b/ceilometer/meter.py index 5f8571b2b..b39b40dc5 100644 --- a/ceilometer/meter.py +++ b/ceilometer/meter.py @@ -22,8 +22,7 @@ import hashlib import hmac import uuid -from nova import flags -from nova.openstack.common import cfg +from ceilometer import cfg METER_OPTS = [ cfg.StrOpt('metering_secret', @@ -36,13 +35,13 @@ METER_OPTS = [ ), ] -flags.FLAGS.register_opts(METER_OPTS) +cfg.CONF.register_opts(METER_OPTS) def compute_signature(message): """Return the signature for a message dictionary. """ - digest_maker = hmac.new(flags.FLAGS.metering_secret, '', hashlib.sha256) + digest_maker = hmac.new(cfg.CONF.metering_secret, '', hashlib.sha256) for name, value in sorted(message.iteritems()): if name == 'message_signature': # Skip any existing signature value, which would not have @@ -70,7 +69,7 @@ def meter_message_from_counter(counter): 'resource_metadata': counter.resource_metadata, 'message_id': str(uuid.uuid1()), # This field is used by the notification system. - 'event_type': '%s.%s' % (flags.FLAGS.metering_topic, counter.type), + 'event_type': '%s.%s' % (cfg.CONF.metering_topic, counter.type), } msg['message_signature'] = compute_signature(msg) return msg diff --git a/tests/test_meter.py b/tests/test_meter.py index b0e54b287..095e9ded2 100644 --- a/tests/test_meter.py +++ b/tests/test_meter.py @@ -20,8 +20,7 @@ from ceilometer import counter from ceilometer import meter - -from nova import flags +from ceilometer import cfg def test_compute_signature_change_key(): @@ -53,12 +52,12 @@ def test_compute_signature_signed(): def test_compute_signature_use_configured_secret(): data = {'a': 'A', 'b': 'B'} sig1 = meter.compute_signature(data) - old_secret = flags.FLAGS.metering_secret + old_secret = cfg.CONF.metering_secret try: - flags.FLAGS.metering_secret = 'not the default value' + cfg.CONF.metering_secret = 'not the default value' sig2 = meter.compute_signature(data) finally: - flags.FLAGS.metering_secret = old_secret + cfg.CONF.metering_secret = old_secret assert sig1 != sig2