Merge "Add routing for list_endpoint_groups_for_project"
This commit is contained in:
commit
27f887b0aa
|
@ -128,6 +128,7 @@
|
|||
"identity:list_projects_associated_with_endpoint_group": "rule:admin_required",
|
||||
"identity:list_endpoints_associated_with_endpoint_group": "rule:admin_required",
|
||||
"identity:get_endpoint_group_in_project": "rule:admin_required",
|
||||
"identity:list_endpoint_groups_for_project": "rule:admin_required",
|
||||
"identity:add_endpoint_group_to_project": "rule:admin_required",
|
||||
"identity:remove_endpoint_group_from_project": "rule:admin_required",
|
||||
|
||||
|
|
|
@ -139,6 +139,7 @@
|
|||
"identity:list_projects_associated_with_endpoint_group": "rule:admin_required",
|
||||
"identity:list_endpoints_associated_with_endpoint_group": "rule:admin_required",
|
||||
"identity:get_endpoint_group_in_project": "rule:admin_required",
|
||||
"identity:list_endpoint_groups_for_project": "rule:admin_required",
|
||||
"identity:add_endpoint_group_to_project": "rule:admin_required",
|
||||
"identity:remove_endpoint_group_from_project": "rule:admin_required",
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ class EndpointFilterExtension(wsgi.V3ExtensionRouter):
|
|||
DELETE /OS-EP-FILTER/projects/$project_id/endpoints/$endpoint_id
|
||||
GET /OS-EP-FILTER/endpoints/$endpoint_id/projects
|
||||
GET /OS-EP-FILTER/projects/$project_id/endpoints
|
||||
GET /OS-EP-FILTER/projects/$project_id/endpoint_groups
|
||||
|
||||
GET /OS-EP-FILTER/endpoint_groups
|
||||
POST /OS-EP-FILTER/endpoint_groups
|
||||
|
@ -99,6 +100,15 @@ class EndpointFilterExtension(wsgi.V3ExtensionRouter):
|
|||
path_vars={
|
||||
'project_id': json_home.Parameters.PROJECT_ID,
|
||||
})
|
||||
self._add_resource(
|
||||
mapper, endpoint_group_controller,
|
||||
path=self.PATH_PREFIX + '/projects/{project_id}/endpoint_groups',
|
||||
get_action='list_endpoint_groups_for_project',
|
||||
rel=build_resource_relation(
|
||||
resource_name='project_endpoint_groups'),
|
||||
path_vars={
|
||||
'project_id': json_home.Parameters.PROJECT_ID,
|
||||
})
|
||||
self._add_resource(
|
||||
mapper, endpoint_group_controller,
|
||||
path=self.PATH_PREFIX + '/endpoint_groups',
|
||||
|
|
|
@ -642,6 +642,16 @@ class JsonHomeTests(TestExtensionCase, test_v3.JsonHomeTestMixin):
|
|||
'ext/OS-EP-FILTER/1.0/param/endpoint_group_id',
|
||||
},
|
||||
},
|
||||
'http://docs.openstack.org/api/openstack-identity/3/ext/OS-EP-FILTER/'
|
||||
'1.0/rel/project_endpoint_groups': {
|
||||
'href-template': '/OS-EP-FILTER/projects/{project_id}/'
|
||||
'endpoint_groups',
|
||||
'href-vars': {
|
||||
'project_id':
|
||||
'http://docs.openstack.org/api/openstack-identity/3/param/'
|
||||
'project_id',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
@ -890,6 +900,40 @@ class EndpointGroupCRUDTestCase(TestExtensionCase):
|
|||
endpoint_group_id, project_id)
|
||||
self.get(url, expected_status=404)
|
||||
|
||||
def test_list_endpoint_groups_in_project(self):
|
||||
"""GET /OS-EP-FILTER/projects/{project_id}/endpoint_groups."""
|
||||
# create an endpoint group to work with
|
||||
endpoint_group_id = self._create_valid_endpoint_group(
|
||||
self.DEFAULT_ENDPOINT_GROUP_URL, self.DEFAULT_ENDPOINT_GROUP_BODY)
|
||||
|
||||
# associate endpoint group with project
|
||||
url = self._get_project_endpoint_group_url(
|
||||
endpoint_group_id, self.project_id)
|
||||
self.put(url)
|
||||
|
||||
url = ('/OS-EP-FILTER/projects/%(project_id)s/endpoint_groups' %
|
||||
{'project_id': self.project_id})
|
||||
response = self.get(url)
|
||||
|
||||
self.assertEqual(
|
||||
endpoint_group_id,
|
||||
response.result['endpoint_groups'][0]['id'])
|
||||
|
||||
def test_list_endpoint_groups_in_invalid_project(self):
|
||||
"""Test retrieving from invalid project."""
|
||||
project_id = uuid.uuid4().hex
|
||||
url = ('/OS-EP-FILTER/projects/%(project_id)s/endpoint_groups' %
|
||||
{'project_id': project_id})
|
||||
self.get(url, expected_status=404)
|
||||
|
||||
def test_empty_endpoint_groups_in_project(self):
|
||||
"""Test when no endpoint groups associated with the project."""
|
||||
url = ('/OS-EP-FILTER/projects/%(project_id)s/endpoint_groups' %
|
||||
{'project_id': self.project_id})
|
||||
response = self.get(url)
|
||||
|
||||
self.assertEqual(0, len(response.result['endpoint_groups']))
|
||||
|
||||
def test_check_endpoint_group_to_project(self):
|
||||
"""Test HEAD with a valid endpoint group and project association."""
|
||||
endpoint_group_id = self._create_valid_endpoint_group(
|
||||
|
|
|
@ -161,7 +161,8 @@ ENDPOINT_GROUP_ID_PARAMETER_RELATION = (
|
|||
|
||||
BASE_IDP_PROTOCOL = '/OS-FEDERATION/identity_providers/{idp_id}/protocols'
|
||||
BASE_EP_POLICY = '/policies/{policy_id}/OS-ENDPOINT-POLICY'
|
||||
BASE_EP_FILTER = '/OS-EP-FILTER/endpoint_groups/{endpoint_group_id}'
|
||||
BASE_EP_FILTER_PREFIX = '/OS-EP-FILTER'
|
||||
BASE_EP_FILTER = BASE_EP_FILTER_PREFIX + '/endpoint_groups/{endpoint_group_id}'
|
||||
BASE_ACCESS_TOKEN = (
|
||||
'/users/{user_id}/OS-OAUTH1/access_tokens/{access_token_id}')
|
||||
|
||||
|
@ -476,6 +477,12 @@ V3_JSON_HOME_RESOURCES_INHERIT_DISABLED = {
|
|||
'href-template': BASE_EP_FILTER + '/endpoints',
|
||||
'href-vars': {'endpoint_group_id':
|
||||
ENDPOINT_GROUP_ID_PARAMETER_RELATION, }},
|
||||
_build_ep_filter_rel(resource_name='project_endpoint_groups'):
|
||||
{
|
||||
'href-template': (BASE_EP_FILTER_PREFIX + '/projects/{project_id}' +
|
||||
'/endpoint_groups'),
|
||||
'href-vars': {'project_id':
|
||||
json_home.Parameters.PROJECT_ID, }},
|
||||
_build_ep_filter_rel(resource_name='project_endpoint'):
|
||||
{
|
||||
'href-template': ('/OS-EP-FILTER/projects/{project_id}'
|
||||
|
|
Loading…
Reference in New Issue