Merge "move attachment_update to try block"
This commit is contained in:
commit
7fd4c49b16
@ -728,18 +728,20 @@ class Store(glance_store.driver.Store):
|
|||||||
mode=attach_mode)
|
mode=attach_mode)
|
||||||
LOG.debug('Attachment %(attachment_id)s created successfully.',
|
LOG.debug('Attachment %(attachment_id)s created successfully.',
|
||||||
{'attachment_id': attachment['id']})
|
{'attachment_id': attachment['id']})
|
||||||
attachment = self.volume_api.attachment_update(
|
|
||||||
client, attachment['id'], connector_prop,
|
|
||||||
mountpoint='glance_store')
|
|
||||||
LOG.debug('Attachment %(attachment_id)s updated successfully with '
|
|
||||||
'connection info %(conn_info)s',
|
|
||||||
{'attachment_id': attachment.id,
|
|
||||||
'conn_info': strutils.mask_dict_password(
|
|
||||||
attachment.connection_info)})
|
|
||||||
volume = volume.manager.get(volume_id)
|
|
||||||
connection_info = attachment.connection_info
|
|
||||||
|
|
||||||
|
volume = volume.manager.get(volume_id)
|
||||||
|
attachment_id = attachment['id']
|
||||||
|
connection_info = None
|
||||||
try:
|
try:
|
||||||
|
attachment = self.volume_api.attachment_update(
|
||||||
|
client, attachment_id, connector_prop,
|
||||||
|
mountpoint='glance_store')
|
||||||
|
LOG.debug('Attachment %(attachment_id)s updated successfully with '
|
||||||
|
'connection info %(conn_info)s',
|
||||||
|
{'attachment_id': attachment_id,
|
||||||
|
'conn_info': strutils.mask_dict_password(
|
||||||
|
attachment.connection_info)})
|
||||||
|
connection_info = attachment.connection_info
|
||||||
conn = base.factory(
|
conn = base.factory(
|
||||||
connection_info['driver_volume_type'],
|
connection_info['driver_volume_type'],
|
||||||
volume=volume,
|
volume=volume,
|
||||||
@ -753,9 +755,9 @@ class Store(glance_store.driver.Store):
|
|||||||
|
|
||||||
# Complete the attachment (marking the volume "in-use") after
|
# Complete the attachment (marking the volume "in-use") after
|
||||||
# the connection with os-brick is complete
|
# the connection with os-brick is complete
|
||||||
self.volume_api.attachment_complete(client, attachment.id)
|
self.volume_api.attachment_complete(client, attachment_id)
|
||||||
LOG.debug('Attachment %(attachment_id)s completed successfully.',
|
LOG.debug('Attachment %(attachment_id)s completed successfully.',
|
||||||
{'attachment_id': attachment.id})
|
{'attachment_id': attachment_id})
|
||||||
|
|
||||||
self.volume_connector_map[volume.id] = conn
|
self.volume_connector_map[volume.id] = conn
|
||||||
if (connection_info['driver_volume_type'] == 'rbd' and
|
if (connection_info['driver_volume_type'] == 'rbd' and
|
||||||
@ -774,7 +776,7 @@ class Store(glance_store.driver.Store):
|
|||||||
try:
|
try:
|
||||||
if volume.multiattach:
|
if volume.multiattach:
|
||||||
attachment_state_manager.detach(
|
attachment_state_manager.detach(
|
||||||
client, attachment.id, volume_id, host, conn,
|
client, attachment_id, volume_id, host, conn,
|
||||||
connection_info, device)
|
connection_info, device)
|
||||||
else:
|
else:
|
||||||
conn.disconnect_volume(device)
|
conn.disconnect_volume(device)
|
||||||
@ -786,7 +788,7 @@ class Store(glance_store.driver.Store):
|
|||||||
{'volume_id': volume.id})
|
{'volume_id': volume.id})
|
||||||
|
|
||||||
if not volume.multiattach:
|
if not volume.multiattach:
|
||||||
self.volume_api.attachment_delete(client, attachment.id)
|
self.volume_api.attachment_delete(client, attachment_id)
|
||||||
|
|
||||||
def _cinder_volume_data_iterator(self, client, volume, max_size, offset=0,
|
def _cinder_volume_data_iterator(self, client, volume, max_size, offset=0,
|
||||||
chunk_size=None, partial_length=None):
|
chunk_size=None, partial_length=None):
|
||||||
|
@ -207,7 +207,8 @@ class TestCinderStoreBase(object):
|
|||||||
multipath_supported=False,
|
multipath_supported=False,
|
||||||
enforce_multipath=False,
|
enforce_multipath=False,
|
||||||
encrypted_nfs=False, qcow2_vol=False,
|
encrypted_nfs=False, qcow2_vol=False,
|
||||||
multiattach=False):
|
multiattach=False,
|
||||||
|
update_attachment_error=None):
|
||||||
fake_volume = mock.MagicMock(id=str(uuid.uuid4()), status='available',
|
fake_volume = mock.MagicMock(id=str(uuid.uuid4()), status='available',
|
||||||
multiattach=multiattach)
|
multiattach=multiattach)
|
||||||
fake_volume.manager.get.return_value = fake_volume
|
fake_volume.manager.get.return_value = fake_volume
|
||||||
@ -284,6 +285,9 @@ class TestCinderStoreBase(object):
|
|||||||
'getaddrinfo') as mock_get_host_ip, \
|
'getaddrinfo') as mock_get_host_ip, \
|
||||||
mock.patch.object(cinder.strutils, 'mask_dict_password'):
|
mock.patch.object(cinder.strutils, 'mask_dict_password'):
|
||||||
|
|
||||||
|
if update_attachment_error:
|
||||||
|
attach_update.side_effect = update_attachment_error
|
||||||
|
|
||||||
fake_host = 'fake_host'
|
fake_host = 'fake_host'
|
||||||
fake_addr_info = [[0, 1, 2, 3, ['127.0.0.1']]]
|
fake_addr_info = [[0, 1, 2, 3, ['127.0.0.1']]]
|
||||||
fake_ip = fake_addr_info[0][4][0]
|
fake_ip = fake_addr_info[0][4][0]
|
||||||
@ -309,9 +313,14 @@ class TestCinderStoreBase(object):
|
|||||||
except exceptions.BackendException:
|
except exceptions.BackendException:
|
||||||
attach_delete.assert_called_once_with(
|
attach_delete.assert_called_once_with(
|
||||||
fake_client, fake_attachment_id)
|
fake_client, fake_attachment_id)
|
||||||
|
elif update_attachment_error:
|
||||||
|
self.assertRaises(type(update_attachment_error), do_open)
|
||||||
else:
|
else:
|
||||||
do_open()
|
do_open()
|
||||||
if not (encrypted_nfs or qcow2_vol):
|
if update_attachment_error:
|
||||||
|
attach_delete.assert_called_once_with(
|
||||||
|
fake_client, fake_attachment_id)
|
||||||
|
elif not (encrypted_nfs or qcow2_vol):
|
||||||
mock_conn.assert_called_once_with(
|
mock_conn.assert_called_once_with(
|
||||||
root_helper, fake_ip,
|
root_helper, fake_ip,
|
||||||
multipath_supported, enforce_multipath,
|
multipath_supported, enforce_multipath,
|
||||||
@ -353,8 +362,10 @@ class TestCinderStoreBase(object):
|
|||||||
def test_open_cinder_volume_ro(self):
|
def test_open_cinder_volume_ro(self):
|
||||||
self._test_open_cinder_volume('rb', 'ro', None)
|
self._test_open_cinder_volume('rb', 'ro', None)
|
||||||
|
|
||||||
def test_open_cinder_volume_error(self):
|
def test_open_cinder_volume_update_attachment_error(self):
|
||||||
self._test_open_cinder_volume('wb', 'rw', IOError)
|
err = Exception("update attachment fake error")
|
||||||
|
self._test_open_cinder_volume('rb', 'ro', None,
|
||||||
|
update_attachment_error=err)
|
||||||
|
|
||||||
def test_open_cinder_volume_nfs_encrypted(self):
|
def test_open_cinder_volume_nfs_encrypted(self):
|
||||||
self._test_open_cinder_volume('rb', 'ro', None, encrypted_nfs=True)
|
self._test_open_cinder_volume('rb', 'ro', None, encrypted_nfs=True)
|
||||||
|
Loading…
Reference in New Issue
Block a user