Delete fixed_ips when network is deleted

* adds failing test
 * adds exception that is raised when network is in use
 * fixes bug 754900

Change-Id: Ib95dc5927561b979b1eea237d4d6dc323483d4a5
This commit is contained in:
Vishvananda Ishaya
2012-04-03 11:30:57 -07:00
parent 352eb08b12
commit 2dc61cf148
2 changed files with 23 additions and 0 deletions

View File

@@ -525,6 +525,10 @@ class StorageRepositoryNotFound(NotFound):
message = _("Cannot find SR to read/write VDI.") message = _("Cannot find SR to read/write VDI.")
class NetworkInUse(NovaException):
message = _("Network %(network_id)s is still in use.")
class NetworkNotCreated(NovaException): class NetworkNotCreated(NovaException):
message = _("%(req)s is required to create a network.") message = _("%(req)s is required to create a network.")

View File

@@ -136,6 +136,25 @@ class DbApiTestCase(test.TestCase):
db_network = db.network_get(ctxt, network.id) db_network = db.network_get(ctxt, network.id)
self.assertEqual(network.uuid, db_network.uuid) self.assertEqual(network.uuid, db_network.uuid)
def test_network_delete_safe(self):
ctxt = context.get_admin_context()
values = {'host': 'localhost', 'project_id': 'project1'}
network = db.network_create_safe(ctxt, values)
db_network = db.network_get(ctxt, network.id)
values = {'network_id': network['id'], 'address': 'fake1'}
address1 = db.fixed_ip_create(ctxt, values)
values = {'network_id': network['id'],
'address': 'fake2',
'allocated': True}
address2 = db.fixed_ip_create(ctxt, values)
self.assertRaises(exception.NetworkInUse,
db.network_delete_safe, ctxt, network['id'])
db.fixed_ip_update(ctxt, address2, {'allocated': False})
network = db.network_delete_safe(ctxt, network['id'])
ctxt = ctxt.elevated(read_deleted='yes')
fixed_ip = db.fixed_ip_get_by_address(ctxt, address1)
self.assertTrue(fixed_ip['deleted'])
def test_network_create_with_duplicate_vlan(self): def test_network_create_with_duplicate_vlan(self):
ctxt = context.get_admin_context() ctxt = context.get_admin_context()
values1 = {'host': 'localhost', 'project_id': 'project1', 'vlan': 1} values1 = {'host': 'localhost', 'project_id': 'project1', 'vlan': 1}