From 192b4d128d85da4e05cf6274e4027fe6c94f6cd2 Mon Sep 17 00:00:00 2001 From: Maurice Schreiber Date: Thu, 29 Mar 2018 08:48:53 +0200 Subject: [PATCH] NetApp ONTAP: allow multiple DNS IPs The security service dns_ip parameter also takes a list of comma separated DNS IPs for vserver dns configuration. Allows HA setup, where DNS can be down for maintenance. Change-Id: I1da99d0b44778d3ccaaff5871dfcb175b8cdbc02 --- api-ref/source/security-services.inc | 3 +- .../netapp/dataontap/client/client_cmode.py | 7 +++-- .../dataontap/client/test_client_cmode.py | 30 +++++++++++++++---- ...t-ss-multiple-dns-ip-df42a217977ce44d.yaml | 6 ++++ 4 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 releasenotes/notes/netapp-cdot-ss-multiple-dns-ip-df42a217977ce44d.yaml diff --git a/api-ref/source/security-services.inc b/api-ref/source/security-services.inc index bc7f590074..0b13ebccad 100644 --- a/api-ref/source/security-services.inc +++ b/api-ref/source/security-services.inc @@ -21,7 +21,8 @@ types: You can configure a security service with these options: -- A DNS IP address. +- A DNS IP address. Some drivers may allow a comma separated list of multiple + addresses, e.g. NetApp ONTAP. - An IP address or host name. diff --git a/manila/share/drivers/netapp/dataontap/client/client_cmode.py b/manila/share/drivers/netapp/dataontap/client/client_cmode.py index e338d73411..5bc093065b 100644 --- a/manila/share/drivers/netapp/dataontap/client/client_cmode.py +++ b/manila/share/drivers/netapp/dataontap/client/client_cmode.py @@ -1462,11 +1462,12 @@ class NetAppCmodeClient(client_base.NetAppBaseClient): 'domains': { 'string': security_service['domain'], }, - 'name-servers': { - 'ip-address': security_service['dns_ip'], - }, + 'name-servers': [], 'dns-state': 'enabled', } + for dns_ip in security_service['dns_ip'].split(','): + api_args['name-servers'].append({'ip-address': dns_ip.strip()}) + try: self.send_request('net-dns-create', api_args) except netapp_api.NaApiError as e: diff --git a/manila/tests/share/drivers/netapp/dataontap/client/test_client_cmode.py b/manila/tests/share/drivers/netapp/dataontap/client/test_client_cmode.py index 10e494266a..a72681e2b4 100644 --- a/manila/tests/share/drivers/netapp/dataontap/client/test_client_cmode.py +++ b/manila/tests/share/drivers/netapp/dataontap/client/test_client_cmode.py @@ -2585,15 +2585,33 @@ class NetAppClientCmodeTestCase(test.TestCase): net_dns_create_args = { 'domains': {'string': fake.CIFS_SECURITY_SERVICE['domain']}, - 'name-servers': { + 'name-servers': [{ 'ip-address': fake.CIFS_SECURITY_SERVICE['dns_ip'] - }, + }], 'dns-state': 'enabled' } self.client.send_request.assert_has_calls([ mock.call('net-dns-create', net_dns_create_args)]) + def test_configure_dns_multiple_dns_ip(self): + + self.mock_object(self.client, 'send_request') + mock_dns_ips = ['10.0.0.1', '10.0.0.2', '10.0.0.3'] + security_service = fake.CIFS_SECURITY_SERVICE + security_service['dns_ip'] = ', '.join(mock_dns_ips) + + self.client.configure_dns(security_service) + + net_dns_create_args = { + 'domains': {'string': security_service['domain']}, + 'dns-state': 'enabled', + 'name-servers': [{'ip-address': dns_ip} for dns_ip in mock_dns_ips] + } + + self.client.send_request.assert_has_calls([ + mock.call('net-dns-create', net_dns_create_args)]) + def test_configure_dns_for_kerberos(self): self.mock_object(self.client, 'send_request') @@ -2602,9 +2620,9 @@ class NetAppClientCmodeTestCase(test.TestCase): net_dns_create_args = { 'domains': {'string': fake.KERBEROS_SECURITY_SERVICE['domain']}, - 'name-servers': { + 'name-servers': [{ 'ip-address': fake.KERBEROS_SECURITY_SERVICE['dns_ip'] - }, + }], 'dns-state': 'enabled' } @@ -2621,9 +2639,9 @@ class NetAppClientCmodeTestCase(test.TestCase): net_dns_create_args = { 'domains': {'string': fake.KERBEROS_SECURITY_SERVICE['domain']}, - 'name-servers': { + 'name-servers': [{ 'ip-address': fake.KERBEROS_SECURITY_SERVICE['dns_ip'] - }, + }], 'dns-state': 'enabled' } diff --git a/releasenotes/notes/netapp-cdot-ss-multiple-dns-ip-df42a217977ce44d.yaml b/releasenotes/notes/netapp-cdot-ss-multiple-dns-ip-df42a217977ce44d.yaml new file mode 100644 index 0000000000..8574946732 --- /dev/null +++ b/releasenotes/notes/netapp-cdot-ss-multiple-dns-ip-df42a217977ce44d.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + The NetApp ONTAP driver security service dns_ip parameter also takes a list + of comma separated DNS IPs for vserver dns configuration. Allows HA setup, + where DNS can be down for maintenance.