Merge "Make nova-network use FixedIP object for updates"

This commit is contained in:
Jenkins 2014-02-14 19:35:15 +00:00 committed by Gerrit Code Review
commit 311652325b
2 changed files with 28 additions and 25 deletions

View File

@ -857,9 +857,9 @@ class NetworkManager(manager.Manager):
context.elevated(), network['id'], instance_id)
vif = vif_obj.VirtualInterface.get_by_instance_and_network(
context, instance_id, network['id'])
values = {'allocated': True,
'virtual_interface_id': vif['id']}
self.db.fixed_ip_update(context, str(fip.address), values)
fip.allocated = True
fip.virtual_interface_id = vif.id
fip.save()
self._do_trigger_security_group_members_refresh_for_instance(
instance_id)
@ -916,9 +916,9 @@ class NetworkManager(manager.Manager):
self.instance_dns_manager.delete_entry(n,
self.instance_dns_domain)
self.db.fixed_ip_update(context, address,
{'allocated': False,
'virtual_interface_id': None})
fixed_ip_ref.allocated = False
fixed_ip_ref.virtual_interface_id = None
fixed_ip_ref.save()
if teardown:
network = fixed_ip_ref.network
@ -974,11 +974,8 @@ class NetworkManager(manager.Manager):
LOG.warn(_('IP %s leased that is not associated'), address,
context=context)
return
now = timeutils.utcnow()
self.db.fixed_ip_update(context,
fixed_ip.address,
{'leased': True,
'updated_at': now})
fixed_ip.leased = True
fixed_ip.save()
if not fixed_ip.allocated:
LOG.warn(_('IP |%s| leased that isn\'t allocated'), address,
context=context)
@ -995,9 +992,8 @@ class NetworkManager(manager.Manager):
if not fixed_ip.leased:
LOG.warn(_('IP %s released that was not leased'), address,
context=context)
self.db.fixed_ip_update(context,
fixed_ip.address,
{'leased': False})
fixed_ip.leased = False
fixed_ip.save()
if not fixed_ip.allocated:
fixed_ip.disassociate()
@ -1725,8 +1721,8 @@ class VlanManager(RPCAllocateFixedIP, floating_ips.FloatingIP, NetworkManager):
if kwargs.get('vpn', None):
address = network['vpn_private_address']
fixed_ip_obj.FixedIP.associate(context, address, instance_id,
network['id'], reserved=True)
fip = fixed_ip_obj.FixedIP.associate(context, address, instance_id,
network['id'], reserved=True)
else:
address = kwargs.get('address', None)
if address:
@ -1737,13 +1733,13 @@ class VlanManager(RPCAllocateFixedIP, floating_ips.FloatingIP, NetworkManager):
fip = fixed_ip_obj.FixedIP.associate_pool(context,
network['id'],
instance_id)
address = fip.address
address = fip.address
vif = vif_obj.VirtualInterface.get_by_instance_and_network(
context, instance_id, network['id'])
values = {'allocated': True,
'virtual_interface_id': vif.id}
self.db.fixed_ip_update(context, str(address), values)
fip.allocated = True
fip.virtual_interface_id = vif.id
fip.save()
if not kwargs.get('vpn', None):
self._do_trigger_security_group_members_refresh_for_instance(
@ -1903,10 +1899,11 @@ class VlanManager(RPCAllocateFixedIP, floating_ips.FloatingIP, NetworkManager):
self.driver.kill_dhcp(dev)
self.l3driver.remove_gateway(network)
if not CONF.share_dhcp_address:
values = {'allocated': False,
'host': None}
self.db.fixed_ip_update(context, network['dhcp_server'],
values)
fip = fixed_ip_obj.FixedIP.get_by_address(
context, network.dhcp_server)
fip.allocated = False
fip.host = None
fip.save()
else:
self.driver.update_dhcp(elevated, dev, network)

View File

@ -1364,7 +1364,8 @@ class VlanNetworkTestCase(test.TestCase):
@mock.patch('nova.db.fixed_ip_get_by_address')
@mock.patch('nova.db.network_get')
def test_deallocate_fixed_no_vif(self, net_get, fixed_get):
@mock.patch('nova.db.fixed_ip_update')
def test_deallocate_fixed_no_vif(self, fixed_update, net_get, fixed_get):
"""Verify that deallocate doesn't raise when no vif is returned.
Ensures https://bugs.launchpad.net/nova/+bug/968457 doesn't return
@ -1384,13 +1385,18 @@ class VlanNetworkTestCase(test.TestCase):
elevated = context1.elevated()
fix_addr = db.fixed_ip_associate_pool(elevated, 1, instance['uuid'])
fixed_get.return_value = dict(test_fixed_ip.fake_fixed_ip,
address=fix_addr.address,
allocated=True,
virtual_interface_id=3,
instance_uuid=instance.uuid,
network=dict(test_network.fake_network,
**networks[1]))
self.flags(force_dhcp_release=True)
fixed_update.return_value = fixed_get.return_value
self.network.deallocate_fixed_ip(context1, fix_addr.address, 'fake')
fixed_update.assert_called_once_with(context1, fix_addr.address,
{'allocated': False,
'virtual_interface_id': None})
@mock.patch('nova.db.fixed_ip_get_by_address')
@mock.patch('nova.db.network_get')