873
874
db.floating_ip_destroy(context1.elevated(), float_addr)
874
875
db.fixed_ip_disassociate(context1.elevated(), fix_addr)
877
def test_deallocate_fixed(self):
878
"""Verify that release is called properly.
880
Ensures https://bugs.launchpad.net/nova/+bug/973442 doesn't return"""
882
def network_get(_context, network_id):
883
return networks[network_id]
885
self.stubs.Set(db, 'network_get', network_get)
887
def vif_get(_context, _vif_id):
888
return {'address': 'fake_mac'}
890
self.stubs.Set(db, 'virtual_interface_get', vif_get)
891
context1 = context.RequestContext('user', 'project1')
893
instance = db.instance_create(context1,
894
{'project_id': 'project1'})
896
elevated = context1.elevated()
897
fix_addr = db.fixed_ip_associate_pool(elevated, 1, instance['id'])
898
values = {'allocated': True,
899
'virtual_interface_id': 3}
900
db.fixed_ip_update(elevated, fix_addr, values)
901
fixed = db.fixed_ip_get_by_address(elevated, fix_addr)
902
network = db.network_get(elevated, fixed['network_id'])
904
self.flags(force_dhcp_release=True)
905
self.mox.StubOutWithMock(linux_net, 'release_dhcp')
906
linux_net.release_dhcp(network['bridge'], fixed['address'], 'fake_mac')
908
self.network.deallocate_fixed_ip(context1, fix_addr, 'fake')
909
fixed = db.fixed_ip_get_by_address(elevated, fix_addr)
910
self.assertFalse(fixed['allocated'])
876
912
def test_deallocate_fixed_no_vif(self):
877
913
"""Verify that deallocate doesn't raise when no vif is returned.
892
928
instance = db.instance_create(context1,
893
929
{'project_id': 'project1'})
895
fix_addr = db.fixed_ip_associate_pool(context1.elevated(),
931
elevated = context1.elevated()
932
fix_addr = db.fixed_ip_associate_pool(elevated, 1, instance['id'])
933
values = {'allocated': True,
934
'virtual_interface_id': 3}
935
db.fixed_ip_update(elevated, fix_addr, values)
898
937
self.flags(force_dhcp_release=True)
899
938
self.network.deallocate_fixed_ip(context1, fix_addr, 'fake')