# Remove all of the intersecting elements
for original_ip in original_ips[:]:
for new_ip in new_ips[:]:
- if 'ip_address' in new_ip:
- if (original_ip['ip_address'] == new_ip['ip_address']
- and
- original_ip['subnet_id'] == new_ip['subnet_id']):
- original_ips.remove(original_ip)
- new_ips.remove(new_ip)
+ if ('ip_address' in new_ip and
+ original_ip['ip_address'] == new_ip['ip_address']):
+ original_ips.remove(original_ip)
+ new_ips.remove(new_ip)
# Check if the IP's to add are OK
to_add = self._test_fixed_ips_for_port(context, network_id, new_ips)
self._setup_port_mocks()
super(TestMidonetPortsV2, self).test_update_port_update_ip()
+ def test_update_port_update_ip_address_only(self):
+ self._setup_port_mocks()
+ super(TestMidonetPortsV2,
+ self).test_update_port_update_ip_address_only()
+
def test_update_port_update_ips(self):
self._setup_port_mocks()
super(TestMidonetPortsV2, self).test_update_port_update_ips()
self.assertEqual(ips[0]['ip_address'], '10.0.0.10')
self.assertEqual(ips[0]['subnet_id'], subnet['subnet']['id'])
+ def test_update_port_update_ip_address_only(self):
+ with self.subnet() as subnet:
+ with self.port(subnet=subnet) as port:
+ ips = port['port']['fixed_ips']
+ self.assertEqual(len(ips), 1)
+ self.assertEqual(ips[0]['ip_address'], '10.0.0.2')
+ self.assertEqual(ips[0]['subnet_id'], subnet['subnet']['id'])
+ data = {'port': {'fixed_ips': [{'subnet_id':
+ subnet['subnet']['id'],
+ 'ip_address': "10.0.0.10"},
+ {'ip_address': "10.0.0.2"}]}}
+ req = self.new_update_request('ports', data,
+ port['port']['id'])
+ res = self.deserialize(self.fmt, req.get_response(self.api))
+ ips = res['port']['fixed_ips']
+ self.assertEqual(len(ips), 2)
+ self.assertEqual(ips[0]['ip_address'], '10.0.0.2')
+ self.assertEqual(ips[0]['subnet_id'], subnet['subnet']['id'])
+ self.assertEqual(ips[1]['ip_address'], '10.0.0.10')
+ self.assertEqual(ips[1]['subnet_id'], subnet['subnet']['id'])
+
def test_update_port_update_ips(self):
"""Update IP and generate new IP on port.