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 Change-Id: I3f12811684a49794bca87c4a10b18d45879da773 Closes-Bug: #1776375
This commit is contained in:
parent
75d7aff659
commit
e923493e4f
|
@ -20,6 +20,7 @@ from gnocchiclient import client
|
|||
from gnocchiclient import exceptions
|
||||
from keystoneauth1 import exceptions as ka_exceptions
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log
|
||||
import pecan
|
||||
import wsme
|
||||
from wsme import types as wtypes
|
||||
|
@ -28,12 +29,17 @@ from aodh.api.controllers.v2 import base
|
|||
from aodh.api.controllers.v2 import utils as v2_utils
|
||||
from aodh import keystone_client
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
|
||||
GNOCCHI_OPTS = [
|
||||
cfg.StrOpt('gnocchi_external_project_owner',
|
||||
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,10 +145,19 @@ 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
|
||||
try:
|
||||
project = kc.projects.find(name=project_name)
|
||||
domains = kc.domains.list(name=domain_name)
|
||||
project = kc.projects.find(
|
||||
name=project_name,
|
||||
domain_id=domains[0].id)
|
||||
return project.id
|
||||
except ka_exceptions.NotFound:
|
||||
LOG.warning("Unable to get domain or project information. "
|
||||
"domain_name : %(domain_name)s, "
|
||||
"project_name : %(project_name)s",
|
||||
{'domain_name': domain_name,
|
||||
'project_name': project_name})
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue