Merge "Add --attached / --detached parameter to volume set"

This commit is contained in:
Zuul 2019-03-06 00:58:17 +00:00 committed by Gerrit Code Review
commit 303cb4735d
4 changed files with 95 additions and 0 deletions

View File

@ -262,6 +262,7 @@ Set volume properties
[--property <key=value> [...] ]
[--image-property <key=value> [...] ]
[--state <state>]
[--attached | --detached ]
[--type <volume-type>]
[--retype-policy <retype-policy>]
[--bootable | --non-bootable]
@ -341,6 +342,22 @@ Set volume properties
*Volume version 2 only*
.. option:: --attached
Set volume attachment status to "attached" (admin only)
(This option simply changes the state of the volume in the database with
no regard to actual status, exercise caution when using)
*Volume version 2 only*
.. option:: --deattach
Set volume attachment status to "detached" (admin only)
(This option simply changes the state of the volume in the database with
no regard to actual status, exercise caution when using)
*Volume version 2 only*
.. _volume_set-volume:
.. describe:: <volume>

View File

@ -1327,6 +1327,42 @@ class TestVolumeSet(TestVolume):
self.volumes_mock.reset_state.assert_called_with(
self.new_volume.id, 'error')
def test_volume_set_attached(self):
arglist = [
'--attached',
self.new_volume.id
]
verifylist = [
('attached', True),
('detached', False),
('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, attach_status='attached', state=None)
self.assertIsNone(result)
def test_volume_set_detached(self):
arglist = [
'--detached',
self.new_volume.id
]
verifylist = [
('attached', False),
('detached', True),
('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, attach_status='detached', state=None)
self.assertIsNone(result)
def test_volume_set_bootable(self):
arglist = [
['--bootable', self.new_volume.id],

View File

@ -559,6 +559,25 @@ class SetVolume(command.Command):
'in the database with no regard to actual status, '
'exercise caution when using)'),
)
attached_group = parser.add_mutually_exclusive_group()
attached_group.add_argument(
"--attached",
action="store_true",
help=_('Set volume attachment status to "attached" '
'(admin only) '
'(This option simply changes the state of the volume '
'in the database with no regard to actual status, '
'exercise caution when using)'),
)
attached_group.add_argument(
"--detached",
action="store_true",
help=_('Set volume attachment status to "detached" '
'(admin only) '
'(This option simply changes the state of the volume '
'in the database with no regard to actual status, '
'exercise caution when using)'),
)
parser.add_argument(
'--type',
metavar='<volume-type>',
@ -645,6 +664,22 @@ class SetVolume(command.Command):
except Exception as e:
LOG.error(_("Failed to set volume state: %s"), e)
result += 1
if parsed_args.attached:
try:
volume_client.volumes.reset_state(
volume.id, state=None,
attach_status="attached")
except Exception as e:
LOG.error(_("Failed to set volume attach-status: %s"), e)
result += 1
if parsed_args.detached:
try:
volume_client.volumes.reset_state(
volume.id, state=None,
attach_status="detached")
except Exception as e:
LOG.error(_("Failed to set volume attach-status: %s"), e)
result += 1
if parsed_args.bootable or parsed_args.non_bootable:
try:
volume_client.volumes.set_bootable(

View File

@ -0,0 +1,7 @@
---
features:
- |
Add ``--attached`` and ``--detached`` options to ``volume set`` command to set the
volume status in the database. This is the functional equivalent to
``cinder reset-state --attach-status``.
[`bug 1745699 <https://bugs.launchpad.net/python-openstackclient/+bug/1745699>`_