Support same projects in different domain

Getting 500 error when there are same project name
in different domain.
Selecting one domain from service_credentials.
e.g. services(or service) projects are in default and service_domain
having differrent id. so this selects default's services project
instead of service_domain's services project

Closes-Bug: #1776375
Change-Id: Ibb79423a06062f2e00785c30f54e7ac2a41a4705
This commit is contained in:
Seyeong Kim 2018-06-12 01:45:53 +09:00
parent 08075d07aa
commit 471437e455
2 changed files with 12 additions and 1 deletions

View File

@ -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

View File

@ -2370,6 +2370,9 @@ class TestAlarmsRuleGnocchi(TestAlarmsBase):
]}
ks_client = mock.Mock()
ks_client.domains.list.return_value = [mock.Mock(
id='<my-uuid>',
name='Default')]
ks_client.projects.find.return_value = mock.Mock(id='<my-uuid>')
get_client.return_value = ks_client