Remove 'links' section from several v3 Identity objects

The links field in the returned objects from the v3 Identity
API aren't really useful, so let's remove them.
Managed to remove most of them from the core API.
I'll likely remove the extension/contribution (oauth/federation)
related ones in another patch.

Also in this patch the code for setting services and projects
was changed. Though not incorrect, it was not needed to copy
the entire returned object, we should just need to pass in
the fields we want to update.

Change-Id: I164ca9ad8b28fa10b291e9115ef40753e387c547
This commit is contained in:
Steve Martinelli 2014-10-03 00:07:45 -04:00
parent f0c57e17c9
commit a8d4b0eebb
12 changed files with 32 additions and 44 deletions

@ -73,6 +73,7 @@ class CreateCredential(show.ShowOne):
blob=parsed_args.data, blob=parsed_args.data,
project=project) project=project)
credential._info.pop('links')
return zip(*sorted(six.iteritems(credential._info))) return zip(*sorted(six.iteritems(credential._info)))
@ -193,4 +194,5 @@ class ShowCredential(show.ShowOne):
credential = utils.find_resource(identity_client.credentials, credential = utils.find_resource(identity_client.credentials,
parsed_args.credential) parsed_args.credential)
credential._info.pop('links')
return zip(*sorted(six.iteritems(credential._info))) return zip(*sorted(six.iteritems(credential._info)))

@ -66,6 +66,7 @@ class CreateDomain(show.ShowOne):
enabled=parsed_args.enabled, enabled=parsed_args.enabled,
) )
domain._info.pop('links')
return zip(*sorted(six.iteritems(domain._info))) return zip(*sorted(six.iteritems(domain._info)))
@ -187,4 +188,5 @@ class ShowDomain(show.ShowOne):
domain = utils.find_resource(identity_client.domains, domain = utils.find_resource(identity_client.domains,
parsed_args.domain) parsed_args.domain)
domain._info.pop('links')
return zip(*sorted(six.iteritems(domain._info))) return zip(*sorted(six.iteritems(domain._info)))

@ -81,6 +81,7 @@ class CreateEndpoint(show.ShowOne):
) )
info = {} info = {}
endpoint._info.pop('links')
info.update(endpoint._info) info.update(endpoint._info)
info['service_name'] = service.name info['service_name'] = service.name
info['service_type'] = service.type info['service_type'] = service.type
@ -258,6 +259,7 @@ class ShowEndpoint(show.ShowOne):
service = common.find_service(identity_client, endpoint.service_id) service = common.find_service(identity_client, endpoint.service_id)
info = {} info = {}
endpoint._info.pop('links')
info.update(endpoint._info) info.update(endpoint._info)
info['service_name'] = service.name info['service_name'] = service.name
info['service_type'] = service.type info['service_type'] = service.type

@ -138,9 +138,8 @@ class CreateGroup(show.ShowOne):
domain=domain, domain=domain,
description=parsed_args.description) description=parsed_args.description)
info = {} group._info.pop('links')
info.update(group._info) return zip(*sorted(six.iteritems(group._info)))
return zip(*sorted(six.iteritems(info)))
class DeleteGroup(command.Command): class DeleteGroup(command.Command):
@ -340,4 +339,5 @@ class ShowGroup(show.ShowOne):
group = utils.find_resource(identity_client.groups, group = utils.find_resource(identity_client.groups,
parsed_args.group) parsed_args.group)
group._info.pop('links')
return zip(*sorted(six.iteritems(group._info))) return zip(*sorted(six.iteritems(group._info)))

@ -55,6 +55,7 @@ class CreatePolicy(show.ShowOne):
blob=blob, type=parsed_args.type blob=blob, type=parsed_args.type
) )
policy._info.pop('links')
return zip(*sorted(six.iteritems(policy._info))) return zip(*sorted(six.iteritems(policy._info)))
@ -173,4 +174,5 @@ class ShowPolicy(show.ShowOne):
policy = utils.find_resource(identity_client.policies, policy = utils.find_resource(identity_client.policies,
parsed_args.policy) parsed_args.policy)
policy._info.pop('links')
return zip(*sorted(six.iteritems(policy._info))) return zip(*sorted(six.iteritems(policy._info)))

@ -94,9 +94,8 @@ class CreateProject(show.ShowOne):
**kwargs **kwargs
) )
info = {} project._info.pop('links')
info.update(project._info) return zip(*sorted(six.iteritems(project._info)))
return zip(*sorted(six.iteritems(info)))
class DeleteProject(command.Command): class DeleteProject(command.Command):
@ -229,7 +228,7 @@ class SetProject(command.Command):
parsed_args.project, parsed_args.project,
) )
kwargs = project._info kwargs = {}
if parsed_args.name: if parsed_args.name:
kwargs['name'] = parsed_args.name kwargs['name'] = parsed_args.name
if parsed_args.domain: if parsed_args.domain:
@ -243,13 +242,6 @@ class SetProject(command.Command):
kwargs['enabled'] = False kwargs['enabled'] = False
if parsed_args.property: if parsed_args.property:
kwargs.update(parsed_args.property) kwargs.update(parsed_args.property)
if 'id' in kwargs:
del kwargs['id']
if 'domain_id' in kwargs:
# Hack around broken Identity API arg names
kwargs.update(
{'domain': kwargs.pop('domain_id')}
)
identity_client.projects.update(project.id, **kwargs) identity_client.projects.update(project.id, **kwargs)
return return
@ -287,4 +279,5 @@ class ShowProject(show.ShowOne):
project = utils.find_resource(identity_client.projects, project = utils.find_resource(identity_client.projects,
parsed_args.project) parsed_args.project)
project._info.pop('links')
return zip(*sorted(six.iteritems(project._info))) return zip(*sorted(six.iteritems(project._info)))

@ -157,6 +157,7 @@ class CreateRole(show.ShowOne):
role = identity_client.roles.create(name=parsed_args.name) role = identity_client.roles.create(name=parsed_args.name)
role._info.pop('links')
return zip(*sorted(six.iteritems(role._info))) return zip(*sorted(six.iteritems(role._info)))
@ -472,4 +473,5 @@ class ShowRole(show.ShowOne):
parsed_args.role, parsed_args.role,
) )
role._info.pop('links')
return zip(*sorted(six.iteritems(role._info))) return zip(*sorted(six.iteritems(role._info)))

@ -70,6 +70,7 @@ class CreateService(show.ShowOne):
enabled=enabled, enabled=enabled,
) )
service._info.pop('links')
return zip(*sorted(six.iteritems(service._info))) return zip(*sorted(six.iteritems(service._info)))
@ -161,7 +162,7 @@ class SetService(command.Command):
service = common.find_service(identity_client, parsed_args.service) service = common.find_service(identity_client, parsed_args.service)
kwargs = service._info kwargs = {}
if parsed_args.type: if parsed_args.type:
kwargs['type'] = parsed_args.type kwargs['type'] = parsed_args.type
if parsed_args.name: if parsed_args.name:
@ -170,8 +171,6 @@ class SetService(command.Command):
kwargs['enabled'] = True kwargs['enabled'] = True
if parsed_args.disable: if parsed_args.disable:
kwargs['enabled'] = False kwargs['enabled'] = False
if 'id' in kwargs:
del kwargs['id']
identity_client.services.update( identity_client.services.update(
service.id, service.id,
@ -200,4 +199,5 @@ class ShowService(show.ShowOne):
service = common.find_service(identity_client, parsed_args.service) service = common.find_service(identity_client, parsed_args.service)
service._info.pop('links')
return zip(*sorted(six.iteritems(service._info))) return zip(*sorted(six.iteritems(service._info)))

@ -116,9 +116,8 @@ class CreateUser(show.ShowOne):
enabled=enabled enabled=enabled
) )
info = {} user._info.pop('links')
info.update(user._info) return zip(*sorted(six.iteritems(user._info)))
return zip(*sorted(six.iteritems(info)))
class DeleteUser(command.Command): class DeleteUser(command.Command):
@ -382,4 +381,5 @@ class ShowUser(show.ShowOne):
user = utils.find_resource(identity_client.users, user = utils.find_resource(identity_client.users,
parsed_args.user) parsed_args.user)
user._info.pop('links')
return zip(*sorted(six.iteritems(user._info))) return zip(*sorted(six.iteritems(user._info)))

@ -18,6 +18,7 @@ import mock
from openstackclient.tests import fakes from openstackclient.tests import fakes
from openstackclient.tests import utils from openstackclient.tests import utils
base_url = 'http://identity:5000/v3/'
domain_id = 'd1' domain_id = 'd1'
domain_name = 'oftheking' domain_name = 'oftheking'
@ -28,6 +29,7 @@ DOMAIN = {
'name': domain_name, 'name': domain_name,
'description': domain_description, 'description': domain_description,
'enabled': True, 'enabled': True,
'links': base_url + 'domains/' + domain_id,
} }
group_id = 'gr-010' group_id = 'gr-010'
@ -36,6 +38,7 @@ group_name = 'spencer davis'
GROUP = { GROUP = {
'id': group_id, 'id': group_id,
'name': group_name, 'name': group_name,
'links': base_url + 'groups/' + group_id,
} }
mapping_id = 'test_mapping' mapping_id = 'test_mapping'
@ -107,6 +110,7 @@ PROJECT = {
'description': project_description, 'description': project_description,
'enabled': True, 'enabled': True,
'domain_id': domain_id, 'domain_id': domain_id,
'links': base_url + 'projects/' + project_id,
} }
PROJECT_2 = { PROJECT_2 = {
@ -115,6 +119,7 @@ PROJECT_2 = {
'description': project_description + 'plus four more', 'description': project_description + 'plus four more',
'enabled': True, 'enabled': True,
'domain_id': domain_id, 'domain_id': domain_id,
'links': base_url + 'projects/' + project_id,
} }
role_id = 'r1' role_id = 'r1'
@ -123,6 +128,7 @@ role_name = 'roller'
ROLE = { ROLE = {
'id': role_id, 'id': role_id,
'name': role_name, 'name': role_name,
'links': base_url + 'roles/' + role_id,
} }
service_id = 's-123' service_id = 's-123'
@ -134,6 +140,7 @@ SERVICE = {
'name': service_name, 'name': service_name,
'type': service_type, 'type': service_type,
'enabled': True, 'enabled': True,
'links': base_url + 'services/' + service_id,
} }
endpoint_id = 'e-123' endpoint_id = 'e-123'
@ -148,6 +155,7 @@ ENDPOINT = {
'interface': endpoint_interface, 'interface': endpoint_interface,
'service_id': service_id, 'service_id': service_id,
'enabled': True, 'enabled': True,
'links': base_url + 'endpoints/' + endpoint_id,
} }
user_id = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' user_id = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
@ -162,6 +170,7 @@ USER = {
'email': user_email, 'email': user_email,
'enabled': True, 'enabled': True,
'domain_id': domain_id, 'domain_id': domain_id,
'links': base_url + 'users/' + user_id,
} }
token_expires = '2014-01-01T00:00:00Z' token_expires = '2014-01-01T00:00:00Z'

@ -533,9 +533,6 @@ class TestProjectSet(TestProject):
# Set expected values # Set expected values
kwargs = { kwargs = {
'description': identity_fakes.project_description,
'domain': identity_fakes.domain_id,
'enabled': True,
'name': 'qwerty', 'name': 'qwerty',
} }
# ProjectManager.update(project, name=, domain=, description=, # ProjectManager.update(project, name=, domain=, description=,
@ -564,9 +561,6 @@ class TestProjectSet(TestProject):
# Set expected values # Set expected values
kwargs = { kwargs = {
'description': 'new desc', 'description': 'new desc',
'domain': identity_fakes.domain_id,
'enabled': True,
'name': identity_fakes.project_name,
} }
self.projects_mock.update.assert_called_with( self.projects_mock.update.assert_called_with(
identity_fakes.project_id, identity_fakes.project_id,
@ -590,10 +584,7 @@ class TestProjectSet(TestProject):
# Set expected values # Set expected values
kwargs = { kwargs = {
'description': identity_fakes.project_description,
'domain': identity_fakes.domain_id,
'enabled': True, 'enabled': True,
'name': identity_fakes.project_name,
} }
self.projects_mock.update.assert_called_with( self.projects_mock.update.assert_called_with(
identity_fakes.project_id, identity_fakes.project_id,
@ -617,10 +608,7 @@ class TestProjectSet(TestProject):
# Set expected values # Set expected values
kwargs = { kwargs = {
'description': identity_fakes.project_description,
'domain': identity_fakes.domain_id,
'enabled': False, 'enabled': False,
'name': identity_fakes.project_name,
} }
self.projects_mock.update.assert_called_with( self.projects_mock.update.assert_called_with(
identity_fakes.project_id, identity_fakes.project_id,
@ -644,10 +632,6 @@ class TestProjectSet(TestProject):
# Set expected values # Set expected values
kwargs = { kwargs = {
'description': identity_fakes.project_description,
'domain': identity_fakes.domain_id,
'enabled': True,
'name': identity_fakes.project_name,
'fee': 'fi', 'fee': 'fi',
'fo': 'fum', 'fo': 'fum',
} }

@ -267,9 +267,7 @@ class TestServiceSet(TestService):
# Set expected values # Set expected values
kwargs = { kwargs = {
'name': identity_fakes.service_name,
'type': identity_fakes.service_type, 'type': identity_fakes.service_type,
'enabled': True,
} }
# ServiceManager.update(service, name=, type=, enabled=, **kwargs) # ServiceManager.update(service, name=, type=, enabled=, **kwargs)
self.services_mock.update.assert_called_with( self.services_mock.update.assert_called_with(
@ -297,8 +295,6 @@ class TestServiceSet(TestService):
# Set expected values # Set expected values
kwargs = { kwargs = {
'name': identity_fakes.service_name, 'name': identity_fakes.service_name,
'type': identity_fakes.service_type,
'enabled': True,
} }
# ServiceManager.update(service, name=, type=, enabled=, **kwargs) # ServiceManager.update(service, name=, type=, enabled=, **kwargs)
self.services_mock.update.assert_called_with( self.services_mock.update.assert_called_with(
@ -325,8 +321,6 @@ class TestServiceSet(TestService):
# Set expected values # Set expected values
kwargs = { kwargs = {
'name': identity_fakes.service_name,
'type': identity_fakes.service_type,
'enabled': True, 'enabled': True,
} }
# ServiceManager.update(service, name=, type=, enabled=, **kwargs) # ServiceManager.update(service, name=, type=, enabled=, **kwargs)
@ -354,8 +348,6 @@ class TestServiceSet(TestService):
# Set expected values # Set expected values
kwargs = { kwargs = {
'name': identity_fakes.service_name,
'type': identity_fakes.service_type,
'enabled': False, 'enabled': False,
} }
# ServiceManager.update(service, name=, type=, enabled=, **kwargs) # ServiceManager.update(service, name=, type=, enabled=, **kwargs)