From 688b3794d2746d1c313119458d8548c1ef777aa4 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 27 Nov 2014 16:16:03 +0900 Subject: [PATCH] MeteringPluginRpc: Fix crash in periodic_task Restore __init__ chain which has been broken by commit bdcc5a46d7776f50d5ae372798a913349629d2f6 . Closes-Bug: #1396893 Change-Id: Ia1f0357b6726ac79a22ed1666eecebac33689aa1 --- neutron/services/metering/agents/metering_agent.py | 5 +++++ neutron/tests/unit/services/metering/test_metering_agent.py | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/neutron/services/metering/agents/metering_agent.py b/neutron/services/metering/agents/metering_agent.py index 21f5c6e70..d86bbceaa 100644 --- a/neutron/services/metering/agents/metering_agent.py +++ b/neutron/services/metering/agents/metering_agent.py @@ -45,6 +45,11 @@ LOG = logging.getLogger(__name__) class MeteringPluginRpc(object): def __init__(self, host): + # NOTE(yamamoto): super.__init__() call here is not only for + # aesthetics. Because of multiple inheritances in MeteringAgent, + # it's actually necessary to initialize parent classes of + # manager.Manager correctly. + super(MeteringPluginRpc, self).__init__() target = messaging.Target(topic=topics.METERING_PLUGIN, version='1.0') self.client = n_rpc.get_client(target) diff --git a/neutron/tests/unit/services/metering/test_metering_agent.py b/neutron/tests/unit/services/metering/test_metering_agent.py index aee7f2c0c..74bdfbac9 100644 --- a/neutron/tests/unit/services/metering/test_metering_agent.py +++ b/neutron/tests/unit/services/metering/test_metering_agent.py @@ -158,3 +158,9 @@ class TestMeteringDriver(base.BaseTestCase): {'driver': self.noop_driver, 'func': 'add_metering_label'}) + + def test_init_chain(self): + with mock.patch('neutron.openstack.common.' + 'periodic_task.PeriodicTasks.__init__') as init: + metering_agent.MeteringAgent('my agent', cfg.CONF) + init.assert_called_once_with() -- 2.45.2