Dell EMC: SC FC Driver wwns api response in lower

Fixed the SC api to return the wwns in lower case
so os-brick rescan targets can return the right port
names.

Closes Bug: #1775649
Co-Authored-By: KC Bi <kecheng.bi@dell.com>

Change-Id: I9ad8c610f0512bdcbf2eff210a02abf8f88c425a
This commit is contained in:
rajinir 2018-06-07 10:59:55 -05:00
parent c308b281dc
commit 30182a55d5
2 changed files with 50 additions and 43 deletions

View File

@ -683,15 +683,15 @@ class DellSCSanAPITestCase(test.TestCase):
u'readOnly': False,
u'lun': 1,
u'serverHba': {u'instanceId': u'64702.3282218607',
u'instanceName': u'21000024FF30441C',
u'instanceName': u'21000024ff30441c',
u'objectType': u'ScServerHba'},
u'path': {u'instanceId': u'64702.64702.64703.27.73',
u'instanceName':
u'21000024FF30441C-5000D31000FCBE36',
u'21000024ff30441c-5000d31000fcbe36',
u'objectType': u'ScServerHbaPath'},
u'controllerPort':
{u'instanceId': u'64702.5764839588723736118.50',
u'instanceName': u'5000D31000FCBE36',
u'instanceName': u'5000d31000fcbe36',
u'objectType': u'ScControllerPort'},
u'instanceName': u'64702-7639',
u'transport': u'FibreChannel',
@ -717,15 +717,15 @@ class DellSCSanAPITestCase(test.TestCase):
u'readOnly': False,
u'lun': 1,
u'serverHba': {u'instanceId': u'64702.3282218606',
u'instanceName': u'21000024FF30441D',
u'instanceName': u'21000024ff30441d',
u'objectType': u'ScServerHba'},
u'path':
{u'instanceId': u'64702.64702.64703.27.78',
u'instanceName': u'21000024FF30441D-5000D31000FCBE36',
u'instanceName': u'21000024ff30441d-5000d31000fcbe36',
u'objectType': u'ScServerHbaPath'},
u'controllerPort':
{u'instanceId': u'64702.5764839588723736118.50',
u'instanceName': u'5000D31000FCBE36',
u'instanceName': u'5000d31000fcbe36',
u'objectType': u'ScControllerPort'},
u'instanceName': u'64702-7640',
u'transport': u'FibreChannel',
@ -751,11 +751,11 @@ class DellSCSanAPITestCase(test.TestCase):
u'readOnly': False,
u'lun': 1,
u'serverHba': {u'instanceId': u'64702.3282218606',
u'instanceName': u'21000024FF30441D',
u'instanceName': u'21000024ff30441d',
u'objectType': u'ScServerHba'},
u'path':
{u'instanceId': u'64702.64702.64703.28.76',
u'instanceName': u'21000024FF30441D-5000D31000FCBE3E',
u'instanceName': u'21000024ff30441d-5000D31000FCBE3E',
u'objectType': u'ScServerHbaPath'},
u'controllerPort': {u'instanceId':
u'64702.5764839588723736126.60',
@ -787,15 +787,15 @@ class DellSCSanAPITestCase(test.TestCase):
u'readOnly': False,
u'lun': 1,
u'serverHba': {u'instanceId': u'64702.3282218607',
u'instanceName': u'21000024FF30441C',
u'instanceName': u'21000024ff30441c',
u'objectType': u'ScServerHba'},
u'path': {u'instanceId': u'64702.64702.64703.27.73',
u'instanceName':
u'21000024FF30441C-5000D31000FCBE36',
u'21000024ff30441c-5000d31000fcbe36',
u'objectType': u'ScServerHbaPath'},
u'controllerPort':
{u'instanceId': u'64702.5764839588723736118.50',
u'instanceName': u'5000D31000FCBE36',
u'instanceName': u'5000d31000fcbe36',
u'objectType': u'ScControllerPort'},
u'instanceName': u'64702-7639',
u'transport': u'FibreChannel',
@ -821,15 +821,15 @@ class DellSCSanAPITestCase(test.TestCase):
u'readOnly': False,
u'lun': 1,
u'serverHba': {u'instanceId': u'64702.3282218606',
u'instanceName': u'21000024FF30441D',
u'instanceName': u'21000024ff30441d',
u'objectType': u'ScServerHba'},
u'path':
{u'instanceId': u'64702.64702.64703.27.78',
u'instanceName': u'21000024FF30441D-5000D31000FCBE36',
u'instanceName': u'21000024ff30441d-5000d31000fcbe36',
u'objectType': u'ScServerHbaPath'},
u'controllerPort':
{u'instanceId': u'64702.5764839588723736118.50',
u'instanceName': u'5000D31000FCBE36',
u'instanceName': u'5000d31000fcbe36',
u'objectType': u'ScControllerPort'},
u'instanceName': u'64702-7640',
u'transport': u'FibreChannel',
@ -855,11 +855,11 @@ class DellSCSanAPITestCase(test.TestCase):
u'readOnly': False,
u'lun': 2,
u'serverHba': {u'instanceId': u'64702.3282218606',
u'instanceName': u'21000024FF30441D',
u'instanceName': u'21000024ff30441d',
u'objectType': u'ScServerHba'},
u'path':
{u'instanceId': u'64702.64702.64703.28.76',
u'instanceName': u'21000024FF30441D-5000D31000FCBE3E',
u'instanceName': u'21000024ff30441d-5000D31000FCBE3E',
u'objectType': u'ScServerHbaPath'},
u'controllerPort': {u'instanceId':
u'64702.5764839588723736126.60',
@ -1027,7 +1027,7 @@ class DellSCSanAPITestCase(test.TestCase):
FC_HBAS = [{u'portWwnList': [],
u'iscsiIpAddress': u'0.0.0.0',
u'pathCount': 2,
u'name': u'21000024FF30441C',
u'name': u'21000024ff30441c',
u'connectivity': u'Up',
u'instanceId': u'64702.3282218607',
u'scName': u'Storage Center 64702',
@ -1039,12 +1039,12 @@ class DellSCSanAPITestCase(test.TestCase):
u'remoteStorageCenter': False,
u'iscsiName': u'',
u'portType': u'FibreChannel',
u'instanceName': u'21000024FF30441C',
u'instanceName': u'21000024ff30441c',
u'objectType': u'ScServerHba'},
{u'portWwnList': [],
u'iscsiIpAddress': u'0.0.0.0',
u'pathCount': 3,
u'name': u'21000024FF30441D',
u'name': u'21000024ff30441d',
u'connectivity': u'Partial',
u'instanceId': u'64702.3282218606',
u'scName': u'Storage Center 64702',
@ -1056,13 +1056,13 @@ class DellSCSanAPITestCase(test.TestCase):
u'remoteStorageCenter': False,
u'iscsiName': u'',
u'portType': u'FibreChannel',
u'instanceName': u'21000024FF30441D',
u'instanceName': u'21000024ff30441d',
u'objectType': u'ScServerHba'}]
FC_HBA = {u'portWwnList': [],
u'iscsiIpAddress': u'0.0.0.0',
u'pathCount': 3,
u'name': u'21000024FF30441D',
u'name': u'21000024ff30441d',
u'connectivity': u'Partial',
u'instanceId': u'64702.3282218606',
u'scName': u'Storage Center 64702',
@ -1074,7 +1074,7 @@ class DellSCSanAPITestCase(test.TestCase):
u'remoteStorageCenter': False,
u'iscsiName': u'',
u'portType': u'FibreChannel',
u'instanceName': u'21000024FF30441D',
u'instanceName': u'21000024ff30441d',
u'objectType': u'ScServerHba'}
SVR_OS_S = [{u'allowsLunGaps': True,
@ -1289,8 +1289,8 @@ class DellSCSanAPITestCase(test.TestCase):
u'objectType': u'ScControllerPort'},
u'status': u'Up',
u'iscsiIpAddress': u'0.0.0.0',
u'WWN': u'5000D31000FCBE36',
u'name': u'5000D31000FCBE36',
u'WWN': u'5000d31000fcbe36',
u'name': u'5000d31000fcbe36',
u'parent':
{u'instanceId': u'64702.5764839588723736093.57',
u'instanceName': u'5000D31000FCBE1D',
@ -1311,7 +1311,7 @@ class DellSCSanAPITestCase(test.TestCase):
{u'instanceId': u'64702.1.0',
u'instanceName': u'Domain 0',
u'objectType': u'ScControllerPortFaultDomain'},
u'instanceName': u'5000D31000FCBE36',
u'instanceName': u'5000d31000fcbe36',
u'childStatus': u'Up',
u'statusMessage': u'',
u'objectType': u'ScControllerPort'}
@ -1323,8 +1323,8 @@ class DellSCSanAPITestCase(test.TestCase):
u'objectType': u'ScControllerPort'},
u'status': u'Up',
u'iscsiIpAddress': u'0.0.0.0',
u'wWN': u'5000D31000FCBE36',
u'name': u'5000D31000FCBE36',
u'wWN': u'5000d31000fcbe36',
u'name': u'5000d31000fcbe36',
u'parent':
{u'instanceId': u'64702.5764839588723736093.57',
u'instanceName': u'5000D31000FCBE1D',
@ -1345,7 +1345,7 @@ class DellSCSanAPITestCase(test.TestCase):
{u'instanceId': u'64702.1.0',
u'instanceName': u'Domain 0',
u'objectType': u'ScControllerPortFaultDomain'},
u'instanceName': u'5000D31000FCBE36',
u'instanceName': u'5000d31000fcbe36',
u'childStatus': u'Up',
u'statusMessage': u'',
u'objectType': u'ScControllerPort'}
@ -1603,10 +1603,10 @@ class DellSCSanAPITestCase(test.TestCase):
u'objectType': u'StorageCenter'}}]
IQN = 'iqn.2002-03.com.compellent:5000D31000000001'
WWN = u'21000024FF30441C'
WWN = u'21000024ff30441c'
WWNS = [u'21000024FF30441C',
u'21000024FF30441D']
WWNS = [u'21000024ff30441c',
u'21000024ff30441d']
# Used to test finding no match in find_wwns
WWNS_NO_MATCH = [u'21000024FF30451C',
@ -3442,9 +3442,9 @@ class DellSCSanAPITestCase(test.TestCase):
# The _find_controller_port is Mocked, so all mapping pairs
# will have the same WWN for the ScControllerPort
itmapCompare = {u'21000024FF30441C': [u'5000D31000FCBE36'],
u'21000024FF30441D':
[u'5000D31000FCBE36', u'5000D31000FCBE36']}
itmapCompare = {u'21000024ff30441c': [u'5000d31000fcbe36'],
u'21000024ff30441d':
[u'5000d31000fcbe36', u'5000d31000fcbe36']}
self.assertEqual(1, lun, 'Incorrect LUN')
self.assertIsNotNone(wwns, 'WWNs is None')
self.assertEqual(itmapCompare, itmap, 'WWN mapping incorrect')
@ -3521,12 +3521,12 @@ class DellSCSanAPITestCase(test.TestCase):
self.assertTrue(mock_find_controller_port.called)
self.assertEqual(1, lun, 'Incorrect LUN')
expected_wwn = ['5000D31000FCBE36', '5000D31000FCBE36',
'5000D31000FCBE36']
expected_wwn = ['5000d31000fcbe36', '5000d31000fcbe36',
'5000d31000fcbe36']
self.assertEqual(expected_wwn, wwns, 'WWNs incorrect')
expected_itmap = {'21000024FF30441C': ['5000D31000FCBE36'],
'21000024FF30441D': ['5000D31000FCBE36',
'5000D31000FCBE36']}
expected_itmap = {'21000024ff30441c': ['5000d31000fcbe36'],
'21000024ff30441d': ['5000d31000fcbe36',
'5000d31000fcbe36']}
self.assertEqual(expected_itmap, itmap, 'WWN mapping incorrect')
@mock.patch.object(storagecenter_api.SCApi,
@ -3580,9 +3580,9 @@ class DellSCSanAPITestCase(test.TestCase):
self.assertTrue(mock_find_controller_port.called)
# The _find_controller_port is Mocked, so all mapping pairs
# will have the same WWN for the ScControllerPort
itmapCompare = {u'21000024FF30441C': [u'5000D31000FCBE36'],
u'21000024FF30441D':
[u'5000D31000FCBE36', u'5000D31000FCBE36']}
itmapCompare = {u'21000024ff30441c': [u'5000d31000fcbe36'],
u'21000024ff30441d':
[u'5000d31000fcbe36', u'5000d31000fcbe36']}
self.assertEqual(1, lun, 'Incorrect LUN')
self.assertIsNotNone(wwns, 'WWNs is None')
self.assertEqual(itmapCompare, itmap, 'WWN mapping incorrect')

View File

@ -1710,7 +1710,14 @@ class SCApi(object):
{'lun': lun,
'wwn': wwns,
'map': itmap})
return lun, wwns, itmap
# Return the response in lowercase
wwns_lower = [w.lower() for w in wwns]
itmap_lower = dict()
for key in itmap.keys():
itmap_lower[key.lower()] = [v.lower() for v in itmap[key]]
return lun, wwns_lower, itmap_lower
def _find_active_controller(self, scvolume):
"""Finds the controller on which the Dell volume is active.