Merge "VMAX driver - Enable CHAP authentication for vmax backend"
This commit is contained in:
commit
71b73c3dcb
@ -876,6 +876,12 @@ class FakeConfiguration(object):
|
||||
self.vmax_port_groups = value
|
||||
elif key == 'vmax_array':
|
||||
self.vmax_array = value
|
||||
elif key == 'use_chap_auth':
|
||||
self.use_chap_auth = value
|
||||
elif key == 'chap_username':
|
||||
self.chap_username = value
|
||||
elif key == 'chap_password':
|
||||
self.chap_password = value
|
||||
|
||||
def safe_get(self, key):
|
||||
try:
|
||||
@ -4978,7 +4984,14 @@ class VMAXISCSITest(test.TestCase):
|
||||
|
||||
def test_vmax_get_iscsi_properties_auth(self):
|
||||
vol = deepcopy(self.data.test_volume)
|
||||
vol.provider_auth = "auth_method auth_username auth_secret"
|
||||
backup_conf = self.common.configuration
|
||||
configuration = FakeConfiguration(
|
||||
None, 'ISCSITests', 1, 1, san_ip='1.1.1.1', san_login='smc',
|
||||
vmax_array=self.data.array, vmax_srp='SRP_1', san_password='smc',
|
||||
san_rest_port=8443, use_chap_auth=True,
|
||||
chap_username='auth_username', chap_password='auth_secret',
|
||||
vmax_port_groups=[self.data.port_group_name_i])
|
||||
self.driver.configuration = configuration
|
||||
ip_and_iqn = [{'ip': self.data.ip, 'iqn': self.data.initiator},
|
||||
{'ip': self.data.ip, 'iqn': self.data.iqn}]
|
||||
host_lun_id = self.data.iscsi_device_info['hostlunid']
|
||||
@ -4993,12 +5006,13 @@ class VMAXISCSITest(test.TestCase):
|
||||
'target_portal': ip_and_iqn[0]['ip'] + ":3260",
|
||||
'target_lun': host_lun_id,
|
||||
'volume_id': self.data.test_volume.id,
|
||||
'auth_method': 'auth_method',
|
||||
'auth_method': 'CHAP',
|
||||
'auth_username': 'auth_username',
|
||||
'auth_password': 'auth_secret'}
|
||||
iscsi_properties = self.driver.vmax_get_iscsi_properties(
|
||||
vol, ip_and_iqn, True, host_lun_id)
|
||||
self.assertEqual(ref_properties, iscsi_properties)
|
||||
self.driver.configuration = backup_conf
|
||||
|
||||
def test_terminate_connection(self):
|
||||
with mock.patch.object(self.common, 'terminate_connection'):
|
||||
|
@ -17,6 +17,7 @@ ISCSI Drivers for Dell EMC VMAX arrays based on REST.
|
||||
|
||||
"""
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import strutils
|
||||
import six
|
||||
|
||||
from cinder import exception
|
||||
@ -260,12 +261,11 @@ class VMAXISCSIDriver(san.SanISCSIDriver):
|
||||
volume, ip_and_iqn, is_multipath, host_lun_id)
|
||||
|
||||
LOG.info("iSCSI properties are: %(props)s",
|
||||
{'props': iscsi_properties})
|
||||
{'props': strutils.mask_dict_password(iscsi_properties)})
|
||||
return {'driver_volume_type': 'iscsi',
|
||||
'data': iscsi_properties}
|
||||
|
||||
@staticmethod
|
||||
def vmax_get_iscsi_properties(volume, ip_and_iqn,
|
||||
def vmax_get_iscsi_properties(self, volume, ip_and_iqn,
|
||||
is_multipath, host_lun_id):
|
||||
"""Gets iscsi configuration.
|
||||
|
||||
@ -305,15 +305,13 @@ class VMAXISCSIDriver(san.SanISCSIDriver):
|
||||
{'properties': properties})
|
||||
LOG.info("ISCSI volume is: %(volume)s.", {'volume': volume})
|
||||
|
||||
if hasattr(volume, 'provider_auth'):
|
||||
auth = volume.provider_auth
|
||||
|
||||
if auth is not None:
|
||||
(auth_method, auth_username, auth_secret) = auth.split()
|
||||
|
||||
properties['auth_method'] = auth_method
|
||||
properties['auth_username'] = auth_username
|
||||
properties['auth_password'] = auth_secret
|
||||
if self.configuration.safe_get('use_chap_auth'):
|
||||
LOG.info("Chap authentication enabled.")
|
||||
properties['auth_method'] = 'CHAP'
|
||||
properties['auth_username'] = self.configuration.safe_get(
|
||||
'chap_username')
|
||||
properties['auth_password'] = self.configuration.safe_get(
|
||||
'chap_password')
|
||||
|
||||
return properties
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Add chap authentication support for the vmax backend.
|
Loading…
x
Reference in New Issue
Block a user