From 43d728c6319811d3361c66b2b56a02ef0cc42bde Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Wed, 10 Apr 2013 11:50:57 +0200 Subject: [PATCH] Move meter signature computing into meter_publish Blueprint: oslo-multi-publisher Change-Id: I7e758dfb56604fb5a92690ac9719b129837159cf Signed-off-by: Julien Danjou --- ceilometer/collector/service.py | 12 +- ceilometer/{collector => publisher}/meter.py | 59 +++++- ceilometer/publisher/meter_publish.py | 83 -------- etc/ceilometer/ceilometer.conf.sample | 2 +- etc/ceilometer/pipeline.yaml | 2 +- setup.py | 3 +- tests/api/v1/list_events.py | 9 +- tests/api/v1/list_meters.py | 9 +- tests/api/v1/list_projects.py | 20 +- tests/api/v1/list_resources.py | 9 +- tests/api/v1/list_users.py | 20 +- tests/api/v1/max_project_volume.py | 11 +- tests/api/v1/max_resource_volume.py | 11 +- tests/api/v1/sum_project_volume.py | 11 +- tests/api/v1/sum_resource_volume.py | 11 +- tests/api/v2/test_list_events.py | 20 +- tests/api/v2/test_list_meters.py | 9 +- tests/api/v2/test_list_resources.py | 119 +++++++----- tests/api/v2/test_max_project_volume.py | 11 +- tests/api/v2/test_max_resource_volume.py | 11 +- tests/api/v2/test_sum_project_volume.py | 11 +- tests/api/v2/test_sum_resource_volume.py | 11 +- tests/collector/test_manager.py | 10 +- tests/collector/test_meter.py | 184 ------------------ tests/publisher/test_meter_publisher.py | 193 ++++++++++++++++++- tests/storage/base.py | 60 +++--- tests/storage/test_impl_mongodb.py | 9 +- tools/make_test_data.py | 9 +- 28 files changed, 467 insertions(+), 462 deletions(-) rename ceilometer/{collector => publisher}/meter.py (63%) delete mode 100644 ceilometer/publisher/meter_publish.py delete mode 100644 tests/collector/test_meter.py diff --git a/ceilometer/collector/service.py b/ceilometer/collector/service.py index 22259c1118..296e8a030a 100644 --- a/ceilometer/collector/service.py +++ b/ceilometer/collector/service.py @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- # -# Copyright © 2012 eNovance +# Copyright © 2012-2013 eNovance # # Author: Julien Danjou # @@ -18,7 +18,7 @@ from oslo.config import cfg -from ceilometer.collector import meter as meter_api +from ceilometer.publisher import meter as publisher_meter from ceilometer import extension_manager from ceilometer.openstack.common import context from ceilometer.openstack.common import log @@ -87,9 +87,9 @@ class CollectorService(service.PeriodicService): # Set ourselves up as a separate worker for the metering data, # since the default for service is to use create_consumer(). self.conn.create_worker( - cfg.CONF.metering_topic, + cfg.CONF.publisher_meter.metering_topic, rpc_dispatcher.RpcDispatcher([self]), - 'ceilometer.collector.' + cfg.CONF.metering_topic, + 'ceilometer.collector.' + cfg.CONF.publisher_meter.metering_topic, ) def _setup_subscription(self, ext, *args, **kwds): @@ -139,7 +139,9 @@ class CollectorService(service.PeriodicService): meter['resource_id'], meter.get('timestamp', 'NO TIMESTAMP'), meter['counter_volume']) - if meter_api.verify_signature(meter, cfg.CONF.metering_secret): + if publisher_meter.verify_signature( + meter, + cfg.CONF.publisher_meter.metering_secret): try: # Convert the timestamp to a datetime instance. # Storage engines are responsible for converting diff --git a/ceilometer/collector/meter.py b/ceilometer/publisher/meter.py similarity index 63% rename from ceilometer/collector/meter.py rename to ceilometer/publisher/meter.py index 4b6d8a7cde..cc17738967 100644 --- a/ceilometer/collector/meter.py +++ b/ceilometer/publisher/meter.py @@ -15,27 +15,41 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -"""Compute the signature of a metering message. +"""Publish a counter using the preferred RPC mechanism. """ import hashlib import hmac +import itertools import uuid from oslo.config import cfg -METER_OPTS = [ +from ceilometer.openstack.common import log +from ceilometer.openstack.common import rpc +from ceilometer import publisher + + +LOG = log.getLogger(__name__) + +METER_PUBLISH_OPTS = [ + cfg.StrOpt('metering_topic', + default='metering', + help='the topic ceilometer uses for metering messages', + deprecated_group="DEFAULT", + ), cfg.StrOpt('metering_secret', default='change this or be hacked', help='Secret value for signing metering messages', + deprecated_group="DEFAULT", ), ] def register_opts(config): - """Register the options for signing metering messages. + """Register the options for publishing metering messages. """ - config.register_opts(METER_OPTS) + config.register_opts(METER_PUBLISH_OPTS, group="publisher_meter") register_opts(cfg.CONF) @@ -101,3 +115,40 @@ def meter_message_from_counter(counter, secret, source): } msg['message_signature'] = compute_signature(msg, secret) return msg + + +class MeterPublisher(publisher.PublisherBase): + def publish_counters(self, context, counters, source): + """Send a metering message for publishing + + :param context: Execution context from the service or RPC call + :param counter: Counter from pipeline after transformation + :param source: counter source + """ + + meters = [ + meter_message_from_counter( + counter, + cfg.CONF.publisher_meter.metering_secret, + source) + for counter in counters + ] + + topic = cfg.CONF.publisher_meter.metering_topic + msg = { + 'method': 'record_metering_data', + 'version': '1.0', + 'args': {'data': meters}, + } + LOG.debug('PUBLISH: %s', str(msg)) + rpc.cast(context, topic, msg) + + for meter_name, meter_list in itertools.groupby( + sorted(meters, key=lambda m: m['counter_name']), + lambda m: m['counter_name']): + msg = { + 'method': 'record_metering_data', + 'version': '1.0', + 'args': {'data': list(meter_list)}, + } + rpc.cast(context, topic + '.' + meter_name, msg) diff --git a/ceilometer/publisher/meter_publish.py b/ceilometer/publisher/meter_publish.py deleted file mode 100644 index f6ce66818f..0000000000 --- a/ceilometer/publisher/meter_publish.py +++ /dev/null @@ -1,83 +0,0 @@ -# -*- encoding: utf-8 -*- -# -# Copyright © 2012 New Dream Network, LLC (DreamHost) -# -# Author: Doug Hellmann -# -# 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. -"""Publish a counter using the preferred RPC mechanism. -""" - -import itertools - -from oslo.config import cfg - -from ceilometer.collector import meter as meter_api -from ceilometer.openstack.common import log -from ceilometer.openstack.common import rpc -from ceilometer import publisher - - -LOG = log.getLogger(__name__) - -PUBLISH_OPTS = [ - cfg.StrOpt('metering_topic', - default='metering', - help='the topic ceilometer uses for metering messages', - ), -] - - -def register_opts(config): - """Register the options for publishing metering messages. - """ - config.register_opts(PUBLISH_OPTS) - - -register_opts(cfg.CONF) - - -class MeterPublisher(publisher.PublisherBase): - def publish_counters(self, context, counters, source): - """Send a metering message for publishing - - :param context: Execution context from the service or RPC call - :param counter: Counter from pipeline after transformation - :param source: counter source - """ - - meters = [ - meter_api.meter_message_from_counter(counter, - cfg.CONF.metering_secret, - source) - for counter in counters - ] - - topic = cfg.CONF.metering_topic - msg = { - 'method': 'record_metering_data', - 'version': '1.0', - 'args': {'data': meters}, - } - LOG.debug('PUBLISH: %s', str(msg)) - rpc.cast(context, topic, msg) - - for meter_name, meter_list in itertools.groupby( - sorted(meters, key=lambda m: m['counter_name']), - lambda m: m['counter_name']): - msg = { - 'method': 'record_metering_data', - 'version': '1.0', - 'args': {'data': list(meter_list)}, - } - rpc.cast(context, topic + '.' + meter_name, msg) diff --git a/etc/ceilometer/ceilometer.conf.sample b/etc/ceilometer/ceilometer.conf.sample index d028fe4d56..0f26fa5154 100644 --- a/etc/ceilometer/ceilometer.conf.sample +++ b/etc/ceilometer/ceilometer.conf.sample @@ -404,7 +404,7 @@ #matchmaker_heartbeat_ttl=600 -######## defined in ceilometer.publisher.meter_publish ######## +######## defined in ceilometer.publisher.meter ######## # the topic ceilometer uses for metering messages (string # value) diff --git a/etc/ceilometer/pipeline.yaml b/etc/ceilometer/pipeline.yaml index 96e0f25b06..fa34f263a1 100644 --- a/etc/ceilometer/pipeline.yaml +++ b/etc/ceilometer/pipeline.yaml @@ -6,4 +6,4 @@ - "*" transformers: publishers: - - meter_publisher + - meter diff --git a/setup.py b/setup.py index fd7ce8576f..cf76c77b8c 100755 --- a/setup.py +++ b/setup.py @@ -140,7 +140,8 @@ setuptools.setup( accumulator = ceilometer.transformer.accumulator:TransformerAccumulator [ceilometer.publisher] - meter_publisher = ceilometer.publisher.meter_publish:MeterPublisher + meter_publisher = ceilometer.publisher.meter:MeterPublisher + meter = ceilometer.publisher.meter:MeterPublisher [paste.filter_factory] swift=ceilometer.objectstore.swift_middleware:filter_factory diff --git a/tests/api/v1/list_events.py b/tests/api/v1/list_events.py index 57a7448132..80967067e1 100644 --- a/tests/api/v1/list_events.py +++ b/tests/api/v1/list_events.py @@ -23,7 +23,7 @@ import datetime from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer.tests import api as tests_api @@ -71,9 +71,10 @@ class TestListEvents(tests_api.TestBase): 'tag': 'self.counter2'} ), ]: - msg = meter.meter_message_from_counter(cnt, - cfg.CONF.metering_secret, - 'source1') + msg = meter.meter_message_from_counter( + cnt, + cfg.CONF.publisher_meter.metering_secret, + 'source1') self.conn.record_metering_data(msg) def test_empty_project(self): diff --git a/tests/api/v1/list_meters.py b/tests/api/v1/list_meters.py index 3d44328d4c..8aa247aadf 100644 --- a/tests/api/v1/list_meters.py +++ b/tests/api/v1/list_meters.py @@ -24,7 +24,7 @@ import logging from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer.tests import api as tests_api @@ -100,9 +100,10 @@ class TestListMeters(tests_api.TestBase): timestamp=datetime.datetime(2012, 7, 2, 10, 43), resource_metadata={'display_name': 'test-server', 'tag': 'four.counter'})]: - msg = meter.meter_message_from_counter(cnt, - cfg.CONF.metering_secret, - 'test_list_resources') + msg = meter.meter_message_from_counter( + cnt, + cfg.CONF.publisher_meter.metering_secret, + 'test_list_resources') self.conn.record_metering_data(msg) def test_list_meters(self): diff --git a/tests/api/v1/list_projects.py b/tests/api/v1/list_projects.py index e3218cd22f..b6cc026f4f 100644 --- a/tests/api/v1/list_projects.py +++ b/tests/api/v1/list_projects.py @@ -24,7 +24,7 @@ import logging from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer.tests import api as tests_api @@ -55,10 +55,11 @@ class TestListProjects(tests_api.TestBase): resource_metadata={'display_name': 'test-server', 'tag': 'self.counter'} ) - msg = meter.meter_message_from_counter(counter1, - cfg.CONF.metering_secret, - 'test_list_projects', - ) + msg = meter.meter_message_from_counter( + counter1, + cfg.CONF.publisher_meter.metering_secret, + 'test_list_projects', + ) self.conn.record_metering_data(msg) counter2 = counter.Counter( @@ -73,10 +74,11 @@ class TestListProjects(tests_api.TestBase): resource_metadata={'display_name': 'test-server', 'tag': 'self.counter2'} ) - msg2 = meter.meter_message_from_counter(counter2, - cfg.CONF.metering_secret, - 'test_list_users', - ) + msg2 = meter.meter_message_from_counter( + counter2, + cfg.CONF.publisher_meter.metering_secret, + 'test_list_users', + ) self.conn.record_metering_data(msg2) def test_projects(self): diff --git a/tests/api/v1/list_resources.py b/tests/api/v1/list_resources.py index 73dc45bc07..57a3fbebc2 100644 --- a/tests/api/v1/list_resources.py +++ b/tests/api/v1/list_resources.py @@ -24,7 +24,7 @@ import logging from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer.tests import api as tests_api @@ -93,9 +93,10 @@ class TestListResourcesBase(tests_api.TestBase): resource_metadata={'display_name': 'test-server', 'tag': 'self.counter4'} )]: - msg = meter.meter_message_from_counter(cnt, - cfg.CONF.metering_secret, - 'test_list_resources') + msg = meter.meter_message_from_counter( + cnt, + cfg.CONF.publisher_meter.metering_secret, + 'test_list_resources') self.conn.record_metering_data(msg) diff --git a/tests/api/v1/list_users.py b/tests/api/v1/list_users.py index 1e1366108b..303d00622c 100644 --- a/tests/api/v1/list_users.py +++ b/tests/api/v1/list_users.py @@ -24,7 +24,7 @@ import logging from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer.tests import api as tests_api @@ -57,10 +57,11 @@ class TestListUsers(tests_api.TestBase): 'tag': 'self.counter', } ) - msg = meter.meter_message_from_counter(counter1, - cfg.CONF.metering_secret, - 'test_list_users', - ) + msg = meter.meter_message_from_counter( + counter1, + cfg.CONF.publisher_meter.metering_secret, + 'test_list_users', + ) self.conn.record_metering_data(msg) counter2 = counter.Counter( @@ -76,10 +77,11 @@ class TestListUsers(tests_api.TestBase): 'tag': 'self.counter2', } ) - msg2 = meter.meter_message_from_counter(counter2, - cfg.CONF.metering_secret, - 'not-test', - ) + msg2 = meter.meter_message_from_counter( + counter2, + cfg.CONF.publisher_meter.metering_secret, + 'not-test', + ) self.conn.record_metering_data(msg2) def test_users(self): diff --git a/tests/api/v1/max_project_volume.py b/tests/api/v1/max_project_volume.py index cc2c7a1a4a..27709b296d 100644 --- a/tests/api/v1/max_project_volume.py +++ b/tests/api/v1/max_project_volume.py @@ -23,7 +23,7 @@ import datetime from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer.tests import api as tests_api @@ -52,10 +52,11 @@ class TestMaxProjectVolume(tests_api.TestBase): } ) self.counters.append(c) - msg = meter.meter_message_from_counter(c, - cfg.CONF.metering_secret, - 'source1', - ) + msg = meter.meter_message_from_counter( + c, + cfg.CONF.publisher_meter.metering_secret, + 'source1', + ) self.conn.record_metering_data(msg) def test_no_time_bounds(self): diff --git a/tests/api/v1/max_resource_volume.py b/tests/api/v1/max_resource_volume.py index ddba198264..73b03e2a01 100644 --- a/tests/api/v1/max_resource_volume.py +++ b/tests/api/v1/max_resource_volume.py @@ -22,7 +22,7 @@ import datetime from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer.tests import api as tests_api @@ -51,10 +51,11 @@ class TestMaxResourceVolume(tests_api.TestBase): } ) self.counters.append(c) - msg = meter.meter_message_from_counter(c, - cfg.CONF.metering_secret, - 'source1', - ) + msg = meter.meter_message_from_counter( + c, + cfg.CONF.publisher_meter.metering_secret, + 'source1', + ) self.conn.record_metering_data(msg) def test_no_time_bounds(self): diff --git a/tests/api/v1/sum_project_volume.py b/tests/api/v1/sum_project_volume.py index fd043475fa..3d22cf9507 100644 --- a/tests/api/v1/sum_project_volume.py +++ b/tests/api/v1/sum_project_volume.py @@ -23,7 +23,7 @@ import datetime from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer.tests import api as tests_api @@ -52,10 +52,11 @@ class TestSumProjectVolume(tests_api.TestBase): } ) self.counters.append(c) - msg = meter.meter_message_from_counter(c, - cfg.CONF.metering_secret, - 'source1', - ) + msg = meter.meter_message_from_counter( + c, + cfg.CONF.publisher_meter.metering_secret, + 'source1', + ) self.conn.record_metering_data(msg) def test_no_time_bounds(self): diff --git a/tests/api/v1/sum_resource_volume.py b/tests/api/v1/sum_resource_volume.py index aee4242c65..99a159a300 100644 --- a/tests/api/v1/sum_resource_volume.py +++ b/tests/api/v1/sum_resource_volume.py @@ -23,7 +23,7 @@ import datetime from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer.tests import api as tests_api @@ -52,10 +52,11 @@ class TestSumResourceVolume(tests_api.TestBase): } ) self.counters.append(c) - msg = meter.meter_message_from_counter(c, - cfg.CONF.metering_secret, - 'source1', - ) + msg = meter.meter_message_from_counter( + c, + cfg.CONF.publisher_meter.metering_secret, + 'source1', + ) self.conn.record_metering_data(msg) def test_no_time_bounds(self): diff --git a/tests/api/v2/test_list_events.py b/tests/api/v2/test_list_events.py index d72acb83cd..ab36d4e6a3 100644 --- a/tests/api/v2/test_list_events.py +++ b/tests/api/v2/test_list_events.py @@ -23,7 +23,7 @@ import logging from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from .base import FunctionalTest @@ -50,10 +50,11 @@ class TestListEvents(FunctionalTest): 'ignored_list': ['not-returned'], } ) - msg = meter.meter_message_from_counter(self.counter1, - cfg.CONF.metering_secret, - 'test_source', - ) + msg = meter.meter_message_from_counter( + self.counter1, + cfg.CONF.publisher_meter.metering_secret, + 'test_source', + ) self.conn.record_metering_data(msg) self.counter2 = counter.Counter( @@ -69,10 +70,11 @@ class TestListEvents(FunctionalTest): 'tag': 'self.counter2', } ) - msg2 = meter.meter_message_from_counter(self.counter2, - cfg.CONF.metering_secret, - 'source2', - ) + msg2 = meter.meter_message_from_counter( + self.counter2, + cfg.CONF.publisher_meter.metering_secret, + 'source2', + ) self.conn.record_metering_data(msg2) def test_all(self): diff --git a/tests/api/v2/test_list_meters.py b/tests/api/v2/test_list_meters.py index 536ef8ce90..d88369aad0 100644 --- a/tests/api/v2/test_list_meters.py +++ b/tests/api/v2/test_list_meters.py @@ -23,7 +23,7 @@ import logging from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from .base import FunctionalTest @@ -99,9 +99,10 @@ class TestListMeters(FunctionalTest): timestamp=datetime.datetime(2012, 7, 2, 10, 43), resource_metadata={'display_name': 'test-server', 'tag': 'self.counter4'})]: - msg = meter.meter_message_from_counter(cnt, - cfg.CONF.metering_secret, - 'test_source') + msg = meter.meter_message_from_counter( + cnt, + cfg.CONF.publisher_meter.metering_secret, + 'test_source') self.conn.record_metering_data(msg) def test_list_meters(self): diff --git a/tests/api/v2/test_list_resources.py b/tests/api/v2/test_list_resources.py index bc97d8847d..73c629c56b 100644 --- a/tests/api/v2/test_list_resources.py +++ b/tests/api/v2/test_list_resources.py @@ -23,7 +23,7 @@ import logging from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from .base import FunctionalTest @@ -51,10 +51,11 @@ class TestListResources(FunctionalTest): timestamp=datetime.datetime(2012, 7, 2, 10, 40), resource_metadata=None ) - msg = meter.meter_message_from_counter(counter1, - cfg.CONF.metering_secret, - 'test', - ) + msg = meter.meter_message_from_counter( + counter1, + cfg.CONF.publisher_meter.metering_secret, + 'test', + ) self.conn.record_metering_data(msg) data = self.get_json('/resources') @@ -74,10 +75,11 @@ class TestListResources(FunctionalTest): 'tag': 'self.counter', } ) - msg = meter.meter_message_from_counter(counter1, - cfg.CONF.metering_secret, - 'test', - ) + msg = meter.meter_message_from_counter( + counter1, + cfg.CONF.publisher_meter.metering_secret, + 'test', + ) self.conn.record_metering_data(msg) counter2 = counter.Counter( @@ -93,10 +95,11 @@ class TestListResources(FunctionalTest): 'tag': 'self.counter2', } ) - msg2 = meter.meter_message_from_counter(counter2, - cfg.CONF.metering_secret, - 'test', - ) + msg2 = meter.meter_message_from_counter( + counter2, + cfg.CONF.publisher_meter.metering_secret, + 'test', + ) self.conn.record_metering_data(msg2) data = self.get_json('/resources') @@ -116,10 +119,11 @@ class TestListResources(FunctionalTest): 'tag': 'self.counter', } ) - msg = meter.meter_message_from_counter(counter1, - cfg.CONF.metering_secret, - 'test', - ) + msg = meter.meter_message_from_counter( + counter1, + cfg.CONF.publisher_meter.metering_secret, + 'test', + ) self.conn.record_metering_data(msg) counter2 = counter.Counter( @@ -135,10 +139,11 @@ class TestListResources(FunctionalTest): 'tag': 'self.counter2', } ) - msg2 = meter.meter_message_from_counter(counter2, - cfg.CONF.metering_secret, - 'test', - ) + msg2 = meter.meter_message_from_counter( + counter2, + cfg.CONF.publisher_meter.metering_secret, + 'test', + ) self.conn.record_metering_data(msg2) data = self.get_json('/resources/resource-id') @@ -158,10 +163,11 @@ class TestListResources(FunctionalTest): 'tag': 'self.counter', } ) - msg = meter.meter_message_from_counter(counter1, - cfg.CONF.metering_secret, - 'test_list_resources', - ) + msg = meter.meter_message_from_counter( + counter1, + cfg.CONF.publisher_meter.metering_secret, + 'test_list_resources', + ) self.conn.record_metering_data(msg) counter2 = counter.Counter( @@ -177,10 +183,11 @@ class TestListResources(FunctionalTest): 'tag': 'self.counter2', } ) - msg2 = meter.meter_message_from_counter(counter2, - cfg.CONF.metering_secret, - 'not-test', - ) + msg2 = meter.meter_message_from_counter( + counter2, + cfg.CONF.publisher_meter.metering_secret, + 'not-test', + ) self.conn.record_metering_data(msg2) data = self.get_json('/resources', q=[{'field': 'source', @@ -203,10 +210,11 @@ class TestListResources(FunctionalTest): 'tag': 'self.counter', } ) - msg = meter.meter_message_from_counter(counter1, - cfg.CONF.metering_secret, - 'test_list_resources', - ) + msg = meter.meter_message_from_counter( + counter1, + cfg.CONF.publisher_meter.metering_secret, + 'test_list_resources', + ) self.conn.record_metering_data(msg) counter2 = counter.Counter( @@ -222,10 +230,11 @@ class TestListResources(FunctionalTest): 'tag': 'self.counter2', } ) - msg2 = meter.meter_message_from_counter(counter2, - cfg.CONF.metering_secret, - 'not-test', - ) + msg2 = meter.meter_message_from_counter( + counter2, + cfg.CONF.publisher_meter.metering_secret, + 'not-test', + ) self.conn.record_metering_data(msg2) data = self.get_json('/resources', q=[{'field': 'user_id', @@ -248,10 +257,11 @@ class TestListResources(FunctionalTest): 'tag': 'self.counter', } ) - msg = meter.meter_message_from_counter(counter1, - cfg.CONF.metering_secret, - 'test_list_resources', - ) + msg = meter.meter_message_from_counter( + counter1, + cfg.CONF.publisher_meter.metering_secret, + 'test_list_resources', + ) self.conn.record_metering_data(msg) counter2 = counter.Counter( @@ -267,10 +277,11 @@ class TestListResources(FunctionalTest): 'tag': 'self.counter2', } ) - msg2 = meter.meter_message_from_counter(counter2, - cfg.CONF.metering_secret, - 'not-test', - ) + msg2 = meter.meter_message_from_counter( + counter2, + cfg.CONF.publisher_meter.metering_secret, + 'not-test', + ) self.conn.record_metering_data(msg2) data = self.get_json('/resources', q=[{'field': 'project_id', @@ -295,10 +306,11 @@ class TestListResources(FunctionalTest): 'ignored_list': ['not-returned'], } ) - msg = meter.meter_message_from_counter(counter1, - cfg.CONF.metering_secret, - 'test', - ) + msg = meter.meter_message_from_counter( + counter1, + cfg.CONF.publisher_meter.metering_secret, + 'test', + ) self.conn.record_metering_data(msg) data = self.get_json('/resources') @@ -323,10 +335,11 @@ class TestListResources(FunctionalTest): 'tag': 'self.counter', } ) - msg = meter.meter_message_from_counter(counter1, - cfg.CONF.metering_secret, - 'test_list_resources', - ) + msg = meter.meter_message_from_counter( + counter1, + cfg.CONF.publisher_meter.metering_secret, + 'test_list_resources', + ) self.conn.record_metering_data(msg) data = self.get_json('/resources') diff --git a/tests/api/v2/test_max_project_volume.py b/tests/api/v2/test_max_project_volume.py index f7f9d7911f..ed1f7694f3 100644 --- a/tests/api/v2/test_max_project_volume.py +++ b/tests/api/v2/test_max_project_volume.py @@ -22,7 +22,7 @@ import datetime from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer.storage.impl_mongodb import require_map_reduce @@ -54,10 +54,11 @@ class TestMaxProjectVolume(FunctionalTest): } ) self.counters.append(c) - msg = meter.meter_message_from_counter(c, - cfg.CONF.metering_secret, - 'source1', - ) + msg = meter.meter_message_from_counter( + c, + cfg.CONF.publisher_meter.metering_secret, + 'source1', + ) self.conn.record_metering_data(msg) def test_no_time_bounds(self): diff --git a/tests/api/v2/test_max_resource_volume.py b/tests/api/v2/test_max_resource_volume.py index 34d327d460..bd15a7c661 100644 --- a/tests/api/v2/test_max_resource_volume.py +++ b/tests/api/v2/test_max_resource_volume.py @@ -22,7 +22,7 @@ import datetime from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from .base import FunctionalTest @@ -53,10 +53,11 @@ class TestMaxResourceVolume(FunctionalTest): } ) self.counters.append(c) - msg = meter.meter_message_from_counter(c, - cfg.CONF.metering_secret, - 'source1', - ) + msg = meter.meter_message_from_counter( + c, + cfg.CONF.publisher_meter.metering_secret, + 'source1', + ) self.conn.record_metering_data(msg) def test_no_time_bounds(self): diff --git a/tests/api/v2/test_sum_project_volume.py b/tests/api/v2/test_sum_project_volume.py index 9d3fabf5a7..9d86d9cb70 100644 --- a/tests/api/v2/test_sum_project_volume.py +++ b/tests/api/v2/test_sum_project_volume.py @@ -22,7 +22,7 @@ import datetime from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from .base import FunctionalTest @@ -53,10 +53,11 @@ class TestSumProjectVolume(FunctionalTest): } ) self.counters.append(c) - msg = meter.meter_message_from_counter(c, - cfg.CONF.metering_secret, - 'source1', - ) + msg = meter.meter_message_from_counter( + c, + cfg.CONF.publisher_meter.metering_secret, + 'source1', + ) self.conn.record_metering_data(msg) def test_no_time_bounds(self): diff --git a/tests/api/v2/test_sum_resource_volume.py b/tests/api/v2/test_sum_resource_volume.py index 60171b1947..b4737dd5eb 100644 --- a/tests/api/v2/test_sum_resource_volume.py +++ b/tests/api/v2/test_sum_resource_volume.py @@ -22,7 +22,7 @@ import datetime from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from .base import FunctionalTest @@ -53,10 +53,11 @@ class TestSumResourceVolume(FunctionalTest): } ) self.counters.append(c) - msg = meter.meter_message_from_counter(c, - cfg.CONF.metering_secret, - 'source1', - ) + msg = meter.meter_message_from_counter( + c, + cfg.CONF.publisher_meter.metering_secret, + 'source1', + ) self.conn.record_metering_data(msg) def test_no_time_bounds(self): diff --git a/tests/collector/test_manager.py b/tests/collector/test_manager.py index 88b308ed69..9e455f916f 100644 --- a/tests/collector/test_manager.py +++ b/tests/collector/test_manager.py @@ -26,7 +26,7 @@ from oslo.config import cfg from stevedore import extension from stevedore.tests import manager as test_manager -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer.collector import service from ceilometer.storage import base from ceilometer.tests import base as tests_base @@ -89,7 +89,7 @@ class TestCollectorService(tests_base.TestCase): super(TestCollectorService, self).setUp() self.srv = service.CollectorService('the-host', 'the-topic') self.ctx = None - #cfg.CONF.metering_secret = 'not-so-secret' + #cfg.CONF.publisher_meter.metering_secret = 'not-so-secret' @patch('ceilometer.pipeline.setup_pipeline', MagicMock()) def test_init_host(self): @@ -107,7 +107,7 @@ class TestCollectorService(tests_base.TestCase): } msg['message_signature'] = meter.compute_signature( msg, - cfg.CONF.metering_secret, + cfg.CONF.publisher_meter.metering_secret, ) self.srv.storage_conn = self.mox.CreateMock(base.Connection) @@ -146,7 +146,7 @@ class TestCollectorService(tests_base.TestCase): } msg['message_signature'] = meter.compute_signature( msg, - cfg.CONF.metering_secret, + cfg.CONF.publisher_meter.metering_secret, ) expected = {} @@ -168,7 +168,7 @@ class TestCollectorService(tests_base.TestCase): } msg['message_signature'] = meter.compute_signature( msg, - cfg.CONF.metering_secret, + cfg.CONF.publisher_meter.metering_secret, ) expected = {} diff --git a/tests/collector/test_meter.py b/tests/collector/test_meter.py deleted file mode 100644 index a1314062cd..0000000000 --- a/tests/collector/test_meter.py +++ /dev/null @@ -1,184 +0,0 @@ -# -*- encoding: utf-8 -*- -# -# Copyright © 2012 New Dream Network, LLC (DreamHost) -# -# Author: Doug Hellmann -# -# 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. -"""Tests for ceilometer.meter -""" - -from ceilometer.collector import meter -from ceilometer import counter -from ceilometer.openstack.common import jsonutils - - -def test_compute_signature_change_key(): - sig1 = meter.compute_signature({'a': 'A', 'b': 'B'}, 'not-so-secret') - sig2 = meter.compute_signature({'A': 'A', 'b': 'B'}, 'not-so-secret') - assert sig1 != sig2 - - -def test_compute_signature_change_value(): - sig1 = meter.compute_signature({'a': 'A', 'b': 'B'}, 'not-so-secret') - sig2 = meter.compute_signature({'a': 'a', 'b': 'B'}, 'not-so-secret') - assert sig1 != sig2 - - -def test_compute_signature_same(): - sig1 = meter.compute_signature({'a': 'A', 'b': 'B'}, 'not-so-secret') - sig2 = meter.compute_signature({'a': 'A', 'b': 'B'}, 'not-so-secret') - assert sig1 == sig2 - - -def test_compute_signature_signed(): - data = {'a': 'A', 'b': 'B'} - sig1 = meter.compute_signature(data, 'not-so-secret') - data['message_signature'] = sig1 - sig2 = meter.compute_signature(data, 'not-so-secret') - assert sig1 == sig2 - - -def test_compute_signature_use_configured_secret(): - data = {'a': 'A', 'b': 'B'} - sig1 = meter.compute_signature(data, 'not-so-secret') - sig2 = meter.compute_signature(data, 'different-value') - assert sig1 != sig2 - - -def test_verify_signature_signed(): - data = {'a': 'A', 'b': 'B'} - sig1 = meter.compute_signature(data, 'not-so-secret') - data['message_signature'] = sig1 - assert meter.verify_signature(data, 'not-so-secret') - - -def test_verify_signature_unsigned(): - data = {'a': 'A', 'b': 'B'} - assert not meter.verify_signature(data, 'not-so-secret') - - -def test_verify_signature_incorrect(): - data = {'a': 'A', 'b': 'B', - 'message_signature': 'Not the same'} - assert not meter.verify_signature(data, 'not-so-secret') - - -def test_recursive_keypairs(): - data = {'a': 'A', - 'b': 'B', - 'nested': {'a': 'A', - 'b': 'B', - }, - } - pairs = list(meter.recursive_keypairs(data)) - assert pairs == [('a', 'A'), - ('b', 'B'), - ('nested:a', 'A'), - ('nested:b', 'B'), - ] - - -def test_verify_signature_nested(): - data = {'a': 'A', - 'b': 'B', - 'nested': {'a': 'A', - 'b': 'B', - }, - } - data['message_signature'] = meter.compute_signature(data, 'not-so-secret') - assert meter.verify_signature(data, 'not-so-secret') - - -def test_verify_signature_nested_json(): - data = {'a': 'A', - 'b': 'B', - 'nested': {'a': 'A', - 'b': 'B', - 'c': ('c',), - 'd': ['d'] - }, - } - data['message_signature'] = meter.compute_signature(data, 'not-so-secret') - jsondata = jsonutils.loads(jsonutils.dumps(data)) - assert meter.verify_signature(jsondata, 'not-so-secret') - - -TEST_COUNTER = counter.Counter(name='name', - type='typ', - unit='', - volume=1, - user_id='user', - project_id='project', - resource_id=2, - timestamp='today', - resource_metadata={'key': 'value'}, - ) - -TEST_NOTICE = { - u'_context_auth_token': u'3d8b13de1b7d499587dfc69b77dc09c2', - u'_context_is_admin': True, - u'_context_project_id': u'7c150a59fe714e6f9263774af9688f0e', - u'_context_quota_class': None, - u'_context_read_deleted': u'no', - u'_context_remote_address': u'10.0.2.15', - u'_context_request_id': u'req-d68b36e0-9233-467f-9afb-d81435d64d66', - u'_context_roles': [u'admin'], - u'_context_timestamp': u'2012-05-08T20:23:41.425105', - u'_context_user_id': u'1e3ce043029547f1a61c1996d1a531a2', - u'event_type': u'compute.instance.create.end', - u'message_id': u'dae6f69c-00e0-41c0-b371-41ec3b7f4451', - u'payload': {u'created_at': u'2012-05-08 20:23:41', - u'deleted_at': u'', - u'disk_gb': 0, - u'display_name': u'testme', - u'fixed_ips': [{u'address': u'10.0.0.2', - u'floating_ips': [], - u'meta': {}, - u'type': u'fixed', - u'version': 4}], - u'image_ref_url': u'http://10.0.2.15:9292/images/UUID', - u'instance_id': u'9f9d01b9-4a58-4271-9e27-398b21ab20d1', - u'instance_type': u'm1.tiny', - u'instance_type_id': 2, - u'launched_at': u'2012-05-08 20:23:47.985999', - u'memory_mb': 512, - u'state': u'active', - u'state_description': u'', - u'tenant_id': u'7c150a59fe714e6f9263774af9688f0e', - u'user_id': u'1e3ce043029547f1a61c1996d1a531a2'}, - u'priority': u'INFO', - u'publisher_id': u'compute.vagrant-precise', - u'timestamp': u'2012-05-08 20:23:48.028195', -} - - -def test_meter_message_from_counter_signed(): - msg = meter.meter_message_from_counter(TEST_COUNTER, 'not-so-secret', - 'src') - assert 'message_signature' in msg - - -def test_meter_message_from_counter_field(): - def compare(f, c, msg_f, msg): - assert msg == c - msg = meter.meter_message_from_counter(TEST_COUNTER, 'not-so-secret', - 'src') - name_map = {'name': 'counter_name', - 'type': 'counter_type', - 'unit': 'counter_unit', - 'volume': 'counter_volume', - } - for f in TEST_COUNTER._fields: - msg_f = name_map.get(f, f) - yield compare, f, getattr(TEST_COUNTER, f), msg_f, msg[msg_f] diff --git a/tests/publisher/test_meter_publisher.py b/tests/publisher/test_meter_publisher.py index 0afd81c73f..574e1f8050 100644 --- a/tests/publisher/test_meter_publisher.py +++ b/tests/publisher/test_meter_publisher.py @@ -22,11 +22,185 @@ import datetime from oslo.config import cfg +from ceilometer import counter +from ceilometer.openstack.common import jsonutils from ceilometer.openstack.common import rpc +from ceilometer.publisher import meter from ceilometer.tests import base -from ceilometer import counter -from ceilometer.publisher import meter_publish + +def test_compute_signature_change_key(): + sig1 = meter.compute_signature({'a': 'A', 'b': 'B'}, + 'not-so-secret') + sig2 = meter.compute_signature({'A': 'A', 'b': 'B'}, + 'not-so-secret') + assert sig1 != sig2 + + +def test_compute_signature_change_value(): + sig1 = meter.compute_signature({'a': 'A', 'b': 'B'}, + 'not-so-secret') + sig2 = meter.compute_signature({'a': 'a', 'b': 'B'}, + 'not-so-secret') + assert sig1 != sig2 + + +def test_compute_signature_same(): + sig1 = meter.compute_signature({'a': 'A', 'b': 'B'}, + 'not-so-secret') + sig2 = meter.compute_signature({'a': 'A', 'b': 'B'}, + 'not-so-secret') + assert sig1 == sig2 + + +def test_compute_signature_signed(): + data = {'a': 'A', 'b': 'B'} + sig1 = meter.compute_signature(data, 'not-so-secret') + data['message_signature'] = sig1 + sig2 = meter.compute_signature(data, 'not-so-secret') + assert sig1 == sig2 + + +def test_compute_signature_use_configured_secret(): + data = {'a': 'A', 'b': 'B'} + sig1 = meter.compute_signature(data, 'not-so-secret') + sig2 = meter.compute_signature(data, 'different-value') + assert sig1 != sig2 + + +def test_verify_signature_signed(): + data = {'a': 'A', 'b': 'B'} + sig1 = meter.compute_signature(data, 'not-so-secret') + data['message_signature'] = sig1 + assert meter.verify_signature(data, 'not-so-secret') + + +def test_verify_signature_unsigned(): + data = {'a': 'A', 'b': 'B'} + assert not meter.verify_signature(data, 'not-so-secret') + + +def test_verify_signature_incorrect(): + data = {'a': 'A', 'b': 'B', + 'message_signature': 'Not the same'} + assert not meter.verify_signature(data, 'not-so-secret') + + +def test_recursive_keypairs(): + data = {'a': 'A', + 'b': 'B', + 'nested': {'a': 'A', + 'b': 'B', + }, + } + pairs = list(meter.recursive_keypairs(data)) + assert pairs == [('a', 'A'), + ('b', 'B'), + ('nested:a', 'A'), + ('nested:b', 'B'), + ] + + +def test_verify_signature_nested(): + data = {'a': 'A', + 'b': 'B', + 'nested': {'a': 'A', + 'b': 'B', + }, + } + data['message_signature'] = meter.compute_signature( + data, + 'not-so-secret') + assert meter.verify_signature(data, 'not-so-secret') + + +def test_verify_signature_nested_json(): + data = {'a': 'A', + 'b': 'B', + 'nested': {'a': 'A', + 'b': 'B', + 'c': ('c',), + 'd': ['d'] + }, + } + data['message_signature'] = meter.compute_signature( + data, + 'not-so-secret') + jsondata = jsonutils.loads(jsonutils.dumps(data)) + assert meter.verify_signature(jsondata, 'not-so-secret') + + +TEST_COUNTER = counter.Counter(name='name', + type='typ', + unit='', + volume=1, + user_id='user', + project_id='project', + resource_id=2, + timestamp='today', + resource_metadata={'key': 'value'}, + ) + +TEST_NOTICE = { + u'_context_auth_token': u'3d8b13de1b7d499587dfc69b77dc09c2', + u'_context_is_admin': True, + u'_context_project_id': u'7c150a59fe714e6f9263774af9688f0e', + u'_context_quota_class': None, + u'_context_read_deleted': u'no', + u'_context_remote_address': u'10.0.2.15', + u'_context_request_id': u'req-d68b36e0-9233-467f-9afb-d81435d64d66', + u'_context_roles': [u'admin'], + u'_context_timestamp': u'2012-05-08T20:23:41.425105', + u'_context_user_id': u'1e3ce043029547f1a61c1996d1a531a2', + u'event_type': u'compute.instance.create.end', + u'message_id': u'dae6f69c-00e0-41c0-b371-41ec3b7f4451', + u'payload': {u'created_at': u'2012-05-08 20:23:41', + u'deleted_at': u'', + u'disk_gb': 0, + u'display_name': u'testme', + u'fixed_ips': [{u'address': u'10.0.0.2', + u'floating_ips': [], + u'meta': {}, + u'type': u'fixed', + u'version': 4}], + u'image_ref_url': u'http://10.0.2.15:9292/images/UUID', + u'instance_id': u'9f9d01b9-4a58-4271-9e27-398b21ab20d1', + u'instance_type': u'm1.tiny', + u'instance_type_id': 2, + u'launched_at': u'2012-05-08 20:23:47.985999', + u'memory_mb': 512, + u'state': u'active', + u'state_description': u'', + u'tenant_id': u'7c150a59fe714e6f9263774af9688f0e', + u'user_id': u'1e3ce043029547f1a61c1996d1a531a2'}, + u'priority': u'INFO', + u'publisher_id': u'compute.vagrant-precise', + u'timestamp': u'2012-05-08 20:23:48.028195', +} + + +def test_meter_message_from_counter_signed(): + msg = meter.meter_message_from_counter( + TEST_COUNTER, + 'not-so-secret', + 'src') + assert 'message_signature' in msg + + +def test_meter_message_from_counter_field(): + def compare(f, c, msg_f, msg): + assert msg == c + msg = meter.meter_message_from_counter( + TEST_COUNTER, 'not-so-secret', + 'src') + name_map = {'name': 'counter_name', + 'type': 'counter_type', + 'unit': 'counter_unit', + 'volume': 'counter_volume', + } + for f in TEST_COUNTER._fields: + msg_f = name_map.get(f, f) + yield compare, f, getattr(TEST_COUNTER, f), msg_f, msg[msg_f] class TestPublish(base.TestCase): @@ -96,7 +270,7 @@ class TestPublish(base.TestCase): super(TestPublish, self).setUp() self.published = [] self.stubs.Set(rpc, 'cast', self.faux_cast) - publisher = meter_publish.MeterPublisher() + publisher = meter.MeterPublisher() publisher.publish_counters(None, self.test_data, 'test') @@ -106,7 +280,7 @@ class TestPublish(base.TestCase): for topic, rpc_call in self.published: meters = rpc_call['args']['data'] self.assertIsInstance(meters, list) - if topic != cfg.CONF.metering_topic: + if topic != cfg.CONF.publisher_meter.metering_topic: self.assertEqual(len(set(meter['counter_name'] for meter in meters)), 1, @@ -114,7 +288,10 @@ class TestPublish(base.TestCase): def test_published_topics(self): topics = [topic for topic, meter in self.published] - self.assertIn(cfg.CONF.metering_topic, topics) - self.assertIn(cfg.CONF.metering_topic + '.' + 'test', topics) - self.assertIn(cfg.CONF.metering_topic + '.' + 'test2', topics) - self.assertIn(cfg.CONF.metering_topic + '.' + 'test3', topics) + self.assertIn(cfg.CONF.publisher_meter.metering_topic, topics) + self.assertIn( + cfg.CONF.publisher_meter.metering_topic + '.' + 'test', topics) + self.assertIn( + cfg.CONF.publisher_meter.metering_topic + '.' + 'test2', topics) + self.assertIn( + cfg.CONF.publisher_meter.metering_topic + '.' + 'test3', topics) diff --git a/tests/storage/base.py b/tests/storage/base.py index 574a9bb8cb..f6d662f55a 100644 --- a/tests/storage/base.py +++ b/tests/storage/base.py @@ -25,7 +25,7 @@ import datetime from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer import storage from ceilometer.tests import db as test_db @@ -54,10 +54,11 @@ class DBTestBase(test_db.TestBase): 'tag': 'self.counter', } ) - self.msg1 = meter.meter_message_from_counter(self.counter, - cfg.CONF.metering_secret, - 'test-1', - ) + self.msg1 = meter.meter_message_from_counter( + self.counter, + cfg.CONF.publisher_meter.metering_secret, + 'test-1', + ) self.conn.record_metering_data(self.msg1) self.msgs.append(self.msg1) @@ -74,10 +75,11 @@ class DBTestBase(test_db.TestBase): 'tag': 'self.counter2', } ) - self.msg2 = meter.meter_message_from_counter(self.counter2, - cfg.CONF.metering_secret, - 'test-2', - ) + self.msg2 = meter.meter_message_from_counter( + self.counter2, + cfg.CONF.publisher_meter.metering_secret, + 'test-2', + ) self.conn.record_metering_data(self.msg2) self.msgs.append(self.msg2) @@ -94,10 +96,11 @@ class DBTestBase(test_db.TestBase): 'tag': 'self.counter3', } ) - self.msg3 = meter.meter_message_from_counter(self.counter3, - cfg.CONF.metering_secret, - 'test-3', - ) + self.msg3 = meter.meter_message_from_counter( + self.counter3, + cfg.CONF.publisher_meter.metering_secret, + 'test-3', + ) self.conn.record_metering_data(self.msg3) self.msgs.append(self.msg3) @@ -114,8 +117,11 @@ class DBTestBase(test_db.TestBase): resource_metadata={'display_name': 'test-server', 'tag': 'counter-%s' % i}, ) - msg = meter.meter_message_from_counter(c, cfg.CONF.metering_secret, - 'test') + msg = meter.meter_message_from_counter( + c, + cfg.CONF.publisher_meter.metering_secret, + 'test', + ) self.conn.record_metering_data(msg) self.msgs.append(msg) @@ -359,10 +365,11 @@ class StatisticsTest(DBTestBase): } ) self.counters.append(c) - msg = meter.meter_message_from_counter(c, - secret='not-so-secret', - source='test', - ) + msg = meter.meter_message_from_counter( + c, + secret='not-so-secret', + source='test', + ) self.conn.record_metering_data(msg) for i in range(3): c = counter.Counter( @@ -379,10 +386,11 @@ class StatisticsTest(DBTestBase): } ) self.counters.append(c) - msg = meter.meter_message_from_counter(c, - secret='not-so-secret', - source='test', - ) + msg = meter.meter_message_from_counter( + c, + secret='not-so-secret', + source='test', + ) self.conn.record_metering_data(msg) def test_by_user(self): @@ -522,7 +530,7 @@ class CounterDataTypeTest(DBTestBase): ) msg = meter.meter_message_from_counter( c, - cfg.CONF.metering_secret, + cfg.CONF.publisher_meter.metering_secret, 'test-1', ) @@ -541,7 +549,7 @@ class CounterDataTypeTest(DBTestBase): ) msg = meter.meter_message_from_counter( c, - cfg.CONF.metering_secret, + cfg.CONF.publisher_meter.metering_secret, 'test-1', ) self.conn.record_metering_data(msg) @@ -559,7 +567,7 @@ class CounterDataTypeTest(DBTestBase): ) msg = meter.meter_message_from_counter( c, - cfg.CONF.metering_secret, + cfg.CONF.publisher_meter.metering_secret, 'test-1', ) self.conn.record_metering_data(msg) diff --git a/tests/storage/test_impl_mongodb.py b/tests/storage/test_impl_mongodb.py index 6b853cb0f7..9bf388f694 100644 --- a/tests/storage/test_impl_mongodb.py +++ b/tests/storage/test_impl_mongodb.py @@ -51,7 +51,7 @@ import datetime from tests.storage import base -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer.storage.impl_mongodb import require_map_reduce @@ -158,9 +158,10 @@ class CompatibilityTest(MongoDBEngineTestBase): } ) self.counters.append(c) - msg = meter.meter_message_from_counter(c, - secret='not-so-secret', - source='test') + msg = meter.meter_message_from_counter( + c, + secret='not-so-secret', + source='test') self.conn.record_metering_data(self.conn, msg) def test_counter_unit(self): diff --git a/tools/make_test_data.py b/tools/make_test_data.py index 0b01ae3224..d8ec483b7d 100755 --- a/tools/make_test_data.py +++ b/tools/make_test_data.py @@ -27,7 +27,7 @@ import sys from oslo.config import cfg -from ceilometer.collector import meter +from ceilometer.publisher import meter from ceilometer import counter from ceilometer import storage from ceilometer.openstack.common import timeutils @@ -129,9 +129,10 @@ def main(): timestamp=timestamp, resource_metadata={}, ) - data = meter.meter_message_from_counter(c, - cfg.CONF.metering_secret, - 'artificial') + data = meter.meter_message_from_counter( + c, + cfg.CONF.publisher_meter.metering_secret, + 'artificial') conn.record_metering_data(data) n += 1 timestamp = timestamp + increment