From b56da8dde2ef78f057e67b0b307ee7ce2dff2d7d Mon Sep 17 00:00:00 2001
From: Dean Troyer <dtroyer@gmail.com>
Date: Tue, 30 Dec 2014 17:46:02 -0600
Subject: [PATCH] Add endpoint v3 docs

(update: change version description formats for API versioning)

Change-Id: I499ea1d80ad6ad6392468305f761e695d7261e33
---
 doc/source/command-objects/endpoint.rst   | 161 +++++++++++++++++++++-
 openstackclient/identity/v2_0/endpoint.py |  47 ++++---
 openstackclient/identity/v3/endpoint.py   |  71 ++++++----
 3 files changed, 225 insertions(+), 54 deletions(-)

diff --git a/doc/source/command-objects/endpoint.rst b/doc/source/command-objects/endpoint.rst
index 128ddfa021..7846a1b1f5 100644
--- a/doc/source/command-objects/endpoint.rst
+++ b/doc/source/command-objects/endpoint.rst
@@ -7,39 +7,190 @@ Identity v2, v3
 endpoint create
 ---------------
 
+Create new endpoint
+
+*Identity version 2 only*
+
 .. program:: endpoint create
 .. code:: bash
 
     os endpoint create
-        --publicurl <public-url>
-        [--adminurl <admin-url>]
-        [--internalurl <internal-url>]
-        [--region <endpoint-region>]
+        --publicurl <url>
+        [--adminurl <url>]
+        [--internalurl <url>]
+        [--region <region-id>]
         <service>
 
+.. option:: --publicurl <url>
+
+    New endpoint public URL (required)
+
+.. option:: --adminurl <url>
+
+    New endpoint admin URL
+
+.. option:: --internalurl <url>
+
+    New endpoint internal URL
+
+.. option:: --region <region-id>
+
+    New endpoint region ID
+
+.. _endpoint_create-endpoint:
+.. describe:: <service>
+
+    New endpoint service (name or ID)
+
+*Identity version 3 only*
+
+.. program:: endpoint create
+.. code:: bash
+
+    os endpoint create
+        [--region <region-id>
+        [--enable | --disable]
+        <service>
+        <interface>
+        <url>
+
+.. option:: --region <region-id>
+
+    New endpoint region ID
+
+.. option:: --enable
+
+    Enable endpoint (default)
+
+.. option:: --disable
+
+    Disable endpoint
+
+.. describe:: <service>
+
+    New endpoint service (name or ID)
+
+.. describe:: <interface>
+
+    New endpoint interface type (admin, public or internal)
+
+.. describe:: <url>
+
+    New endpoint URL
+
 endpoint delete
 ---------------
 
+Delete endpoint
+
 .. program:: endpoint delete
 .. code:: bash
 
     os endpoint delete
         <endpoint-id>
 
+.. _endpoint_delete-endpoint:
+.. describe:: <endpoint-id>
+
+    Endpoint ID to delete
+
 endpoint list
 -------------
 
+List endpoints
+
 .. program:: endpoint list
 .. code:: bash
 
     os endpoint list
+        [--service <service]
+        [--interface <interface>]
+        [--region <region-id>]
         [--long]
 
+.. option:: --service <service>
+
+    Filter by service
+
+    *Identity version 3 only*
+
+.. option:: --interface <interface>
+
+    Filter by interface type (admin, public or internal)
+
+    *Identity version 3 only*
+
+.. option:: --region <region-id>
+
+    Filter by region ID
+
+    *Identity version 3 only*
+
+.. option:: --long
+
+    List additional fields in output
+
+    *Identity version 2 only*
+
+endpoint set
+------------
+
+Set endpoint properties
+
+*Identity version 3 only*
+
+.. program:: endpoint set
+.. code:: bash
+
+    os endpoint set
+        [--region <region-id>]
+        [--interface <interface>]
+        [--url <url>]
+        [--service <service>]
+        [--enable | --disable]
+        <endpoint-id>
+
+.. option:: --region <region-id>
+
+    New endpoint region ID
+
+.. option:: --interface <interface>
+
+    New endpoint interface type (admin, public or internal)
+
+.. option:: --url <url>
+
+    New endpoint URL
+
+.. option:: --service <service>
+
+    New endpoint service (name or ID)
+
+.. option:: --enable
+
+    Enable endpoint
+
+.. option:: --disable
+
+    Disable endpoint
+
+.. _endpoint_set-endpoint:
+.. describe:: <endpoint-id>
+
+    Endpoint ID to modify
+
 endpoint show
 -------------
 
+Display endpoint details
+
 .. program:: endpoint show
 .. code:: bash
 
     os endpoint show
-        <endpoint_or_service-type>
+        <endpoint-id>
+
+.. _endpoint_show-endpoint:
+.. describe:: <endpoint-id>
+
+    Endpoint ID to display
diff --git a/openstackclient/identity/v2_0/endpoint.py b/openstackclient/identity/v2_0/endpoint.py
index c5189b62e7..370a931d40 100644
--- a/openstackclient/identity/v2_0/endpoint.py
+++ b/openstackclient/identity/v2_0/endpoint.py
@@ -28,7 +28,7 @@ from openstackclient.identity import common
 
 
 class CreateEndpoint(show.ShowOne):
-    """Create endpoint"""
+    """Create new endpoint"""
 
     log = logging.getLogger(__name__ + '.CreateEndpoint')
 
@@ -36,25 +36,30 @@ class CreateEndpoint(show.ShowOne):
         parser = super(CreateEndpoint, self).get_parser(prog_name)
         parser.add_argument(
             'service',
-            metavar='<endpoint-service>',
-            help=_('New endpoint service'))
-        parser.add_argument(
-            '--region',
-            metavar='<region>',
-            help=_('New endpoint region'))
+            metavar='<service>',
+            help=_('New endpoint service (name or ID)'),
+        )
         parser.add_argument(
             '--publicurl',
-            metavar='<public-url>',
+            metavar='<url>',
             required=True,
-            help=_('New endpoint public URL'))
+            help=_('New endpoint public URL (required)'),
+        )
         parser.add_argument(
             '--adminurl',
-            metavar='<admin-url>',
-            help=_('New endpoint admin URL'))
+            metavar='<url>',
+            help=_('New endpoint admin URL'),
+        )
         parser.add_argument(
             '--internalurl',
-            metavar='<internal-url>',
-            help=_('New endpoint internal URL'))
+            metavar='<url>',
+            help=_('New endpoint internal URL'),
+        )
+        parser.add_argument(
+            '--region',
+            metavar='<region-id>',
+            help=_('New endpoint region ID'),
+        )
         return parser
 
     def take_action(self, parsed_args):
@@ -76,7 +81,7 @@ class CreateEndpoint(show.ShowOne):
 
 
 class DeleteEndpoint(command.Command):
-    """Delete endpoint command"""
+    """Delete endpoint"""
 
     log = logging.getLogger(__name__ + '.DeleteEndpoint')
 
@@ -85,7 +90,7 @@ class DeleteEndpoint(command.Command):
         parser.add_argument(
             'endpoint',
             metavar='<endpoint-id>',
-            help=_('ID of endpoint to delete'))
+            help=_('Endpoint ID to delete'))
         return parser
 
     def take_action(self, parsed_args):
@@ -96,7 +101,7 @@ class DeleteEndpoint(command.Command):
 
 
 class ListEndpoint(lister.Lister):
-    """List endpoint command"""
+    """List endpoints"""
 
     log = logging.getLogger(__name__ + '.ListEndpoint')
 
@@ -106,7 +111,8 @@ class ListEndpoint(lister.Lister):
             '--long',
             action='store_true',
             default=False,
-            help=_('List additional fields in output'))
+            help=_('List additional fields in output'),
+        )
         return parser
 
     def take_action(self, parsed_args):
@@ -131,7 +137,7 @@ class ListEndpoint(lister.Lister):
 
 
 class ShowEndpoint(show.ShowOne):
-    """Show endpoint command"""
+    """Display endpoint details"""
 
     log = logging.getLogger(__name__ + '.ShowEndpoint')
 
@@ -139,8 +145,9 @@ class ShowEndpoint(show.ShowOne):
         parser = super(ShowEndpoint, self).get_parser(prog_name)
         parser.add_argument(
             'endpoint_or_service',
-            metavar='<endpoint_or_service>',
-            help=_('Endpoint ID or name, type or ID of service to display'))
+            metavar='<endpoint-id>',
+            help=_('Endpoint ID to display'),
+        )
         return parser
 
     def take_action(self, parsed_args):
diff --git a/openstackclient/identity/v3/endpoint.py b/openstackclient/identity/v3/endpoint.py
index 0c077c5a34..5b8104e514 100644
--- a/openstackclient/identity/v3/endpoint.py
+++ b/openstackclient/identity/v3/endpoint.py
@@ -28,7 +28,7 @@ from openstackclient.identity import common
 
 
 class CreateEndpoint(show.ShowOne):
-    """Create endpoint command"""
+    """Create new endpoint"""
 
     log = logging.getLogger(__name__ + '.CreateEndpoint')
 
@@ -37,27 +37,31 @@ class CreateEndpoint(show.ShowOne):
         parser.add_argument(
             'service',
             metavar='<service>',
-            help='Name or ID of new endpoint service')
+            help='New endpoint service (name or ID)',
+        )
         parser.add_argument(
             'interface',
             metavar='<interface>',
             choices=['admin', 'public', 'internal'],
-            help='New endpoint interface, must be admin, public or internal')
+            help='New endpoint interface type (admin, public or internal)',
+        )
         parser.add_argument(
             'url',
             metavar='<url>',
-            help='New endpoint URL')
+            help='New endpoint URL',
+        )
         parser.add_argument(
             '--region',
-            metavar='<region>',
-            help='New endpoint region')
+            metavar='<region-id>',
+            help='New endpoint region ID',
+        )
         enable_group = parser.add_mutually_exclusive_group()
         enable_group.add_argument(
             '--enable',
             dest='enabled',
             action='store_true',
             default=True,
-            help='Enable endpoint',
+            help='Enable endpoint (default)',
         )
         enable_group.add_argument(
             '--disable',
@@ -89,7 +93,7 @@ class CreateEndpoint(show.ShowOne):
 
 
 class DeleteEndpoint(command.Command):
-    """Delete endpoint command"""
+    """Delete endpoint"""
 
     log = logging.getLogger(__name__ + '.DeleteEndpoint')
 
@@ -97,8 +101,9 @@ class DeleteEndpoint(command.Command):
         parser = super(DeleteEndpoint, self).get_parser(prog_name)
         parser.add_argument(
             'endpoint',
-            metavar='<endpoint>',
-            help='ID of endpoint to delete')
+            metavar='<endpoint-id>',
+            help='Endpoint ID to delete',
+        )
         return parser
 
     def take_action(self, parsed_args):
@@ -111,7 +116,7 @@ class DeleteEndpoint(command.Command):
 
 
 class ListEndpoint(lister.Lister):
-    """List endpoint command"""
+    """List endpoints"""
 
     log = logging.getLogger(__name__ + '.ListEndpoint')
 
@@ -120,17 +125,19 @@ class ListEndpoint(lister.Lister):
         parser.add_argument(
             '--service',
             metavar='<service>',
-            help='Filter by a specific service')
+            help='Filter by service',
+        )
         parser.add_argument(
             '--interface',
             metavar='<interface>',
             choices=['admin', 'public', 'internal'],
-            help='Filter by a specific interface, must be admin, public or'
-                 ' internal')
+            help='Filter by interface type (admin, public or internal)',
+        )
         parser.add_argument(
             '--region',
-            metavar='<region>',
-            help='Filter by a specific region')
+            metavar='<region-id>',
+            help='Filter by region ID',
+        )
         return parser
 
     def take_action(self, parsed_args):
@@ -160,7 +167,7 @@ class ListEndpoint(lister.Lister):
 
 
 class SetEndpoint(command.Command):
-    """Set endpoint command"""
+    """Set endpoint properties"""
 
     log = logging.getLogger(__name__ + '.SetEndpoint')
 
@@ -168,25 +175,30 @@ class SetEndpoint(command.Command):
         parser = super(SetEndpoint, self).get_parser(prog_name)
         parser.add_argument(
             'endpoint',
-            metavar='<endpoint>',
-            help='ID of endpoint to update')
+            metavar='<endpoint-id>',
+            help='Endpoint ID to modify',
+        )
+        parser.add_argument(
+            '--region',
+            metavar='<region-id>',
+            help='New endpoint region ID',
+        )
         parser.add_argument(
             '--interface',
             metavar='<interface>',
             choices=['admin', 'public', 'internal'],
-            help='New endpoint interface, must be admin|public|internal')
+            help='New endpoint interface type (admin, public or internal)',
+        )
         parser.add_argument(
             '--url',
             metavar='<url>',
-            help='New endpoint URL')
+            help='New endpoint URL',
+        )
         parser.add_argument(
             '--service',
             metavar='<service>',
-            help='Name or ID of new endpoint service')
-        parser.add_argument(
-            '--region',
-            metavar='<region>',
-            help='New endpoint region')
+            help='New endpoint service (name or ID)',
+        )
         enable_group = parser.add_mutually_exclusive_group()
         enable_group.add_argument(
             '--enable',
@@ -238,7 +250,7 @@ class SetEndpoint(command.Command):
 
 
 class ShowEndpoint(show.ShowOne):
-    """Show endpoint command"""
+    """Display endpoint details"""
 
     log = logging.getLogger(__name__ + '.ShowEndpoint')
 
@@ -246,8 +258,9 @@ class ShowEndpoint(show.ShowOne):
         parser = super(ShowEndpoint, self).get_parser(prog_name)
         parser.add_argument(
             'endpoint',
-            metavar='<endpoint>',
-            help='ID of endpoint to display')
+            metavar='<endpoint-id>',
+            help='Endpoint ID to display',
+        )
         return parser
 
     def take_action(self, parsed_args):