diff options
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/network/test_manager.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/nova/tests/network/test_manager.py b/nova/tests/network/test_manager.py index 11e293291..995c78061 100644 --- a/nova/tests/network/test_manager.py +++ b/nova/tests/network/test_manager.py @@ -943,6 +943,41 @@ class VlanNetworkTestCase(test.TestCase): fixed = db.fixed_ip_get_by_address(elevated, fix_addr) self.assertFalse(fixed['allocated']) + def test_deallocate_fixed_deleted(self): + """Verify doesn't deallocate deleted fixed_ip from deleted network""" + + def network_get(_context, network_id): + return networks[network_id] + + def teardown_network_on_host(_context, network): + if network['id'] == 0: + raise Exception('Correct network/fixed_ip assertion') + + self.stubs.Set(db, 'network_get', network_get) + self.stubs.Set(self.network, '_teardown_network_on_host', + teardown_network_on_host) + + context1 = context.RequestContext('user', 'project1') + + instance = db.instance_create(context1, + {'project_id': 'project1'}) + + elevated = context1.elevated() + fix_addr = db.fixed_ip_associate_pool(elevated, 1, instance['id']) + db.fixed_ip_update(elevated, fix_addr, {'deleted': 1}) + elevated.read_deleted = 'yes' + delfixed = db.fixed_ip_get_by_address(elevated, fix_addr) + values = {'address': fix_addr, + 'network_id': 0, + 'instance_id': delfixed['instance_id']} + db.fixed_ip_create(elevated, values) + elevated.read_deleted = 'no' + newfixed = db.fixed_ip_get_by_address(elevated, fix_addr) + elevated.read_deleted = 'yes' + + deallocate = self.network.deallocate_fixed_ip + self.assertRaises(Exception, deallocate, context1, fix_addr, 'fake') + def test_deallocate_fixed_no_vif(self): """Verify that deallocate doesn't raise when no vif is returned. |
