diff --git a/src/config/api-server/tests/test_ip_alloc.py b/src/config/api-server/tests/test_ip_alloc.py index c72626488e5..bbda5b320ce 100644 --- a/src/config/api-server/tests/test_ip_alloc.py +++ b/src/config/api-server/tests/test_ip_alloc.py @@ -1557,7 +1557,6 @@ def test_network_subnet_update(self): vn.add_network_ipam(ipam1, vn_subnets) self._vnc_lib.virtual_network_create(vn) net_obj = self._vnc_lib.virtual_network_read(id = vn.uuid) - #update dns server to addr mgmt values in two subnets and keep None # in middle subnet ipam1_sn_v4.set_dns_server_address('11.1.1.253') @@ -1622,8 +1621,42 @@ def test_network_subnet_update(self): self._vnc_lib.virtual_network_update(vn) net_obj = self._vnc_lib.virtual_network_read(id = vn.uuid) - #cleanup + # delete vn and create a new subnet with add from start and add + # new network self._vnc_lib.virtual_network_delete(id=vn.uuid) + + #create a subnet with allocation from start and test the subnet + # to make sure gw_ip and dns_server_address is not updateable + ipam4_sn_v4 = IpamSubnetType(subnet=SubnetType('14.1.1.0', 24), + addr_from_start=True) + + ipam5_sn_v4 = IpamSubnetType(subnet=SubnetType('15.1.1.0', 24), + default_gateway='15.1.1.100', + dns_server_address='15.1.1.200', + addr_from_start=True) + vn1_subnets = VnSubnetsType([ipam4_sn_v4, ipam5_sn_v4]) + + vn1 = VirtualNetwork('my-v4-v6-vn', project, + virtual_network_properties=VirtualNetworkType(forwarding_mode='l3')) + + vn1.add_network_ipam(ipam1, vn1_subnets) + self._vnc_lib.virtual_network_create(vn1) + net_obj = self._vnc_lib.virtual_network_read(id = vn1.uuid) + + # change valid network property and and update vn1 + vn1.set_address_allocation_mode('user-defined-subnet-only') + self._vnc_lib.virtual_network_update(vn1) + net_obj = self._vnc_lib.virtual_network_read(id = vn1.uuid) + + # change valid subnet property and update vn1 + ipam4_sn_v4.set_subnet_name('subnet4') + ipam5_sn_v4.set_subnet_name('subnet5') + vn1._pending_field_updates.add('network_ipam_refs') + self._vnc_lib.virtual_network_update(vn1) + net_obj = self._vnc_lib.virtual_network_read(id = vn1.uuid) + + #cleanup + self._vnc_lib.virtual_network_delete(id=vn1.uuid) self._vnc_lib.network_ipam_delete(id=ipam1.uuid) self._vnc_lib.project_delete(id=project.uuid) #end diff --git a/src/config/api-server/vnc_addr_mgmt.py b/src/config/api-server/vnc_addr_mgmt.py index 7f9637c595c..c7bf68e8249 100644 --- a/src/config/api-server/vnc_addr_mgmt.py +++ b/src/config/api-server/vnc_addr_mgmt.py @@ -1194,7 +1194,7 @@ def _validate_subnet_update(self, req_subnets, db_subnets): network = IPNetwork('%s/%s' % (db_prefix, db_prefix_len)) if db_subnet.get('addr_from_start'): df_gw_ip = str(IPAddress(network.first + 1)) - df_dns_ser_addr = str(IPAddress(network.first + 2)) + df_dns = str(IPAddress(network.first + 2)) else: df_gw_ip = str(IPAddress(network.last - 1)) df_dns = str(IPAddress(network.last - 2))