summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/tests/volume/v2/test_snapshot.py20
-rw-r--r--openstackclient/volume/v2/snapshot.py14
2 files changed, 31 insertions, 3 deletions
diff --git a/openstackclient/tests/volume/v2/test_snapshot.py b/openstackclient/tests/volume/v2/test_snapshot.py
index 8c75dfb2..d2fa5e07 100644
--- a/openstackclient/tests/volume/v2/test_snapshot.py
+++ b/openstackclient/tests/volume/v2/test_snapshot.py
@@ -229,7 +229,6 @@ class TestSnapshotList(TestSnapshot):
class TestSnapshotSet(TestSnapshot):
-
def setUp(self):
super(TestSnapshotSet, self).setUp()
@@ -270,6 +269,23 @@ class TestSnapshotSet(TestSnapshot):
)
self.assertIsNone(result)
+ def test_snapshot_set_state_to_error(self):
+ arglist = [
+ "--state", "error",
+ volume_fakes.snapshot_id
+ ]
+ verifylist = [
+ ("state", "error"),
+ ("snapshot", volume_fakes.snapshot_id)
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ self.snapshots_mock.reset_state.assert_called_with(
+ volume_fakes.snapshot_id, "error")
+ self.assertIsNone(result)
+
class TestSnapshotShow(TestSnapshot):
@@ -300,7 +316,6 @@ class TestSnapshotShow(TestSnapshot):
class TestSnapshotUnset(TestSnapshot):
-
def setUp(self):
super(TestSnapshotUnset, self).setUp()
@@ -322,6 +337,7 @@ class TestSnapshotUnset(TestSnapshot):
("snapshot", volume_fakes.snapshot_id),
("property", ["foo"])
]
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
diff --git a/openstackclient/volume/v2/snapshot.py b/openstackclient/volume/v2/snapshot.py
index f124a5e2..65cb9a75 100644
--- a/openstackclient/volume/v2/snapshot.py
+++ b/openstackclient/volume/v2/snapshot.py
@@ -179,6 +179,14 @@ class SetSnapshot(command.Command):
help='Property to add/change for this snapshot '
'(repeat option to set multiple properties)',
)
+ parser.add_argument(
+ '--state',
+ metavar='<state>',
+ choices=['available', 'error', 'creating', 'deleting',
+ 'error-deleting'],
+ help='New snapshot state. Valid values are available, '
+ 'error, creating, deleting, and error-deleting.',
+ )
return parser
def take_action(self, parsed_args):
@@ -192,13 +200,17 @@ class SetSnapshot(command.Command):
if parsed_args.description:
kwargs['description'] = parsed_args.description
- if not kwargs and not parsed_args.property:
+ if (not kwargs and not parsed_args.property and not
+ parsed_args.state):
self.app.log.error("No changes requested\n")
return
if parsed_args.property:
volume_client.volume_snapshots.set_metadata(snapshot.id,
parsed_args.property)
+ if parsed_args.state:
+ volume_client.volume_snapshots.reset_state(snapshot.id,
+ parsed_args.state)
volume_client.volume_snapshots.update(snapshot.id, **kwargs)