From c9cf126a83459e1b843153a91dfe86d975d0d8bb Mon Sep 17 00:00:00 2001
From: Steve Martinelli <stevemar@ca.ibm.com>
Date: Tue, 6 Jan 2015 01:59:59 -0500
Subject: [PATCH] Command doc: identity provider

Change-Id: Ie73accfaa3d45205a2521e6e61efd16142c460b2
---
 .../command-objects/identity-provider.rst     | 100 ++++++++++++++++++
 doc/source/commands.rst                       |   2 +-
 .../identity/v3/identity_provider.py          |  31 +++---
 3 files changed, 114 insertions(+), 19 deletions(-)
 create mode 100644 doc/source/command-objects/identity-provider.rst

diff --git a/doc/source/command-objects/identity-provider.rst b/doc/source/command-objects/identity-provider.rst
new file mode 100644
index 0000000000..f08cde0188
--- /dev/null
+++ b/doc/source/command-objects/identity-provider.rst
@@ -0,0 +1,100 @@
+=================
+identity provider
+=================
+
+Identity v3
+
+`Requires: OS-FEDERATION extension`
+
+identity provider create
+------------------------
+
+Create new identity provider
+
+.. program:: identity provider create
+.. code:: bash
+
+    os identity provider create
+        [--description <description>]
+        [--enable | --disable]
+        <name>
+
+.. option:: --description
+
+    New identity provider description
+
+.. option:: --enable
+
+    Enable the identity provider (default)
+
+.. option:: --disable
+
+    Disable the identity provider
+
+.. describe:: <name>
+
+    New identity provider name (must be unique)
+
+identity provider delete
+------------------------
+
+Delete an identity provider
+
+.. program:: identity provider delete
+.. code:: bash
+
+    os identity provider delete
+        <identity-provider>
+
+.. describe:: <identity-provider>
+
+    Identity provider to delete
+
+identity provider list
+----------------------
+
+List identity providers
+
+.. program:: identity provider list
+.. code:: bash
+
+    os identity provider list
+
+identity provider set
+---------------------
+
+Set identity provider properties
+
+.. program:: identity provider set
+.. code:: bash
+
+    os identity provider set
+        [--enable | --disable]
+        <identity-provider>
+
+.. option:: --enable
+
+    Enable the identity provider
+
+.. option:: --disable
+
+    Disable the identity provider
+
+.. describe:: <identity-provider>
+
+    Identity provider to modify
+
+identity provider show
+----------------------
+
+Display identity provider details
+
+.. program:: identity provider show
+.. code:: bash
+
+    os identity provider show
+        <identity-provider>
+
+.. describe:: <identity-provider>
+
+    Identity provider to display
diff --git a/doc/source/commands.rst b/doc/source/commands.rst
index 8976fc029a..cbe46ef7e7 100644
--- a/doc/source/commands.rst
+++ b/doc/source/commands.rst
@@ -87,7 +87,7 @@ referring to both Compute and Volume quotas.
 * ``group``: (**Identity**) a grouping of users
 * ``host``: Compute - the physical computer running a hypervisor
 * ``hypervisor``: Compute - the virtual machine manager
-* ``identity provider``: Identity - a source of users and authentication
+* ``identity provider``: (**Identity**) a source of users and authentication
 * ``image``: Image - a disk image
 * ``ip fixed``: Compute, Network - an internal IP address assigned to a server
 * ``ip floating``: Compute, Network - a public IP address that can be mapped to a server
diff --git a/openstackclient/identity/v3/identity_provider.py b/openstackclient/identity/v3/identity_provider.py
index 8a1b22d0cf..f46341a16b 100644
--- a/openstackclient/identity/v3/identity_provider.py
+++ b/openstackclient/identity/v3/identity_provider.py
@@ -15,7 +15,6 @@
 
 import logging
 import six
-import sys
 
 from cliff import command
 from cliff import lister
@@ -33,22 +32,21 @@ class CreateIdentityProvider(show.ShowOne):
         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)'
+            metavar='<name>',
+            help='New identity provider name (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',
+            help='Enable identity provider (default)',
         )
         enable_identity_provider.add_argument(
             '--disable',
@@ -79,8 +77,8 @@ class DeleteIdentityProvider(command.Command):
         parser = super(DeleteIdentityProvider, self).get_parser(prog_name)
         parser.add_argument(
             'identity_provider',
-            metavar='<identity-provider-id>',
-            help='Identity provider ID to delete',
+            metavar='<identity-provider>',
+            help='Identity provider to delete',
         )
         return parser
 
@@ -118,10 +116,9 @@ class SetIdentityProvider(command.Command):
         parser = super(SetIdentityProvider, self).get_parser(prog_name)
         parser.add_argument(
             'identity_provider',
-            metavar='<identity-provider-id>',
-            help='Identity provider ID to change',
+            metavar='<identity-provider>',
+            help='Identity provider to modify',
         )
-
         enable_identity_provider = parser.add_mutually_exclusive_group()
         enable_identity_provider.add_argument(
             '--enable',
@@ -144,19 +141,17 @@ class SetIdentityProvider(command.Command):
         elif parsed_args.disable is True:
             enabled = False
         else:
-            sys.stdout.write("Identity Provider not updated, "
-                             "no arguments present")
+            self.log.error("No changes requested")
             return (None, None)
 
         identity_provider = federation_client.identity_providers.update(
             parsed_args.identity_provider, enabled=enabled)
-        info = {}
-        info.update(identity_provider._info)
-        return zip(*sorted(six.iteritems(info)))
+        identity_provider._info.pop('links', None)
+        return zip(*sorted(six.iteritems(identity_provider._info)))
 
 
 class ShowIdentityProvider(show.ShowOne):
-    """Show identity provider details"""
+    """Display identity provider details"""
 
     log = logging.getLogger(__name__ + '.ShowIdentityProvider')
 
@@ -164,8 +159,8 @@ class ShowIdentityProvider(show.ShowOne):
         parser = super(ShowIdentityProvider, self).get_parser(prog_name)
         parser.add_argument(
             'identity_provider',
-            metavar='<identity-provider-id>',
-            help='Identity provider ID to show',
+            metavar='<identity-provider>',
+            help='Identity provider to display',
         )
         return parser