summaryrefslogtreecommitdiff
path: root/openstackclient/volume
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/volume')
-rw-r--r--openstackclient/volume/v1/volume_transfer_request.py75
-rw-r--r--openstackclient/volume/v2/volume_transfer_request.py75
2 files changed, 114 insertions, 36 deletions
diff --git a/openstackclient/volume/v1/volume_transfer_request.py b/openstackclient/volume/v1/volume_transfer_request.py
index f24d5a56..f5b567b9 100644
--- a/openstackclient/volume/v1/volume_transfer_request.py
+++ b/openstackclient/volume/v1/volume_transfer_request.py
@@ -14,6 +14,7 @@
"""Volume v1 transfer action implementations"""
+import argparse
import logging
from osc_lib.command import command
@@ -34,22 +35,54 @@ class AcceptTransferRequest(command.ShowOne):
parser = super(AcceptTransferRequest, self).get_parser(prog_name)
parser.add_argument(
'transfer_request',
- metavar="<transfer-request>",
- help=_('Volume transfer request to accept (name or ID)'),
+ metavar="<transfer-request-id>",
+ help=_('Volume transfer request to accept (ID only)'),
+ )
+ parser.add_argument(
+ 'old_auth_key',
+ metavar="<key>",
+ nargs="?",
+ help=argparse.SUPPRESS,
)
parser.add_argument(
- 'auth_key',
- metavar="<auth-key>",
- help=_('Authentication key of transfer request'),
+ '--auth-key',
+ metavar="<key>",
+ help=_('Volume transfer request authentication key'),
)
return parser
def take_action(self, parsed_args):
volume_client = self.app.client_manager.volume
- transfer_request_id = utils.find_resource(
- volume_client.transfers, parsed_args.transfer_request).id
+
+ try:
+ transfer_request_id = utils.find_resource(
+ volume_client.transfers,
+ parsed_args.transfer_request
+ ).id
+ except exceptions.CommandError:
+ # Non-admin users will fail to lookup name -> ID so we just
+ # move on and attempt with the user-supplied information
+ transfer_request_id = parsed_args.transfer_request
+
+ # Remain backward-compatible for the previous command layout
+ # TODO(dtroyer): Remove this back-compat in 4.0 or Oct 2017
+ if not parsed_args.auth_key:
+ if parsed_args.old_auth_key:
+ # Move the old one into the correct place
+ parsed_args.auth_key = parsed_args.old_auth_key
+ self.log.warning(_(
+ 'Specifying the auth-key as a positional argument '
+ 'has been deprecated. Please use the --auth-key '
+ 'option in the future.'
+ ))
+ else:
+ msg = _("argument --auth-key is required")
+ raise exceptions.CommandError(msg)
+
transfer_accept = volume_client.transfers.accept(
- transfer_request_id, parsed_args.auth_key)
+ transfer_request_id,
+ parsed_args.auth_key,
+ )
transfer_accept._info.pop("links", None)
return zip(*sorted(six.iteritems(transfer_accept._info)))
@@ -75,9 +108,12 @@ class CreateTransferRequest(command.ShowOne):
def take_action(self, parsed_args):
volume_client = self.app.client_manager.volume
volume_id = utils.find_resource(
- volume_client.volumes, parsed_args.volume).id
+ volume_client.volumes,
+ parsed_args.volume,
+ ).id
volume_transfer_request = volume_client.transfers.create(
- volume_id, parsed_args.name,
+ volume_id,
+ parsed_args.name,
)
volume_transfer_request._info.pop("links", None)
@@ -104,7 +140,9 @@ class DeleteTransferRequest(command.Command):
for t in parsed_args.transfer_request:
try:
transfer_request_id = utils.find_resource(
- volume_client.transfers, t).id
+ volume_client.transfers,
+ t,
+ ).id
volume_client.transfers.delete(transfer_request_id)
except Exception as e:
result += 1
@@ -115,7 +153,7 @@ class DeleteTransferRequest(command.Command):
if result > 0:
total = len(parsed_args.transfer_request)
msg = (_("%(result)s of %(total)s volume transfer requests failed"
- " to delete.") % {'result': result, 'total': total})
+ " to delete") % {'result': result, 'total': total})
raise exceptions.CommandError(msg)
@@ -129,20 +167,19 @@ class ListTransferRequest(command.Lister):
dest='all_projects',
action="store_true",
default=False,
- help=_('Shows detail for all projects. Admin only. '
- '(defaults to False)')
+ help=_('Include all projects (admin only)'),
)
return parser
def take_action(self, parsed_args):
- columns = ['ID', 'Volume ID', 'Name']
- column_headers = ['ID', 'Volume', 'Name']
+ columns = ['ID', 'Name', 'Volume ID']
+ column_headers = ['ID', 'Name', 'Volume']
volume_client = self.app.client_manager.volume
volume_transfer_result = volume_client.transfers.list(
detailed=True,
- search_opts={'all_tenants': parsed_args.all_projects}
+ search_opts={'all_tenants': parsed_args.all_projects},
)
return (column_headers, (
@@ -165,7 +202,9 @@ class ShowTransferRequest(command.ShowOne):
def take_action(self, parsed_args):
volume_client = self.app.client_manager.volume
volume_transfer_request = utils.find_resource(
- volume_client.transfers, parsed_args.transfer_request)
+ volume_client.transfers,
+ parsed_args.transfer_request,
+ )
volume_transfer_request._info.pop("links", None)
return zip(*sorted(six.iteritems(volume_transfer_request._info)))
diff --git a/openstackclient/volume/v2/volume_transfer_request.py b/openstackclient/volume/v2/volume_transfer_request.py
index aefe594a..2f531dc8 100644
--- a/openstackclient/volume/v2/volume_transfer_request.py
+++ b/openstackclient/volume/v2/volume_transfer_request.py
@@ -14,6 +14,7 @@
"""Volume v2 transfer action implementations"""
+import argparse
import logging
from osc_lib.command import command
@@ -34,22 +35,54 @@ class AcceptTransferRequest(command.ShowOne):
parser = super(AcceptTransferRequest, self).get_parser(prog_name)
parser.add_argument(
'transfer_request',
- metavar="<transfer-request>",
- help=_('Volume transfer request to accept (name or ID)'),
+ metavar="<transfer-request-id>",
+ help=_('Volume transfer request to accept (ID only)'),
+ )
+ parser.add_argument(
+ 'old_auth_key',
+ metavar="<key>",
+ nargs="?",
+ help=argparse.SUPPRESS,
)
parser.add_argument(
- 'auth_key',
- metavar="<auth-key>",
- help=_('Authentication key of transfer request'),
+ '--auth-key',
+ metavar="<key>",
+ help=_('Volume transfer request authentication key'),
)
return parser
def take_action(self, parsed_args):
volume_client = self.app.client_manager.volume
- transfer_request_id = utils.find_resource(
- volume_client.transfers, parsed_args.transfer_request).id
+
+ try:
+ transfer_request_id = utils.find_resource(
+ volume_client.transfers,
+ parsed_args.transfer_request
+ ).id
+ except exceptions.CommandError:
+ # Non-admin users will fail to lookup name -> ID so we just
+ # move on and attempt with the user-supplied information
+ transfer_request_id = parsed_args.transfer_request
+
+ # Remain backward-compatible for the previous command layout
+ # TODO(dtroyer): Remove this back-compat in 4.0 or Oct 2017
+ if not parsed_args.auth_key:
+ if parsed_args.old_auth_key:
+ # Move the old one into the correct place
+ parsed_args.auth_key = parsed_args.old_auth_key
+ self.log.warning(_(
+ 'Specifying the auth-key as a positional argument '
+ 'has been deprecated. Please use the --auth-key '
+ 'option in the future.'
+ ))
+ else:
+ msg = _("argument --auth-key is required")
+ raise exceptions.CommandError(msg)
+
transfer_accept = volume_client.transfers.accept(
- transfer_request_id, parsed_args.auth_key)
+ transfer_request_id,
+ parsed_args.auth_key,
+ )
transfer_accept._info.pop("links", None)
return zip(*sorted(six.iteritems(transfer_accept._info)))
@@ -75,9 +108,12 @@ class CreateTransferRequest(command.ShowOne):
def take_action(self, parsed_args):
volume_client = self.app.client_manager.volume
volume_id = utils.find_resource(
- volume_client.volumes, parsed_args.volume).id
+ volume_client.volumes,
+ parsed_args.volume,
+ ).id
volume_transfer_request = volume_client.transfers.create(
- volume_id, parsed_args.name,
+ volume_id,
+ parsed_args.name,
)
volume_transfer_request._info.pop("links", None)
@@ -104,7 +140,9 @@ class DeleteTransferRequest(command.Command):
for t in parsed_args.transfer_request:
try:
transfer_request_id = utils.find_resource(
- volume_client.transfers, t).id
+ volume_client.transfers,
+ t,
+ ).id
volume_client.transfers.delete(transfer_request_id)
except Exception as e:
result += 1
@@ -115,7 +153,7 @@ class DeleteTransferRequest(command.Command):
if result > 0:
total = len(parsed_args.transfer_request)
msg = (_("%(result)s of %(total)s volume transfer requests failed"
- " to delete.") % {'result': result, 'total': total})
+ " to delete") % {'result': result, 'total': total})
raise exceptions.CommandError(msg)
@@ -129,20 +167,19 @@ class ListTransferRequest(command.Lister):
dest='all_projects',
action="store_true",
default=False,
- help=_('Shows detail for all projects. Admin only. '
- '(defaults to False)')
+ help=_('Include all projects (admin only)'),
)
return parser
def take_action(self, parsed_args):
- columns = ['ID', 'Volume ID', 'Name']
- column_headers = ['ID', 'Volume', 'Name']
+ columns = ['ID', 'Name', 'Volume ID']
+ column_headers = ['ID', 'Name', 'Volume']
volume_client = self.app.client_manager.volume
volume_transfer_result = volume_client.transfers.list(
detailed=True,
- search_opts={'all_tenants': parsed_args.all_projects}
+ search_opts={'all_tenants': parsed_args.all_projects},
)
return (column_headers, (
@@ -165,7 +202,9 @@ class ShowTransferRequest(command.ShowOne):
def take_action(self, parsed_args):
volume_client = self.app.client_manager.volume
volume_transfer_request = utils.find_resource(
- volume_client.transfers, parsed_args.transfer_request)
+ volume_client.transfers,
+ parsed_args.transfer_request,
+ )
volume_transfer_request._info.pop("links", None)
return zip(*sorted(six.iteritems(volume_transfer_request._info)))