diff --git a/aodh/api/controllers/v2/alarm_rules/gnocchi.py b/aodh/api/controllers/v2/alarm_rules/gnocchi.py index fafdc02bb..e2b5be52c 100644 --- a/aodh/api/controllers/v2/alarm_rules/gnocchi.py +++ b/aodh/api/controllers/v2/alarm_rules/gnocchi.py @@ -34,6 +34,10 @@ GNOCCHI_OPTS = [ default="service", help='Project name of resources creator in Gnocchi. ' '(For example the Ceilometer project name'), + cfg.StrOpt('gnocchi_external_domain_name', + default="Default", + help='Domain name of resources creator in Gnocchi. ' + '(For example, default or service_domain'), ] @@ -139,8 +143,12 @@ class AggregationMetricByResourcesLookupRule(AlarmGnocchiThresholdRule): def get_external_project_owner(): kc = keystone_client.get_client(pecan.request.cfg) project_name = pecan.request.cfg.api.gnocchi_external_project_owner + domain_name = pecan.request.cfg.api.gnocchi_external_domain_name + domains = kc.domains.list(name=domain_name) try: - project = kc.projects.find(name=project_name) + project = kc.projects.find( + name=project_name, + domain_id=domains[0].id) return project.id except ka_exceptions.NotFound: return None diff --git a/aodh/tests/functional/api/v2/test_alarm_scenarios.py b/aodh/tests/functional/api/v2/test_alarm_scenarios.py index 02c04c869..1bbf6d54f 100644 --- a/aodh/tests/functional/api/v2/test_alarm_scenarios.py +++ b/aodh/tests/functional/api/v2/test_alarm_scenarios.py @@ -2370,6 +2370,9 @@ class TestAlarmsRuleGnocchi(TestAlarmsBase): ]} ks_client = mock.Mock() + ks_client.domains.list.return_value = [mock.Mock( + id='', + name='Default')] ks_client.projects.find.return_value = mock.Mock(id='') get_client.return_value = ks_client