From 72590b9da0eb2f9745c4c269ab8fe60ea6f90593 Mon Sep 17 00:00:00 2001 From: rabi Date: Thu, 12 Aug 2021 11:30:36 +0530 Subject: [PATCH] Don't pass None to neutron for ipv6_address_mode/ipv6_ra_mode Neutron does not accept None values for these attributes. [1] https://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/subnet.py#L125 Closes-Bug: #1939595 Change-Id: I4c16d988f898f7a85513fbd06d162d04f65c2c36 --- .../module_utils/network_data_v2.py | 8 ++++---- .../modules/tripleo_composable_network.py | 7 +++++-- .../tests/modules/test_network_data_v2.py | 14 +++++++------- .../modules/test_tripleo_composable_network.py | 6 ------ 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/tripleo_ansible/ansible_plugins/module_utils/network_data_v2.py b/tripleo_ansible/ansible_plugins/module_utils/network_data_v2.py index 2224b7cd5..19ad1d994 100644 --- a/tripleo_ansible/ansible_plugins/module_utils/network_data_v2.py +++ b/tripleo_ansible/ansible_plugins/module_utils/network_data_v2.py @@ -155,12 +155,12 @@ definitions: $ref: "#/definitions/ipv6_route" ipv6_address_mode: enum: - - null + - slaac - dhcpv6-stateful - dhcpv6-stateless ipv6_ra_mode: enum: - - null + - slaac - dhcpv6-stateful - dhcpv6-stateless enable_dhcp: @@ -217,12 +217,12 @@ definitions: $ref: "#/definitions/ipv6_route" ipv6_address_mode: enum: - - null + - slaac - dhcpv6-stateful - dhcpv6-stateless ipv6_ra_mode: enum: - - null + - slaac - dhcpv6-stateful - dhcpv6-stateless enable_dhcp: diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_composable_network.py b/tripleo_ansible/ansible_plugins/modules/tripleo_composable_network.py index fbd582775..3568176c1 100644 --- a/tripleo_ansible/ansible_plugins/modules/tripleo_composable_network.py +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_composable_network.py @@ -293,14 +293,17 @@ def create_subnet_spec(net_id, name, subnet_data, 'name': name, 'network_id': net_id, 'enable_dhcp': subnet_data.get('enable_dhcp', False), - 'ipv6_address_mode': subnet_data.get('ipv6_address_mode', None), - 'ipv6_ra_mode': subnet_data.get('ipv6_ra_mode', None), 'gateway_ip': subnet_data.get('gateway_ipv6', None), 'cidr': subnet_data['ipv6_subnet'], 'allocation_pools': subnet_data.get('ipv6_allocation_pools', []), 'host_routes': subnet_data.get('routes_ipv6', []), 'tags': tags, } + if 'ipv6_address_mode' in subnet_data: + subnet_v6_spec[ + 'ipv6_address_mode'] = subnet_data['ipv6_address_mode'] + if 'ipv6_ra_mode' in subnet_data: + subnet_v6_spec['ipv6_ra_mode'] = subnet_data['ipv6_ra_mode'] return subnet_v4_spec, subnet_v6_spec diff --git a/tripleo_ansible/tests/modules/test_network_data_v2.py b/tripleo_ansible/tests/modules/test_network_data_v2.py index 408407148..ee5bd84e1 100644 --- a/tripleo_ansible/tests/modules/test_network_data_v2.py +++ b/tripleo_ansible/tests/modules/test_network_data_v2.py @@ -54,8 +54,8 @@ subnets: routes_ipv6: - destination: 2001:db8:b::/64 nexthop: 2001:db8:a::1 - ipv6_address_mode: null - ipv6_ra_mode: null + ipv6_address_mode: slaac + ipv6_ra_mode: slaac enable_dhcp: false physical_network: storage_subnet01 network_type: flat @@ -78,8 +78,8 @@ subnets: routes_ipv6: - destination: 2001:db8:a::/64 nexthop: 2001:db8:b::1 - ipv6_address_mode: null - ipv6_ra_mode: null + ipv6_address_mode: slaac + ipv6_ra_mode: slaac enable_dhcp: false physical_network: storage_subnet01 network_type: flat @@ -212,7 +212,7 @@ class TestNetworkDataV2(tests_base.TestCase): self.assertRegex(error_messages_dual, (r"- subnets/additionalProperties/oneOf/dual_subnet" r"/ipv6_address_mode/enum: 'invalid' is not one of " - r"\[None, 'dhcpv6-stateful', 'dhcpv6-stateless'\]" + r"\['slaac', 'dhcpv6-stateful', 'dhcpv6-stateless'\]" r"\n")) self.assertRegex(error_messages_dual, (r"- subnets/additionalProperties/oneOf/dual_subnet" @@ -228,7 +228,7 @@ class TestNetworkDataV2(tests_base.TestCase): self.assertRegex(error_messages_dual, (r"- subnets/additionalProperties/oneOf/dual_subnet" r"/ipv6_ra_mode/enum: 'invalid' is not one of " - r"\[None, 'dhcpv6-stateful', 'dhcpv6-stateless'\]\n")) + r"\['slaac', 'dhcpv6-stateful', 'dhcpv6-stateless'\]\n")) self.assertRegex(error_messages_dual, (r"- subnets/additionalProperties/oneOf/dual_subnet" r"/ipv6_subnet/ip_subnet_version: invalid does not " @@ -379,7 +379,7 @@ class TestNetworkDataV2(tests_base.TestCase): self.assertRegex(error_messages_ipv6, (r"- subnets/additionalProperties/oneOf/ipv6_subnet" r"/ipv6_address_mode/enum: 'invalid' is not one of " - r"\[None, 'dhcpv6-stateful', 'dhcpv6-stateless'\]" + r"\['slaac', 'dhcpv6-stateful', 'dhcpv6-stateless'\]" r"\n")) self.assertRegex(error_messages_ipv6, (r"- subnets/additionalProperties/oneOf/ipv6_subnet" diff --git a/tripleo_ansible/tests/modules/test_tripleo_composable_network.py b/tripleo_ansible/tests/modules/test_tripleo_composable_network.py index 6a086b3ee..9d15716c5 100644 --- a/tripleo_ansible/tests/modules/test_tripleo_composable_network.py +++ b/tripleo_ansible/tests/modules/test_tripleo_composable_network.py @@ -349,8 +349,6 @@ class TestTripleoComposableNetwork(tests_base.TestCase): 'cidr': '2001:db8:a::/64', 'allocation_pools': [], 'host_routes': [], - 'ipv6_address_mode': None, - 'ipv6_ra_mode': None, 'tags': ['tripleo_vlan_id=100'], } subnet_v4_spec, subnet_v6_spec = plugin.create_subnet_spec( @@ -406,8 +404,6 @@ class TestTripleoComposableNetwork(tests_base.TestCase): 'host_routes': [ {'destination': '2001:db8:b::/64', 'nexthop': '2001:db8:a::1'} ], - 'ipv6_address_mode': None, - 'ipv6_ra_mode': None, 'tags': ['tripleo_vlan_id=100'], } subnet_v4_spec, subnet_v6_spec = plugin.create_subnet_spec( @@ -449,8 +445,6 @@ class TestTripleoComposableNetwork(tests_base.TestCase): network_id='net_id', segment_id='segment_id', is_dhcp_enabled=False, - ipv6_address_mode=None, - ipv6_ra_mode=None, ) result = plugin.validate_subnet_update(