From 51f2fda0417b391051743038de9f979ed4190127 Mon Sep 17 00:00:00 2001 From: lin-hua-cheng Date: Thu, 12 Nov 2015 16:49:45 -0800 Subject: [PATCH] Add capability to update description of an IdP Change-Id: I854067642bbfde6fdf84b22b9cc1de8afc7767c0 Closes-Bug: #1515815 --- .../command-objects/identity-provider.rst | 5 ++ .../identity/v3/identity_provider.py | 13 ++++- .../identity/v3/test_identity_provider.py | 48 +++++++++++++++++++ 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/doc/source/command-objects/identity-provider.rst b/doc/source/command-objects/identity-provider.rst index 90f0b4942c..ac46273638 100644 --- a/doc/source/command-objects/identity-provider.rst +++ b/doc/source/command-objects/identity-provider.rst @@ -81,6 +81,7 @@ Set identity provider properties os identity provider set [--remote-id [...] | --remote-id-file ] + [--description ] [--enable | --disable] @@ -94,6 +95,10 @@ Set identity provider properties Name of a file that contains many remote IDs to associate with the identity provider, one per line +.. option:: --description + + Set identity provider description + .. option:: --enable Enable the identity provider diff --git a/openstackclient/identity/v3/identity_provider.py b/openstackclient/identity/v3/identity_provider.py index 27982a9d5c..b6c358f2c5 100644 --- a/openstackclient/identity/v3/identity_provider.py +++ b/openstackclient/identity/v3/identity_provider.py @@ -142,6 +142,11 @@ class SetIdentityProvider(command.Command): metavar='', help='Identity provider to modify', ) + parser.add_argument( + '--description', + metavar='', + help='Set identity provider description', + ) identity_remote_id_provider = parser.add_mutually_exclusive_group() identity_remote_id_provider.add_argument( '--remote-id', @@ -174,8 +179,10 @@ class SetIdentityProvider(command.Command): federation_client = self.app.client_manager.identity.federation # Basic argument checking - if (not parsed_args.enable and not parsed_args.disable and not - parsed_args.remote_id and not parsed_args.remote_id_file): + if (not parsed_args.enable and not parsed_args.disable and + not parsed_args.remote_id and + not parsed_args.remote_id_file and + not parsed_args.description): self.log.error('No changes requested') return (None, None) @@ -190,6 +197,8 @@ class SetIdentityProvider(command.Command): # Setup keyword args for the client kwargs = {} + if parsed_args.description: + kwargs['description'] = parsed_args.description if parsed_args.enable: kwargs['enabled'] = True if parsed_args.disable: diff --git a/openstackclient/tests/identity/v3/test_identity_provider.py b/openstackclient/tests/identity/v3/test_identity_provider.py index cd328c1d4c..bd094ac4ba 100644 --- a/openstackclient/tests/identity/v3/test_identity_provider.py +++ b/openstackclient/tests/identity/v3/test_identity_provider.py @@ -374,6 +374,50 @@ class TestIdentityProviderSet(TestIdentityProvider): super(TestIdentityProviderSet, self).setUp() self.cmd = identity_provider.SetIdentityProvider(self.app, None) + def test_identity_provider_set_description(self): + """Set Identity Provider's description. """ + def prepare(self): + """Prepare fake return objects before the test is executed""" + updated_idp = copy.deepcopy(identity_fakes.IDENTITY_PROVIDER) + updated_idp['enabled'] = False + resources = fakes.FakeResource( + None, + updated_idp, + loaded=True + ) + self.identity_providers_mock.update.return_value = resources + + prepare(self) + new_description = 'new desc' + arglist = [ + '--description', new_description, + identity_fakes.idp_id + ] + verifylist = [ + ('identity_provider', identity_fakes.idp_id), + ('description', new_description), + ('enable', False), + ('disable', False), + ('remote_id', None) + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + columns, data = self.cmd.take_action(parsed_args) + self.identity_providers_mock.update.assert_called_with( + identity_fakes.idp_id, + description=new_description + ) + + collist = ('description', 'enabled', 'id', 'remote_ids') + self.assertEqual(collist, columns) + datalist = ( + identity_fakes.idp_description, + False, + identity_fakes.idp_id, + identity_fakes.idp_remote_ids + ) + self.assertEqual(datalist, data) + def test_identity_provider_disable(self): """Disable Identity Provider @@ -398,6 +442,7 @@ class TestIdentityProviderSet(TestIdentityProvider): ] verifylist = [ ('identity_provider', identity_fakes.idp_id), + ('description', None), ('enable', False), ('disable', True), ('remote_id', identity_fakes.idp_remote_ids) @@ -443,6 +488,7 @@ class TestIdentityProviderSet(TestIdentityProvider): ] verifylist = [ ('identity_provider', identity_fakes.idp_id), + ('description', None), ('enable', True), ('disable', False), ('remote_id', identity_fakes.idp_remote_ids) @@ -488,6 +534,7 @@ class TestIdentityProviderSet(TestIdentityProvider): ] verifylist = [ ('identity_provider', identity_fakes.idp_id), + ('description', None), ('enable', True), ('disable', False), ('remote_id', [self.new_remote_id]) @@ -533,6 +580,7 @@ class TestIdentityProviderSet(TestIdentityProvider): ] verifylist = [ ('identity_provider', identity_fakes.idp_id), + ('description', None), ('enable', True), ('disable', False), ('remote_id_file', self.new_remote_id),