Merge "Add call to vol driver when accepting a transfer"
This commit is contained in:
@@ -170,3 +170,9 @@ class VolumeRpcAPITestCase(test.TestCase):
|
|||||||
volume=self.fake_volume,
|
volume=self.fake_volume,
|
||||||
connector='fake_connector',
|
connector='fake_connector',
|
||||||
force=False)
|
force=False)
|
||||||
|
|
||||||
|
def test_accept_transfer(self):
|
||||||
|
self._test_volume_api('accept_transfer',
|
||||||
|
rpc_method='cast',
|
||||||
|
volume=self.fake_volume,
|
||||||
|
version='1.5')
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ volume_transfer_opts = [
|
|||||||
help='The number of characters in the salt.'),
|
help='The number of characters in the salt.'),
|
||||||
cfg.IntOpt('volume_transfer_key_length', default=16,
|
cfg.IntOpt('volume_transfer_key_length', default=16,
|
||||||
help='The number of characters in the '
|
help='The number of characters in the '
|
||||||
'autogenerated auth key.'), ]
|
'autogenerated auth key.'), ]
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
FLAGS = flags.FLAGS
|
||||||
FLAGS.register_opts(volume_transfer_opts)
|
FLAGS.register_opts(volume_transfer_opts)
|
||||||
@@ -178,6 +178,7 @@ class API(base.Base):
|
|||||||
try:
|
try:
|
||||||
# Transfer ownership of the volume now, must use an elevated
|
# Transfer ownership of the volume now, must use an elevated
|
||||||
# context.
|
# context.
|
||||||
|
self.volume_api.accept_transfer(context, vol_ref)
|
||||||
self.db.transfer_accept(context.elevated(),
|
self.db.transfer_accept(context.elevated(),
|
||||||
transfer_id,
|
transfer_id,
|
||||||
context.user_id,
|
context.user_id,
|
||||||
|
|||||||
@@ -518,6 +518,10 @@ class API(base.Base):
|
|||||||
connector,
|
connector,
|
||||||
force)
|
force)
|
||||||
|
|
||||||
|
def accept_transfer(self, context, volume):
|
||||||
|
return self.volume_rpcapi.accept_transfer(context,
|
||||||
|
volume)
|
||||||
|
|
||||||
def _create_snapshot(self, context,
|
def _create_snapshot(self, context,
|
||||||
volume, name, description,
|
volume, name, description,
|
||||||
force=False, metadata=None):
|
force=False, metadata=None):
|
||||||
|
|||||||
@@ -480,6 +480,9 @@ class ISCSIDriver(VolumeDriver):
|
|||||||
data['QoS_support'] = False
|
data['QoS_support'] = False
|
||||||
self._stats = data
|
self._stats = data
|
||||||
|
|
||||||
|
def accept_transfer(self, volume):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class FakeISCSIDriver(ISCSIDriver):
|
class FakeISCSIDriver(ISCSIDriver):
|
||||||
"""Logs calls instead of executing."""
|
"""Logs calls instead of executing."""
|
||||||
|
|||||||
@@ -701,6 +701,10 @@ class VolumeManager(manager.SchedulerDependentManager):
|
|||||||
volume_ref = self.db.volume_get(context, volume_id)
|
volume_ref = self.db.volume_get(context, volume_id)
|
||||||
self.driver.terminate_connection(volume_ref, connector, force=force)
|
self.driver.terminate_connection(volume_ref, connector, force=force)
|
||||||
|
|
||||||
|
def accept_transfer(self, context, volume_id):
|
||||||
|
volume_ref = self.db.volume_get(context, volume_id)
|
||||||
|
self.driver.accept_transfer(volume_ref)
|
||||||
|
|
||||||
@manager.periodic_task
|
@manager.periodic_task
|
||||||
def _report_driver_status(self, context):
|
def _report_driver_status(self, context):
|
||||||
LOG.info(_("Updating volume status"))
|
LOG.info(_("Updating volume status"))
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ class VolumeAPI(cinder.openstack.common.rpc.proxy.RpcProxy):
|
|||||||
1.3 - Pass all image metadata (not just ID) in copy_volume_to_image
|
1.3 - Pass all image metadata (not just ID) in copy_volume_to_image
|
||||||
1.4 - Add request_spec, filter_properties and
|
1.4 - Add request_spec, filter_properties and
|
||||||
allow_reschedule arguments to create_volume().
|
allow_reschedule arguments to create_volume().
|
||||||
|
1.5 - Add accept_transfer
|
||||||
'''
|
'''
|
||||||
|
|
||||||
BASE_RPC_API_VERSION = '1.0'
|
BASE_RPC_API_VERSION = '1.0'
|
||||||
@@ -128,3 +129,10 @@ class VolumeAPI(cinder.openstack.common.rpc.proxy.RpcProxy):
|
|||||||
def publish_service_capabilities(self, ctxt):
|
def publish_service_capabilities(self, ctxt):
|
||||||
self.fanout_cast(ctxt, self.make_msg('publish_service_capabilities'),
|
self.fanout_cast(ctxt, self.make_msg('publish_service_capabilities'),
|
||||||
version='1.2')
|
version='1.2')
|
||||||
|
|
||||||
|
def accept_transfer(self, ctxt, volume):
|
||||||
|
self.cast(ctxt,
|
||||||
|
self.make_msg('accept_transfer',
|
||||||
|
volume_id=volume['id']),
|
||||||
|
topic=rpc.queue_get_for(ctxt, self.topic, volume['host']),
|
||||||
|
version='1.5')
|
||||||
|
|||||||
Reference in New Issue
Block a user