Merge "IBM XIV: fix issues for replication"
This commit is contained in:
commit
20c698bb0a
|
@ -691,6 +691,32 @@ class XIVProxyTest(test.TestCase):
|
|||
resource_id=group['name'],
|
||||
new_role='Slave')
|
||||
|
||||
@mock.patch("cinder.volume.drivers.ibm.ibm_storage."
|
||||
"xiv_proxy.XIVProxy._get_target_params",
|
||||
mock.MagicMock(return_value=REPLICA_PARAMS))
|
||||
def test_pool_with_replication_failover_back(self):
|
||||
driver = mock.MagicMock()
|
||||
driver.VERSION = "VERSION"
|
||||
|
||||
p = self.proxy(
|
||||
self.default_storage_info,
|
||||
mock.MagicMock(),
|
||||
test_mock.cinder.exception,
|
||||
driver)
|
||||
|
||||
pool_name = p._get_backend_pool()
|
||||
self.assertEqual(self.default_storage_info['vol_pool'], pool_name)
|
||||
|
||||
p_failback = self.proxy(
|
||||
self.default_storage_info,
|
||||
mock.MagicMock(),
|
||||
test_mock.cinder.exception,
|
||||
driver,
|
||||
REPLICA_ID)
|
||||
|
||||
pool_name = p_failback._get_backend_pool()
|
||||
self.assertEqual(REPLICA_POOL, pool_name)
|
||||
|
||||
@mock.patch("cinder.volume.utils.is_group_a_cg_snapshot_type",
|
||||
mock.MagicMock(return_value=True))
|
||||
def test_create_volume_with_consistency_group(self):
|
||||
|
|
|
@ -360,7 +360,7 @@ class IBMStorageProxy(object):
|
|||
if not self.targets:
|
||||
return None
|
||||
try:
|
||||
target = self.targets.keys().next()
|
||||
target = list(self.targets.keys())[0]
|
||||
return target
|
||||
except Exception:
|
||||
return None
|
||||
|
|
|
@ -448,7 +448,7 @@ class XIVProxy(proxy.IBMStorageProxy):
|
|||
def _create_volume(self, volume):
|
||||
"""Internal implementation to create a volume."""
|
||||
size = storage.gigabytes_to_blocks(float(volume['size']))
|
||||
pool = self.storage_info[storage.FLAG_KEYS['storage_pool']]
|
||||
pool = self._get_backend_pool()
|
||||
try:
|
||||
self._call_xiv_xcli(
|
||||
"vol_create", vol=volume['name'], size_blocks=size, pool=pool)
|
||||
|
@ -1510,7 +1510,7 @@ class XIVProxy(proxy.IBMStorageProxy):
|
|||
if (dest != strings.XIV_BACKEND_PREFIX or dest_host != volume_host):
|
||||
return False
|
||||
|
||||
pool_name = self.storage_info[storage.FLAG_KEYS['storage_pool']]
|
||||
pool_name = self._get_backend_pool()
|
||||
|
||||
# if pool is different. else - we're on the same pool and retype is ok.
|
||||
if (pool_name != dest_pool):
|
||||
|
@ -1611,17 +1611,24 @@ class XIVProxy(proxy.IBMStorageProxy):
|
|||
|
||||
@proxy._trace_time
|
||||
def _get_pool(self):
|
||||
pool_name = self._get_backend_pool()
|
||||
pools = self._call_xiv_xcli(
|
||||
"pool_list", pool=self.storage_info[
|
||||
storage.FLAG_KEYS['storage_pool']]).as_list
|
||||
"pool_list", pool=pool_name).as_list
|
||||
if not pools:
|
||||
msg = (_(
|
||||
"Pool %(pool)s not available on storage") %
|
||||
{'pool': self.storage_info[storage.FLAG_KEYS['storage_pool']]})
|
||||
{'pool': pool_name})
|
||||
LOG.error(msg)
|
||||
raise self.meta['exception'].VolumeBackendAPIException(data=msg)
|
||||
return pools
|
||||
|
||||
def _get_backend_pool(self):
|
||||
if self.active_backend_id == strings.PRIMARY_BACKEND_ID:
|
||||
return self.storage_info[storage.FLAG_KEYS['storage_pool']]
|
||||
else:
|
||||
return self._get_target_params(
|
||||
self.active_backend_id)['san_clustername']
|
||||
|
||||
def _retrieve_pool_stats(self, data):
|
||||
try:
|
||||
pools = self._get_pool()
|
||||
|
@ -2419,7 +2426,7 @@ class XIVProxy(proxy.IBMStorageProxy):
|
|||
return fc_targets
|
||||
|
||||
def _get_pool_domain(self, connector):
|
||||
pool_name = self.storage_info[storage.FLAG_KEYS['storage_pool']]
|
||||
pool_name = self._get_backend_pool()
|
||||
LOG.debug("pool name from configuration: %s", pool_name)
|
||||
domain = None
|
||||
try:
|
||||
|
@ -2524,7 +2531,7 @@ class XIVProxy(proxy.IBMStorageProxy):
|
|||
LOG.debug("send event SERVICE_STARTED")
|
||||
service_start_evnt_prop = {
|
||||
"openstack_version": self.meta['openstack_version'],
|
||||
"pool_name": self.storage_info[storage.FLAG_KEYS['storage_pool']]}
|
||||
"pool_name": self._get_backend_pool()}
|
||||
ev_mgr = events.EventsManager(self.ibm_storage_cli,
|
||||
OPENSTACK_PRODUCT_NAME,
|
||||
self.full_version)
|
||||
|
@ -2537,7 +2544,7 @@ class XIVProxy(proxy.IBMStorageProxy):
|
|||
compute_host_name = socket.getfqdn()
|
||||
vol_attach_evnt_prop = {
|
||||
"openstack_version": self.meta['openstack_version'],
|
||||
"pool_name": self.storage_info[storage.FLAG_KEYS['storage_pool']],
|
||||
"pool_name": self._get_backend_pool(),
|
||||
"compute_hostname": compute_host_name}
|
||||
|
||||
ev_mgr = events.EventsManager(self.ibm_storage_cli,
|
||||
|
|
Loading…
Reference in New Issue