Add show resource function to Keystone

Now it isn't possible to use base _show_resource() method
since client() method of keystone clientplugin doesn't return
clean keystoneclient object.

Change-Id: I78b57d44b37c34cebadc2b72cf55b4f9405447a3
This commit is contained in:
Oleksii Chuprykov
2015-08-18 15:31:05 +03:00
parent d84fef5688
commit 1b67662306
12 changed files with 100 additions and 28 deletions

View File

@@ -27,6 +27,8 @@ class KeystoneEndpoint(resource.Resource):
default_client_name = 'keystone'
entity = 'endpoints'
PROPERTIES = (
NAME, REGION, SERVICE, INTERFACE, SERVICE_URL
) = (
@@ -68,13 +70,16 @@ class KeystoneEndpoint(resource.Resource):
)
}
def client(self):
return super(KeystoneEndpoint, self).client().client
def _create_endpoint(self,
service,
interface,
url,
region=None,
name=None):
return self.client().client.endpoints.create(
return self.client().endpoints.create(
region=region,
service=service,
interface=interface,
@@ -82,7 +87,7 @@ class KeystoneEndpoint(resource.Resource):
name=name)
def _delete_endpoint(self, endpoint_id):
return self.client().client.endpoints.delete(endpoint_id)
return self.client().endpoints.delete(endpoint_id)
def _update_endpoint(self,
endpoint_id,
@@ -91,7 +96,7 @@ class KeystoneEndpoint(resource.Resource):
new_interface=None,
new_url=None,
new_name=None):
return self.client().client.endpoints.update(
return self.client().endpoints.update(
endpoint=endpoint_id,
region=new_region,
service=new_service,

View File

@@ -29,6 +29,8 @@ class KeystoneGroup(resource.Resource,
default_client_name = 'keystone'
entity = 'groups'
PROPERTIES = (
NAME, DOMAIN, DESCRIPTION
) = (
@@ -63,19 +65,22 @@ class KeystoneGroup(resource.Resource,
super(KeystoneGroup, self).validate()
self.validate_assignment_properties()
def client(self):
return super(KeystoneGroup, self).client().client
def _create_group(self,
group_name,
description,
domain):
domain = self.client_plugin().get_domain_id(domain)
return self.client().client.groups.create(
return self.client().groups.create(
name=group_name,
domain=domain,
description=description)
def _delete_group(self, group_id):
return self.client().client.groups.delete(group_id)
return self.client().groups.delete(group_id)
def _update_group(self,
group_id,
@@ -92,7 +97,7 @@ class KeystoneGroup(resource.Resource,
values['group'] = group_id
domain = self.client_plugin().get_domain_id(domain)
values['domain_id'] = domain
return self.client().client.groups.update(**values)
return self.client().groups.update(**values)
def handle_create(self):
group_name = (self.properties.get(self.NAME) or

View File

@@ -27,6 +27,8 @@ class KeystoneProject(resource.Resource):
default_client_name = 'keystone'
entity = 'projects'
PROPERTIES = (
NAME, DOMAIN, DESCRIPTION, ENABLED
) = (
@@ -60,6 +62,9 @@ class KeystoneProject(resource.Resource):
)
}
def client(self):
return super(KeystoneProject, self).client().client
def _create_project(self,
project_name,
description,
@@ -67,14 +72,14 @@ class KeystoneProject(resource.Resource):
enabled):
domain = self.client_plugin().get_domain_id(domain)
return self.client().client.projects.create(
return self.client().projects.create(
name=project_name,
domain=domain,
description=description,
enabled=enabled)
def _delete_project(self, project_id):
return self.client().client.projects.delete(project_id)
return self.client().projects.delete(project_id)
def _update_project(self,
project_id,
@@ -96,7 +101,7 @@ class KeystoneProject(resource.Resource):
values['domain'] = domain
return self.client().client.projects.update(**values)
return self.client().projects.update(**values)
def handle_create(self):
project_name = (self.properties.get(self.NAME) or

View File

@@ -26,6 +26,8 @@ class KeystoneRole(resource.Resource):
default_client_name = 'keystone'
entity = 'roles'
PROPERTIES = (
NAME
) = (
@@ -40,14 +42,17 @@ class KeystoneRole(resource.Resource):
)
}
def client(self):
return super(KeystoneRole, self).client().client
def _create_role(self, role_name):
return self.client().client.roles.create(name=role_name)
return self.client().roles.create(name=role_name)
def _delete_role(self, role_id):
return self.client().client.roles.delete(role_id)
return self.client().roles.delete(role_id)
def _update_role(self, role_id, new_name):
return self.client().client.roles.update(
return self.client().roles.update(
role=role_id,
name=new_name
)

View File

@@ -26,6 +26,8 @@ class KeystoneService(resource.Resource):
default_client_name = 'keystone'
entity = 'services'
PROPERTIES = (
NAME, DESCRIPTION, TYPE
) = (
@@ -51,24 +53,27 @@ class KeystoneService(resource.Resource):
)
}
def client(self):
return super(KeystoneService, self).client().client
def _create_service(self,
name,
type,
description=None):
return self.client().client.services.create(
return self.client().services.create(
name=name,
description=description,
type=type)
def _delete_service(self, service_id):
return self.client().client.services.delete(service_id)
return self.client().services.delete(service_id)
def _update_service(self,
service_id,
new_name=None,
new_description=None,
new_type=None):
return self.client().client.services.update(
return self.client().services.update(
service=service_id,
name=new_name,
description=new_description,

View File

@@ -29,6 +29,8 @@ class KeystoneUser(resource.Resource,
default_client_name = 'keystone'
entity = 'users'
PROPERTIES = (
NAME, DOMAIN, DESCRIPTION, ENABLED, EMAIL, PASSWORD,
DEFAULT_PROJECT, GROUPS
@@ -97,6 +99,9 @@ class KeystoneUser(resource.Resource,
super(KeystoneUser, self).validate()
self.validate_assignment_properties()
def client(self):
return super(KeystoneUser, self).client().client
def _create_user(self,
user_name,
description,
@@ -110,7 +115,7 @@ class KeystoneUser(resource.Resource,
default_project = (self.client_plugin().
get_project_id(default_project))
return self.client().client.users.create(
return self.client().users.create(
name=user_name,
domain=domain,
description=description,
@@ -120,7 +125,7 @@ class KeystoneUser(resource.Resource,
default_project=default_project)
def _delete_user(self, user_id):
return self.client().client.users.delete(user_id)
return self.client().users.delete(user_id)
def _update_user(self,
user_id,
@@ -151,7 +156,7 @@ class KeystoneUser(resource.Resource,
values['domain'] = domain
return self.client().client.users.update(**values)
return self.client().users.update(**values)
def _add_user_to_groups(self, user_id, groups):
if groups is not None:
@@ -159,8 +164,8 @@ class KeystoneUser(resource.Resource,
for group in groups]
for group_id in group_ids:
self.client().client.users.add_to_group(user_id,
group_id)
self.client().users.add_to_group(user_id,
group_id)
def _remove_user_from_groups(self, user_id, groups):
if groups is not None:
@@ -168,8 +173,8 @@ class KeystoneUser(resource.Resource,
for group in groups]
for group_id in group_ids:
self.client().client.users.remove_from_group(user_id,
group_id)
self.client().users.remove_from_group(user_id,
group_id)
def _find_diff(self, updated_prps, stored_prps):
new_group_ids = [self.client_plugin().get_group_id(group)

View File

@@ -57,7 +57,7 @@ class KeystoneEndpointTest(common.HeatTestCase):
self.keystoneclient = mock.MagicMock()
self.test_endpoint.client = mock.MagicMock()
self.test_endpoint.client.return_value = self.keystoneclient
self.endpoints = self.keystoneclient.client.endpoints
self.endpoints = self.keystoneclient.endpoints
# Mock client plugin
keystone_client_plugin = mock.MagicMock()
@@ -316,3 +316,10 @@ class KeystoneEndpointTest(common.HeatTestCase):
schema.description,
'description for property %s is modified' %
endpoint.KeystoneEndpoint.NAME)
def test_show_resource(self):
endpoint = mock.Mock()
endpoint.to_dict.return_value = {'attr': 'val'}
self.endpoints.get.return_value = endpoint
res = self.test_endpoint._show_resource()
self.assertEqual({'attr': 'val'}, res)

View File

@@ -55,7 +55,7 @@ class KeystoneGroupTest(common.HeatTestCase):
self.keystoneclient = mock.MagicMock()
self.test_group.client = mock.MagicMock()
self.test_group.client.return_value = self.keystoneclient
self.groups = self.keystoneclient.client.groups
self.groups = self.keystoneclient.groups
# Mock client plugin
def _side_effect(value):
@@ -301,3 +301,10 @@ class KeystoneGroupTest(common.HeatTestCase):
self.groups.delete.side_effect = exc
self.assertIsNone(self.test_group.handle_delete())
def test_show_resource(self):
group = mock.Mock()
group.to_dict.return_value = {'attr': 'val'}
self.groups.get.return_value = group
res = self.test_group._show_resource()
self.assertEqual({'attr': 'val'}, res)

View File

@@ -56,7 +56,7 @@ class KeystoneProjectTest(common.HeatTestCase):
self.keystoneclient = mock.MagicMock()
self.test_project.client = mock.MagicMock()
self.test_project.client.return_value = self.keystoneclient
self.projects = self.keystoneclient.client.projects
self.projects = self.keystoneclient.projects
# Mock client plugin
def _domain_side_effect(value):
@@ -342,3 +342,10 @@ class KeystoneProjectTest(common.HeatTestCase):
self.projects.delete.side_effect = exc
self.assertIsNone(self.test_project.handle_delete())
def test_show_resource(self):
project = mock.Mock()
project.to_dict.return_value = {'attr': 'val'}
self.projects.get.return_value = project
res = self.test_project._show_resource()
self.assertEqual({'attr': 'val'}, res)

View File

@@ -50,7 +50,7 @@ class KeystoneRoleTest(common.HeatTestCase):
self.keystoneclient = mock.MagicMock()
self.test_role.client = mock.MagicMock()
self.test_role.client.return_value = self.keystoneclient
self.roles = self.keystoneclient.client.roles
self.roles = self.keystoneclient.roles
def _get_mock_role(self):
value = mock.MagicMock()
@@ -128,3 +128,10 @@ class KeystoneRoleTest(common.HeatTestCase):
self.roles.delete.side_effect = exc
self.assertIsNone(self.test_role.handle_delete())
def test_show_resource(self):
role = mock.Mock()
role.to_dict.return_value = {'attr': 'val'}
self.roles.get.return_value = role
res = self.test_role._show_resource()
self.assertEqual({'attr': 'val'}, res)

View File

@@ -54,7 +54,7 @@ class KeystoneServiceTest(common.HeatTestCase):
self.keystoneclient = mock.MagicMock()
self.test_service.client = mock.MagicMock()
self.test_service.client.return_value = self.keystoneclient
self.services = self.keystoneclient.client.services
self.services = self.keystoneclient.services
# Mock client plugin
keystone_client_plugin = mock.MagicMock()
@@ -266,3 +266,10 @@ class KeystoneServiceTest(common.HeatTestCase):
schema.description,
'description for property %s is modified' %
service.KeystoneService.TYPE)
def test_show_resource(self):
service = mock.Mock()
service.to_dict.return_value = {'attr': 'val'}
self.services.get.return_value = service
res = self.test_service._show_resource()
self.assertEqual({'attr': 'val'}, res)

View File

@@ -59,7 +59,7 @@ class KeystoneUserTest(common.HeatTestCase):
self.keystoneclient = mock.MagicMock()
self.test_user.client = mock.MagicMock()
self.test_user.client.return_value = self.keystoneclient
self.users = self.keystoneclient.client.users
self.users = self.keystoneclient.users
# Mock client plugin
def _side_effect(value):
@@ -263,3 +263,10 @@ class KeystoneUserTest(common.HeatTestCase):
self.users.delete.side_effect = exc
self.assertIsNone(self.test_user.handle_delete())
def test_show_resource(self):
user = mock.Mock()
user.to_dict.return_value = {'attr': 'val'}
self.users.get.return_value = user
res = self.test_user._show_resource()
self.assertEqual({'attr': 'val'}, res)