Merge "VMAX driver - Enable CHAP authentication for vmax backend"

This commit is contained in:
Zuul 2018-01-06 01:41:17 +00:00 committed by Gerrit Code Review
commit 71b73c3dcb
3 changed files with 30 additions and 14 deletions

View File

@ -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'):

View File

@ -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

View File

@ -0,0 +1,4 @@
---
features:
- |
Add chap authentication support for the vmax backend.