summaryrefslogtreecommitdiff
path: root/openstackclient/volume/v2
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/volume/v2')
-rw-r--r--openstackclient/volume/v2/backup_record.py14
-rw-r--r--openstackclient/volume/v2/consistency_group.py45
-rw-r--r--openstackclient/volume/v2/volume.py37
3 files changed, 73 insertions, 23 deletions
diff --git a/openstackclient/volume/v2/backup_record.py b/openstackclient/volume/v2/backup_record.py
index 64ff4f67..0d3af641 100644
--- a/openstackclient/volume/v2/backup_record.py
+++ b/openstackclient/volume/v2/backup_record.py
@@ -26,9 +26,10 @@ LOG = logging.getLogger(__name__)
class ExportBackupRecord(command.ShowOne):
- _description = _('Export volume backup details. Backup information can be '
- 'imported into a new service instance to be able to '
- 'restore.')
+ _description = _("""Export volume backup details.
+
+Backup information can be imported into a new service instance to be able to
+restore.""")
def get_parser(self, prog_name):
parser = super(ExportBackupRecord, self).get_parser(prog_name)
@@ -54,9 +55,10 @@ class ExportBackupRecord(command.ShowOne):
class ImportBackupRecord(command.ShowOne):
- _description = _('Import volume backup details. Exported backup details '
- 'contain the metadata necessary to restore to a new or '
- 'rebuilt service instance')
+ _description = _("""Import volume backup details.
+
+Exported backup details contain the metadata necessary to restore to a new or
+rebuilt service instance""")
def get_parser(self, prog_name):
parser = super(ImportBackupRecord, self).get_parser(prog_name)
diff --git a/openstackclient/volume/v2/consistency_group.py b/openstackclient/volume/v2/consistency_group.py
index c50a1b5b..77da6f64 100644
--- a/openstackclient/volume/v2/consistency_group.py
+++ b/openstackclient/volume/v2/consistency_group.py
@@ -14,6 +14,7 @@
"""Volume v2 consistency group action implementations"""
+import argparse
import logging
from osc_lib.cli import format_columns
@@ -90,35 +91,51 @@ class CreateConsistencyGroup(command.ShowOne):
"name",
metavar="<name>",
nargs="?",
- help=_("Name of new consistency group (default to None)")
+ help=_("Name of new consistency group (default to None)"),
)
exclusive_group = parser.add_mutually_exclusive_group(required=True)
exclusive_group.add_argument(
"--volume-type",
metavar="<volume-type>",
- help=_("Volume type of this consistency group (name or ID)")
+ help=_("Volume type of this consistency group (name or ID)"),
)
exclusive_group.add_argument(
+ "--source",
+ metavar="<consistency-group>",
+ help=_("Existing consistency group (name or ID)"),
+ )
+ # NOTE(stephenfin): Legacy alias
+ exclusive_group.add_argument(
"--consistency-group-source",
metavar="<consistency-group>",
- help=_("Existing consistency group (name or ID)")
+ dest='source',
+ help=argparse.SUPPRESS,
+ )
+ exclusive_group.add_argument(
+ "--snapshot",
+ metavar="<consistency-group-snapshot>",
+ help=_("Existing consistency group snapshot (name or ID)"),
)
+ # NOTE(stephenfin): Legacy alias
exclusive_group.add_argument(
"--consistency-group-snapshot",
metavar="<consistency-group-snapshot>",
- help=_("Existing consistency group snapshot (name or ID)")
+ dest='snapshot',
+ help=argparse.SUPPRESS,
)
parser.add_argument(
"--description",
metavar="<description>",
- help=_("Description of this consistency group")
+ help=_("Description of this consistency group"),
)
parser.add_argument(
"--availability-zone",
metavar="<availability-zone>",
- help=_("Availability zone for this consistency group "
- "(not available if creating consistency group "
- "from source)"),
+ help=_(
+ "Availability zone for this consistency group "
+ "(not available if creating consistency group "
+ "from source)"
+ ),
)
return parser
@@ -142,21 +159,23 @@ class CreateConsistencyGroup(command.ShowOne):
consistency_group_id = None
consistency_group_snapshot = None
- if parsed_args.consistency_group_source:
+ if parsed_args.source:
consistency_group_id = utils.find_resource(
volume_client.consistencygroups,
- parsed_args.consistency_group_source).id
- elif parsed_args.consistency_group_snapshot:
+ parsed_args.source,
+ ).id
+ elif parsed_args.snapshot:
consistency_group_snapshot = utils.find_resource(
volume_client.cgsnapshots,
- parsed_args.consistency_group_snapshot).id
+ parsed_args.snapshot,
+ ).id
consistency_group = (
volume_client.consistencygroups.create_from_src(
consistency_group_snapshot,
consistency_group_id,
name=parsed_args.name,
- description=parsed_args.description
+ description=parsed_args.description,
)
)
diff --git a/openstackclient/volume/v2/volume.py b/openstackclient/volume/v2/volume.py
index 7905e097..a5e5a670 100644
--- a/openstackclient/volume/v2/volume.py
+++ b/openstackclient/volume/v2/volume.py
@@ -257,15 +257,44 @@ class CreateVolume(command.ShowOne):
if parsed_args.bootable or parsed_args.non_bootable:
try:
- volume_client.volumes.set_bootable(
- volume.id, parsed_args.bootable)
+ if utils.wait_for_status(
+ volume_client.volumes.get,
+ volume.id,
+ success_status=['available'],
+ error_status=['error'],
+ sleep_time=1
+ ):
+ volume_client.volumes.set_bootable(
+ volume.id,
+ parsed_args.bootable
+ )
+ else:
+ msg = _(
+ "Volume status is not available for setting boot "
+ "state"
+ )
+ raise exceptions.CommandError(msg)
except Exception as e:
LOG.error(_("Failed to set volume bootable property: %s"), e)
if parsed_args.read_only or parsed_args.read_write:
try:
- volume_client.volumes.update_readonly_flag(
+ if utils.wait_for_status(
+ volume_client.volumes.get,
volume.id,
- parsed_args.read_only)
+ success_status=['available'],
+ error_status=['error'],
+ sleep_time=1
+ ):
+ volume_client.volumes.update_readonly_flag(
+ volume.id,
+ parsed_args.read_only
+ )
+ else:
+ msg = _(
+ "Volume status is not available for setting it"
+ "read only."
+ )
+ raise exceptions.CommandError(msg)
except Exception as e:
LOG.error(_("Failed to set volume read-only access "
"mode flag: %s"), e)