From 47c823e0d56b9730319c49c74bddda9894d61095 Mon Sep 17 00:00:00 2001 From: Thiago Correa Date: Tue, 28 Apr 2020 19:23:13 +0000 Subject: [PATCH] NetApp SolidFire: Enable driver IPv6 api request Enable driver to make API requests to a cluster configured with an IPv6 MVIP. Implements: blueprint netapp-solidfire-ipv6-on-management-ip Change-Id: I12b6af1f6c24738ace59da6b3d50753db938ce3d --- .../unit/volume/drivers/solidfire/test_solidfire.py | 10 ++++++++++ cinder/volume/drivers/solidfire.py | 3 ++- ...lidfire-ipv6-on-management-ip-10187de7b732335a.yaml | 4 ++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/bp-netapp-solidfire-ipv6-on-management-ip-10187de7b732335a.yaml diff --git a/cinder/tests/unit/volume/drivers/solidfire/test_solidfire.py b/cinder/tests/unit/volume/drivers/solidfire/test_solidfire.py index 3346fcdcd31..a64325447ee 100644 --- a/cinder/tests/unit/volume/drivers/solidfire/test_solidfire.py +++ b/cinder/tests/unit/volume/drivers/solidfire/test_solidfire.py @@ -2908,6 +2908,16 @@ class SolidFireVolumeTestCase(test.TestCase): ep = sfv._build_endpoint_info(mvip='1.2.3.4', password='nunyabiz') self.assertEqual(expected_ep, ep) + # Make sure we add brackets for IPv6 MVIP + expected_ep = {'passwd': 'nunyabiz', + 'url': 'https://[ff00::00]:443', + 'svip': None, + 'mvip': 'ff00::00', + 'login': 'admin', + 'port': 443} + ep = sfv._build_endpoint_info(mvip='ff00::00', password='nunyabiz') + self.assertEqual(expected_ep, ep) + def test_generate_random_string(self): sfv = solidfire.SolidFireDriver(configuration=self.configuration) a = sfv._generate_random_string(12) diff --git a/cinder/volume/drivers/solidfire.py b/cinder/volume/drivers/solidfire.py index 3da62ffa493..be0dca7ced9 100644 --- a/cinder/volume/drivers/solidfire.py +++ b/cinder/volume/drivers/solidfire.py @@ -647,7 +647,8 @@ class SolidFireDriver(san.SanISCSIDriver): kwargs.get('password', backend_conf.san_password)) endpoint['port'] = ( kwargs.get(('port'), backend_conf.sf_api_port)) - endpoint['url'] = 'https://%s:%s' % (endpoint['mvip'], + sanitized_mvip = volume_utils.sanitize_host(endpoint['mvip']) + endpoint['url'] = 'https://%s:%s' % (sanitized_mvip, endpoint['port']) endpoint['svip'] = kwargs.get('svip', backend_conf.sf_svip) if not endpoint.get('mvip', None) and kwargs.get('backend_id', None): diff --git a/releasenotes/notes/bp-netapp-solidfire-ipv6-on-management-ip-10187de7b732335a.yaml b/releasenotes/notes/bp-netapp-solidfire-ipv6-on-management-ip-10187de7b732335a.yaml new file mode 100644 index 00000000000..eb6f4414547 --- /dev/null +++ b/releasenotes/notes/bp-netapp-solidfire-ipv6-on-management-ip-10187de7b732335a.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + SolidFire driver now supports IPv6 for management IP.