summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/tests/volume/v2/test_volume.py77
-rw-r--r--openstackclient/volume/v2/volume.py12
2 files changed, 59 insertions, 30 deletions
diff --git a/openstackclient/tests/volume/v2/test_volume.py b/openstackclient/tests/volume/v2/test_volume.py
index 6f552ad6..c2740cab 100644
--- a/openstackclient/tests/volume/v2/test_volume.py
+++ b/openstackclient/tests/volume/v2/test_volume.py
@@ -814,6 +814,53 @@ class TestVolumeList(TestVolume):
self.assertEqual(datalist, tuple(data))
+class TestVolumeSet(TestVolume):
+
+ def setUp(self):
+ super(TestVolumeSet, self).setUp()
+
+ self.new_volume = volume_fakes.FakeVolume.create_one_volume()
+ self.volumes_mock.get.return_value = self.new_volume
+
+ # Get the command object to test
+ self.cmd = volume.SetVolume(self.app, None)
+
+ def test_volume_set_image_property(self):
+ arglist = [
+ '--image-property', 'Alpha=a',
+ '--image-property', 'Beta=b',
+ self.new_volume.id,
+ ]
+ verifylist = [
+ ('image_property', {'Alpha': 'a', 'Beta': 'b'}),
+ ('volume', self.new_volume.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # In base command class ShowOne in cliff, abstract method take_action()
+ # returns nothing
+ self.cmd.take_action(parsed_args)
+ self.volumes_mock.set_image_metadata.assert_called_with(
+ self.volumes_mock.get().id, parsed_args.image_property)
+
+ def test_volume_set_state(self):
+ arglist = [
+ '--state', 'error',
+ self.new_volume.id
+ ]
+ verifylist = [
+ ('state', 'error'),
+ ('volume', self.new_volume.id)
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+ self.volumes_mock.reset_state.assert_called_with(
+ self.new_volume.id, 'error')
+ self.assertIsNone(result)
+
+
class TestVolumeShow(TestVolume):
def setUp(self):
@@ -845,36 +892,6 @@ class TestVolumeShow(TestVolume):
data)
-class TestVolumeSet(TestVolume):
-
- def setUp(self):
- super(TestVolumeSet, self).setUp()
-
- self.new_volume = volume_fakes.FakeVolume.create_one_volume()
- self.volumes_mock.create.return_value = self.new_volume
-
- # Get the command object to test
- self.cmd = volume.SetVolume(self.app, None)
-
- def test_volume_set_image_property(self):
- arglist = [
- '--image-property', 'Alpha=a',
- '--image-property', 'Beta=b',
- self.new_volume.id,
- ]
- verifylist = [
- ('image_property', {'Alpha': 'a', 'Beta': 'b'}),
- ('volume', self.new_volume.id),
- ]
- parsed_args = self.check_parser(self.cmd, arglist, verifylist)
-
- # In base command class ShowOne in cliff, abstract method take_action()
- # returns nothing
- self.cmd.take_action(parsed_args)
- self.volumes_mock.set_image_metadata.assert_called_with(
- self.volumes_mock.get().id, parsed_args.image_property)
-
-
class TestVolumeUnset(TestVolume):
def setUp(self):
diff --git a/openstackclient/volume/v2/volume.py b/openstackclient/volume/v2/volume.py
index 6f055922..aee18e4f 100644
--- a/openstackclient/volume/v2/volume.py
+++ b/openstackclient/volume/v2/volume.py
@@ -378,6 +378,16 @@ class SetVolume(command.Command):
help=_('Set an image property on this volume '
'(repeat option to set multiple image properties)'),
)
+ parser.add_argument(
+ "--state",
+ metavar="<state>",
+ choices=['available', 'error', 'creating', 'deleting',
+ 'in-use', 'attaching', 'detaching', 'error_deleting',
+ 'maintenance'],
+ help=_('New volume state ("available", "error", "creating", '
+ '"deleting", "in-use", "attaching", "detaching", '
+ '"error_deleting" or "maintenance")'),
+ )
return parser
def take_action(self, parsed_args):
@@ -400,6 +410,8 @@ class SetVolume(command.Command):
if parsed_args.image_property:
volume_client.volumes.set_image_metadata(
volume.id, parsed_args.image_property)
+ if parsed_args.state:
+ volume_client.volumes.reset_state(volume.id, parsed_args.state)
kwargs = {}
if parsed_args.name: