Revert "Cleanup for Replication v2: remove 'replication-promote'"

Forgot this was a replication v1 command. We need to keep
v1 support around in the client for users with a new client
and old service.

This reverts commit 9685009da2.

Change-Id: Ifad5ddb021d98b0fc973bc9ea478baccc60f912f
This commit is contained in:
Sean McGinnis 2016-03-16 19:06:08 +00:00
parent fbc13e4d49
commit a5907fa6d5
5 changed files with 33 additions and 0 deletions

View File

@ -455,6 +455,8 @@ class FakeHTTPClient(base_client.HTTPClient):
assert list(body[action]) == ['bootable']
elif action == 'os-unmanage':
assert body[action] is None
elif action == 'os-promote-replica':
assert body[action] is None
elif action == 'os-reenable-replica':
assert body[action] is None
elif action == 'os-set_image_metadata':
@ -1085,6 +1087,9 @@ class FakeHTTPClient(base_client.HTTPClient):
snapshot.update(kw['body']['snapshot'])
return (202, {}, {'snapshot': snapshot})
def post_os_promote_replica_1234(self, **kw):
return (202, {}, {})
def post_os_reenable_replica_1234(self, **kw):
return (202, {}, {})

View File

@ -1029,6 +1029,11 @@ class ShellTest(utils.TestCase):
self.assert_called('POST', '/volumes/1234/action',
body={'os-unmanage': None})
def test_replication_promote(self):
self.run_command('replication-promote 1234')
self.assert_called('POST', '/volumes/1234/action',
body={'os-promote-replica': None})
def test_replication_reenable(self):
self.run_command('replication-reenable 1234')
self.assert_called('POST', '/volumes/1234/action',

View File

@ -281,6 +281,14 @@ class VolumesTest(utils.TestCase):
cs.assert_called('POST', '/os-snapshot-manage', {'snapshot': expected})
self._assert_request_id(vol)
def test_replication_promote(self):
v = cs.volumes.get('1234')
self._assert_request_id(v)
vol = cs.volumes.promote(v)
cs.assert_called('POST', '/volumes/1234/action',
{'os-promote-replica': None})
self._assert_request_id(vol)
def test_replication_reenable(self):
v = cs.volumes.get('1234')
self._assert_request_id(v)

View File

@ -2236,6 +2236,17 @@ def do_unmanage(cs, args):
cs.volumes.unmanage(volume.id)
@utils.arg('volume', metavar='<volume>',
help='Name or ID of the volume to promote. '
'The volume should have the replica volume created with '
'source-replica argument.')
@utils.service_type('volumev2')
def do_replication_promote(cs, args):
"""Promote a secondary volume to primary for a relationship."""
volume = utils.find_volume(cs, args.volume)
cs.volumes.promote(volume.id)
@utils.arg('volume', metavar='<volume>',
help='Name or ID of the volume to reenable replication. '
'The replication-status of the volume should be inactive.')

View File

@ -587,6 +587,10 @@ class VolumeManager(base.ManagerWithFind):
"""Unmanage a volume."""
return self._action('os-unmanage', volume, None)
def promote(self, volume):
"""Promote secondary to be primary in relationship."""
return self._action('os-promote-replica', volume, None)
def reenable(self, volume):
"""Sync the secondary volume with primary for a relationship."""
return self._action('os-reenable-replica', volume, None)