Merge "Huawei: Fix the rest query timeout problem"
This commit is contained in:
commit
70bd2d4561
|
@ -52,6 +52,7 @@ Volume = collections.namedtuple('Volume', vol_attrs)
|
|||
PROVIDER_LOCATION = '11'
|
||||
HOST = 'ubuntu001@backend001#OpenStack_Pool'
|
||||
ID = '21ec7341-9256-497b-97d9-ef48edcf0635'
|
||||
ENCODE_NAME = huawei_utils.encode_name(ID)
|
||||
ADMIN_METADATA = {'huawei_lun_wwn': '6643e8c1004c5f6723e9f454003'}
|
||||
TEST_PAIR_ID = "3400a30d844d0004"
|
||||
REPLICA_DRIVER_DATA = '{"pair_id": "%s", "rmt_lun_id": "1"}' % TEST_PAIR_ID
|
||||
|
@ -422,7 +423,7 @@ FAKE_QUERY_ALL_LUN_RESPONSE = {
|
|||
},
|
||||
"data": [{
|
||||
"ID": "1",
|
||||
"NAME": huawei_utils.encode_name(ID)
|
||||
"NAME": ENCODE_NAME
|
||||
}]
|
||||
}
|
||||
|
||||
|
@ -491,26 +492,17 @@ FAKE_LUN_COUNT_RESPONSE = """
|
|||
}
|
||||
"""
|
||||
# A fake response of snapshot list response
|
||||
FAKE_SNAPSHOT_LIST_INFO_RESPONSE = """
|
||||
{
|
||||
FAKE_SNAPSHOT_LIST_INFO_RESPONSE = {
|
||||
"error": {
|
||||
"code": 0,
|
||||
"description": "0"
|
||||
},
|
||||
"data": [{
|
||||
"ID": 11,
|
||||
"NAME": "wr_LMKAjS7O_VtsEIREGYw"
|
||||
},
|
||||
{
|
||||
"ID": 12,
|
||||
"NAME": "SDFAJSDFLKJ"
|
||||
},
|
||||
{
|
||||
"ID": 13,
|
||||
"NAME": "s1Ew5v36To-hR2txJitX5Q"
|
||||
}]
|
||||
"NAME": ENCODE_NAME
|
||||
}, ]
|
||||
}
|
||||
"""
|
||||
|
||||
|
||||
# A fake response of create snapshot response
|
||||
FAKE_CREATE_SNAPSHOT_INFO_RESPONSE = """
|
||||
|
@ -1251,7 +1243,7 @@ MAP_COMMAND_TO_FAKE_RESPONSE['/lun/1/PUT'] = (
|
|||
MAP_COMMAND_TO_FAKE_RESPONSE['/lun/11/PUT'] = (
|
||||
FAKE_COMMON_SUCCESS_RESPONSE)
|
||||
|
||||
MAP_COMMAND_TO_FAKE_RESPONSE['/lun?range=[0-65535]/GET'] = (
|
||||
MAP_COMMAND_TO_FAKE_RESPONSE['/lun?filter=NAME::%s/GET' % ENCODE_NAME] = (
|
||||
json.dumps(FAKE_QUERY_ALL_LUN_RESPONSE))
|
||||
|
||||
MAP_COMMAND_TO_FAKE_RESPONSE['/lun/associate?TYPE=11&ASSOCIATEOBJTYPE=256'
|
||||
|
@ -1355,8 +1347,8 @@ MAP_COMMAND_TO_FAKE_RESPONSE['/snapshot/stop/PUT'] = (
|
|||
MAP_COMMAND_TO_FAKE_RESPONSE['/snapshot/11/DELETE'] = (
|
||||
FAKE_COMMON_SUCCESS_RESPONSE)
|
||||
|
||||
MAP_COMMAND_TO_FAKE_RESPONSE['/snapshot?range=[0-32767]/GET'] = (
|
||||
FAKE_SNAPSHOT_LIST_INFO_RESPONSE)
|
||||
MAP_COMMAND_TO_FAKE_RESPONSE['/snapshot?filter=NAME::%s/GET' % ENCODE_NAME] = (
|
||||
json.dumps(FAKE_SNAPSHOT_LIST_INFO_RESPONSE))
|
||||
|
||||
# mock QoS info map
|
||||
MAP_COMMAND_TO_FAKE_RESPONSE['/ioclass/11/GET'] = (
|
||||
|
|
|
@ -1305,6 +1305,7 @@ class HuaweiBaseDriver(driver.VolumeDriver):
|
|||
|
||||
def _check_lun_valid_for_manage(self, lun_info, external_ref):
|
||||
lun_id = lun_info.get('ID')
|
||||
lun_name = lun_info.get('NAME')
|
||||
|
||||
# Check whether the LUN is already in LUN group.
|
||||
if lun_info.get('ISADD2LUNGROUP') == 'true':
|
||||
|
@ -1402,9 +1403,9 @@ class HuaweiBaseDriver(driver.VolumeDriver):
|
|||
existing_ref=external_ref, reason=msg)
|
||||
|
||||
# Check whether the LUN exists in a LUN mirror.
|
||||
if self.client.is_lun_in_mirror(lun_id):
|
||||
if self.client.is_lun_in_mirror(lun_name):
|
||||
msg = (_("Can't import LUN %s to Cinder. Already exists in "
|
||||
"a LUN mirror.") % lun_id)
|
||||
"a LUN mirror.") % lun_name)
|
||||
raise exception.ManageExistingInvalidReference(
|
||||
existing_ref=external_ref, reason=msg)
|
||||
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import ast
|
||||
import json
|
||||
import re
|
||||
import six
|
||||
|
@ -288,7 +287,10 @@ class RestClient(object):
|
|||
return item['ID']
|
||||
|
||||
def get_lun_id_by_name(self, name):
|
||||
url = "/lun?range=[0-65535]"
|
||||
if not name:
|
||||
return
|
||||
|
||||
url = "/lun?filter=NAME::%s" % name
|
||||
result = self.call(url, None, "GET")
|
||||
self._assert_rest_result(result, _('Get lun id by name error.'))
|
||||
|
||||
|
@ -350,7 +352,10 @@ class RestClient(object):
|
|||
self._assert_rest_result(result, _('Delete snapshot error.'))
|
||||
|
||||
def get_snapshot_id_by_name(self, name):
|
||||
url = "/snapshot?range=[0-32767]"
|
||||
if not name:
|
||||
return
|
||||
|
||||
url = "/snapshot?filter=NAME::%s" % name
|
||||
description = 'The snapshot license file is unavailable.'
|
||||
result = self.call(url, None, "GET")
|
||||
if 'error' in result:
|
||||
|
@ -2111,16 +2116,18 @@ class RestClient(object):
|
|||
|
||||
return result.get('data', [])
|
||||
|
||||
def is_lun_in_mirror(self, lun_id):
|
||||
url = "/lun?range=[0-65535]"
|
||||
def is_lun_in_mirror(self, name):
|
||||
if not name:
|
||||
return False
|
||||
|
||||
url = "/lun?filter=NAME::%s" % name
|
||||
result = self.call(url, None, "GET")
|
||||
self._assert_rest_result(result, _('Get volume by name error.'))
|
||||
for item in result.get('data', []):
|
||||
rss_obj = item.get('HASRSSOBJECT')
|
||||
if rss_obj:
|
||||
rss_obj = ast.literal_eval(rss_obj)
|
||||
if (item.get('ID') == lun_id and
|
||||
rss_obj.get('LUNMirror') == 'TRUE'):
|
||||
rss_obj = json.loads(rss_obj)
|
||||
if rss_obj.get('LUNMirror') == 'TRUE':
|
||||
return True
|
||||
return False
|
||||
|
||||
|
|
Loading…
Reference in New Issue