summaryrefslogtreecommitdiff
path: root/openstackclient/identity
diff options
context:
space:
mode:
authorMarek Denis <marek.denis@cern.ch>2014-04-09 19:05:36 +0200
committerMarek Denis <marek.denis@cern.ch>2014-04-24 14:55:54 +0200
commitef9496a4fc9b8600dac88666b7159119e663642c (patch)
treef8c5f64ac31b950a819ad54700806f75fbdddc32 /openstackclient/identity
parentee22070473dab8bfa3e89d47f1f5a77918c2b026 (diff)
downloadpython-openstackclient-ef9496a4fc9b8600dac88666b7159119e663642c.tar.gz
Implement CRUD operations for Identity Providers
Operations for: * adding Identity Provider * listing Identity Providers * showing Identity Provider * updating Identity Provider * deleting Identity Provider Change-Id: I4557168309f93e4670116b5c3c0e29252ff0c40f Implements: bp/add-openstackclient-federation-crud
Diffstat (limited to 'openstackclient/identity')
-rw-r--r--openstackclient/identity/v3/identity_provider.py180
1 files changed, 180 insertions, 0 deletions
diff --git a/openstackclient/identity/v3/identity_provider.py b/openstackclient/identity/v3/identity_provider.py
new file mode 100644
index 00000000..f577c314
--- /dev/null
+++ b/openstackclient/identity/v3/identity_provider.py
@@ -0,0 +1,180 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+
+"""Identity v3 IdentityProvider action implementations"""
+
+import logging
+import six
+import sys
+
+from cliff import command
+from cliff import lister
+from cliff import show
+
+from openstackclient.common import utils
+
+
+class CreateIdentityProvider(show.ShowOne):
+ """Create identity_provider command"""
+
+ log = logging.getLogger(__name__ + '.CreateIdentityProvider')
+
+ def get_parser(self, prog_name):
+ parser = super(CreateIdentityProvider, self).get_parser(prog_name)
+ parser.add_argument(
+ 'identity_provider_id',
+ metavar='<identity_provider_id>',
+ help='New identity provider ID (must be unique)'
+ )
+ parser.add_argument(
+ '--description',
+ metavar='<description>',
+ help='New identity provider description',
+ )
+
+ enable_identity_provider = parser.add_mutually_exclusive_group()
+ enable_identity_provider.add_argument(
+ '--enable',
+ dest='enabled',
+ action='store_true',
+ default=True,
+ help='Enable identity provider',
+ )
+ enable_identity_provider.add_argument(
+ '--disable',
+ dest='enabled',
+ action='store_false',
+ help='Disable the identity provider',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug('take_action(%s)' % parsed_args)
+ identity_client = self.app.client_manager.identity
+ idp = identity_client.identity_providers.create(
+ parsed_args.identity_provider_id,
+ description=parsed_args.description,
+ enabled=parsed_args.enabled)
+ info = {}
+ info.update(idp._info)
+ return zip(*sorted(six.iteritems(info)))
+
+
+class DeleteIdentityProvider(command.Command):
+ """Delete identity provider"""
+
+ log = logging.getLogger(__name__ + '.DeleteIdentityProvider')
+
+ def get_parser(self, prog_name):
+ parser = super(DeleteIdentityProvider, self).get_parser(prog_name)
+ parser.add_argument(
+ 'identity_provider',
+ metavar='<identity_provider>',
+ help='ID of the identity provider to be deleted',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug('take_action(%s)' % parsed_args)
+ identity_client = self.app.client_manager.identity
+ identity_client.identity_providers.delete(
+ parsed_args.identity_provider)
+ return
+
+
+class ListIdentityProvider(lister.Lister):
+ """List identity providers"""
+
+ log = logging.getLogger(__name__ + '.ListIdentityProvider')
+
+ def take_action(self, parsed_args):
+ self.log.debug('take_action(%s)' % parsed_args)
+ columns = ('ID', 'Enabled', 'Description')
+ data = self.app.client_manager.identity.identity_providers.list()
+ return (columns,
+ (utils.get_item_properties(
+ s, columns,
+ formatters={},
+ ) for s in data))
+
+
+class SetIdentityProvider(command.Command):
+ """Set identity provider"""
+
+ log = logging.getLogger(__name__ + '.SetIdentityProvider')
+
+ def get_parser(self, prog_name):
+ parser = super(SetIdentityProvider, self).get_parser(prog_name)
+ parser.add_argument(
+ 'identity_provider',
+ metavar='<identity_provider>',
+ help='ID of the identity provider to be changed',
+ )
+
+ enable_identity_provider = parser.add_mutually_exclusive_group()
+ enable_identity_provider.add_argument(
+ '--enable',
+ action='store_true',
+ help='Enable the identity provider',
+ )
+ enable_identity_provider.add_argument(
+ '--disable',
+ action='store_true',
+ help='Disable the identity provider',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug('take_action(%s)' % parsed_args)
+ identity_client = self.app.client_manager.identity
+
+ if parsed_args.enable is True:
+ enabled = True
+ elif parsed_args.disable is True:
+ enabled = False
+ else:
+ sys.stdout.write("Identity Provider not updated, "
+ "no arguments present")
+ return (None, None)
+
+ identity_provider = identity_client.identity_providers.update(
+ parsed_args.identity_provider, enabled=enabled)
+ info = {}
+ info.update(identity_provider._info)
+ return zip(*sorted(six.iteritems(info)))
+
+
+class ShowIdentityProvider(show.ShowOne):
+ """Show identity provider"""
+
+ log = logging.getLogger(__name__ + '.ShowIdentityProvider')
+
+ def get_parser(self, prog_name):
+ parser = super(ShowIdentityProvider, self).get_parser(prog_name)
+ parser.add_argument(
+ 'identity_provider',
+ metavar='<identity_provider>',
+ help='ID of the identity provider to be displayed',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug('take_action(%s)' % parsed_args)
+ identity_client = self.app.client_manager.identity
+ identity_provider = utils.find_resource(
+ identity_client.identity_providers,
+ parsed_args.identity_provider)
+
+ info = {}
+ info.update(identity_provider._info)
+ return zip(*sorted(six.iteritems(info)))