[OSC] Implement Share Migration Cancel and Complete Command
This commit adds 'openstack share migration cancel' and 'openstack share migration complete' command, that implement the same functionality as 'manila migration-cancel'and 'manila migration-complete' command. Partially-implements: bp openstack-client-support Change-Id: I153d3131b591aef599cff87a5dbd85f5db3115dd
This commit is contained in:
parent
fa84d6118c
commit
4951255876
|
@ -68,6 +68,13 @@ share migration
|
||||||
.. autoprogram-cliff:: openstack.share.v2
|
.. autoprogram-cliff:: openstack.share.v2
|
||||||
:command: share migration start
|
:command: share migration start
|
||||||
|
|
||||||
|
.. autoprogram-cliff:: openstack.share.v2
|
||||||
|
:command: share migration cancel
|
||||||
|
|
||||||
|
.. autoprogram-cliff:: openstack.share.v2
|
||||||
|
:command: share migration complete
|
||||||
|
|
||||||
|
|
||||||
==============
|
==============
|
||||||
share networks
|
share networks
|
||||||
==============
|
==============
|
||||||
|
|
|
@ -1296,3 +1296,47 @@ class ShareMigrationStart(command.Command):
|
||||||
parsed_args.nondisruptive,
|
parsed_args.nondisruptive,
|
||||||
parsed_args.preserve_snapshots,
|
parsed_args.preserve_snapshots,
|
||||||
new_share_net_id, new_share_type_id)
|
new_share_net_id, new_share_type_id)
|
||||||
|
|
||||||
|
|
||||||
|
class ShareMigrationCancel(command.Command):
|
||||||
|
"""Cancels migration of a given share when copying
|
||||||
|
|
||||||
|
(Admin only, Experimental).
|
||||||
|
|
||||||
|
"""
|
||||||
|
_description = _("Cancels migration of a given share when copying")
|
||||||
|
|
||||||
|
def get_parser(self, prog_name):
|
||||||
|
parser = super(ShareMigrationCancel, self).get_parser(prog_name)
|
||||||
|
parser.add_argument(
|
||||||
|
'share',
|
||||||
|
metavar="<share>",
|
||||||
|
help=_('Name or ID of share to migrate.')
|
||||||
|
)
|
||||||
|
return parser
|
||||||
|
|
||||||
|
def take_action(self, parsed_args):
|
||||||
|
share_client = self.app.client_manager.share
|
||||||
|
share = apiutils.find_resource(share_client.shares,
|
||||||
|
parsed_args.share)
|
||||||
|
share.migration_cancel()
|
||||||
|
|
||||||
|
|
||||||
|
class ShareMigrationComplete(command.Command):
|
||||||
|
"""Completes migration for a given share (Admin only, Experimental)."""
|
||||||
|
_description = _("Completes migration for a given share")
|
||||||
|
|
||||||
|
def get_parser(self, prog_name):
|
||||||
|
parser = super(ShareMigrationComplete, self).get_parser(prog_name)
|
||||||
|
parser.add_argument(
|
||||||
|
'share',
|
||||||
|
metavar="<share>",
|
||||||
|
help=_('Name or ID of share to migrate.')
|
||||||
|
)
|
||||||
|
return parser
|
||||||
|
|
||||||
|
def take_action(self, parsed_args):
|
||||||
|
share_client = self.app.client_manager.share
|
||||||
|
share = apiutils.find_resource(share_client.shares,
|
||||||
|
parsed_args.share)
|
||||||
|
share.migration_complete()
|
||||||
|
|
|
@ -1932,3 +1932,61 @@ class TestShareMigrationStart(TestShare):
|
||||||
None
|
None
|
||||||
)
|
)
|
||||||
self.assertIsNone(result)
|
self.assertIsNone(result)
|
||||||
|
|
||||||
|
|
||||||
|
class TestShareMigrationCancel(TestShare):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestShareMigrationCancel, self).setUp()
|
||||||
|
|
||||||
|
self._share = manila_fakes.FakeShare.create_one_share(
|
||||||
|
attrs={
|
||||||
|
'status': 'migrating'},
|
||||||
|
methods={'migration_cancel': None})
|
||||||
|
self.shares_mock.get.return_value = self._share
|
||||||
|
|
||||||
|
self.shares_mock.manage.return_value = self._share
|
||||||
|
|
||||||
|
# Get the command objects to test
|
||||||
|
self.cmd = osc_shares.ShareMigrationCancel(self.app, None)
|
||||||
|
|
||||||
|
def test_migration_cancel(self):
|
||||||
|
arglist = [
|
||||||
|
self._share.id
|
||||||
|
]
|
||||||
|
verifylist = [
|
||||||
|
('share', self._share.id),
|
||||||
|
]
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
result = self.cmd.take_action(parsed_args)
|
||||||
|
self._share.migration_cancel.assert_called
|
||||||
|
self.assertIsNone(result)
|
||||||
|
|
||||||
|
|
||||||
|
class TestShareMigrationComplete(TestShare):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestShareMigrationComplete, self).setUp()
|
||||||
|
|
||||||
|
self._share = manila_fakes.FakeShare.create_one_share(
|
||||||
|
attrs={
|
||||||
|
'status': 'migrating'},
|
||||||
|
methods={'migration_complete': None})
|
||||||
|
self.shares_mock.get.return_value = self._share
|
||||||
|
|
||||||
|
self.shares_mock.manage.return_value = self._share
|
||||||
|
|
||||||
|
# Get the command objects to test
|
||||||
|
self.cmd = osc_shares.ShareMigrationComplete(self.app, None)
|
||||||
|
|
||||||
|
def test_migration_complete(self):
|
||||||
|
arglist = [
|
||||||
|
self._share.id
|
||||||
|
]
|
||||||
|
verifylist = [
|
||||||
|
('share', self._share.id),
|
||||||
|
]
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
result = self.cmd.take_action(parsed_args)
|
||||||
|
self._share.migration_complete.assert_called
|
||||||
|
self.assertIsNone(result)
|
||||||
|
|
|
@ -45,6 +45,8 @@ openstack.share.v2 =
|
||||||
share_adopt = manilaclient.osc.v2.share:AdoptShare
|
share_adopt = manilaclient.osc.v2.share:AdoptShare
|
||||||
share_abandon = manilaclient.osc.v2.share:AbandonShare
|
share_abandon = manilaclient.osc.v2.share:AbandonShare
|
||||||
share_migration_start = manilaclient.osc.v2.share:ShareMigrationStart
|
share_migration_start = manilaclient.osc.v2.share:ShareMigrationStart
|
||||||
|
share_migration_cancel = manilaclient.osc.v2.share:ShareMigrationCancel
|
||||||
|
share_migration_complete = manilaclient.osc.v2.share:ShareMigrationComplete
|
||||||
share_export_location_show = manilaclient.osc.v2.share:ShareExportLocationShow
|
share_export_location_show = manilaclient.osc.v2.share:ShareExportLocationShow
|
||||||
share_export_location_list = manilaclient.osc.v2.share:ShareExportLocationList
|
share_export_location_list = manilaclient.osc.v2.share:ShareExportLocationList
|
||||||
share_properties_show = manilaclient.osc.v2.share:ShowShareProperties
|
share_properties_show = manilaclient.osc.v2.share:ShowShareProperties
|
||||||
|
|
Loading…
Reference in New Issue