diff --git a/hooks/nova_cc_utils.py b/hooks/nova_cc_utils.py index c2fad786..dec2633d 100644 --- a/hooks/nova_cc_utils.py +++ b/hooks/nova_cc_utils.py @@ -1256,7 +1256,7 @@ def service_guard(guard_map, contexts, active=False): _contexts = contexts incomplete_services = [] for svc in _guard_map: - for interface in guard_map[svc]: + for interface in _guard_map[svc]: if interface not in _contexts.complete_contexts(): incomplete_services.append(svc) ret = f(*args, **kwargs) diff --git a/unit_tests/test_nova_cc_utils.py b/unit_tests/test_nova_cc_utils.py index 06c92d05..a4954781 100644 --- a/unit_tests/test_nova_cc_utils.py +++ b/unit_tests/test_nova_cc_utils.py @@ -1062,6 +1062,69 @@ class NovaCCUtilsTests(CharmTestCase): self.assertFalse(self.service_stop.called) self.assertTrue(_mc.called) + def test_service_guard_active_with_guardmap_function_object(self): + class MockContext(object): + called = False + + def complete_contexts(self): + self.called = True + return ['interfacea', 'interfaceb'] + + _mc = MockContext() + + def guard_map(): + return {'test': ['interfacea', 'interfaceb']} + + @utils.service_guard(guard_map, _mc, True) + def dummy_func(): + pass + + dummy_func() + self.assertFalse(self.service_running.called) + self.assertFalse(self.service_stop.called) + self.assertTrue(_mc.called) + + def test_service_guard_active_with_contexts_function_object(self): + class MockContext(object): + called = False + + def complete_contexts(self): + self.called = True + return ['interfacea', 'interfaceb'] + + _mc = MockContext() + + def lmc(): + return _mc + + @utils.service_guard({'test': ['interfacea', 'interfaceb']}, lmc, True) + def dummy_func(): + pass + + dummy_func() + self.assertFalse(self.service_running.called) + self.assertFalse(self.service_stop.called) + self.assertTrue(_mc.called) + + def test_service_guard_active_with_active_function_object(self): + class MockContext(object): + called = False + + def complete_contexts(self): + self.called = True + return ['interfacea', 'interfaceb'] + + _mc = MockContext() + + @utils.service_guard({'test': ['interfacea', 'interfaceb']}, + _mc, lambda: False) + def dummy_func(): + pass + + dummy_func() + self.assertFalse(self.service_running.called) + self.assertFalse(_mc.called) + def helper_test_is_api_ready(self, tgt): fake_config = MagicMock() with patch('charmhelpers.contrib.openstack.utils.'