Merge "[placement] Fix foreign key constraint error" into stable/pike
This commit is contained in:
commit
4d4930c59a
|
@ -505,6 +505,10 @@ class ResourceProvider(base.NovaObject):
|
|||
RPA_model = models.ResourceProviderAggregate
|
||||
context.session.query(RPA_model).\
|
||||
filter(RPA_model.resource_provider_id == _id).delete()
|
||||
# delete any trait associations for the resource provider
|
||||
RPT_model = models.ResourceProviderTrait
|
||||
context.session.query(RPT_model).\
|
||||
filter(RPT_model.resource_provider_id == _id).delete()
|
||||
# Now delete the RP records
|
||||
result = context.session.query(models.ResourceProvider).\
|
||||
filter(models.ResourceProvider.id == _id).delete()
|
||||
|
|
|
@ -140,6 +140,35 @@ class TestResourceProvider(test_objects._LocalTest):
|
|||
objects.ResourceProvider.get_by_uuid,
|
||||
self.context, uuids.missing)
|
||||
|
||||
def test_destroy_with_traits(self):
|
||||
"""Test deleting a resource provider that has a trait successfully.
|
||||
"""
|
||||
rp = resource_provider.ResourceProvider(self.context,
|
||||
uuid=uuids.rp,
|
||||
name='fake_rp1')
|
||||
rp.create()
|
||||
custom_trait = resource_provider.Trait(self.context,
|
||||
uuid=uuids.trait,
|
||||
name='CUSTOM_TRAIT_1')
|
||||
custom_trait.create()
|
||||
rp.set_traits([custom_trait])
|
||||
|
||||
trl = rp.get_traits()
|
||||
self.assertEqual(1, len(trl))
|
||||
|
||||
# Delete a resource provider that has a trait assosiation.
|
||||
rp.destroy()
|
||||
|
||||
# Assert the record has been deleted
|
||||
# in 'resource_provider_traits' table
|
||||
# after Resource Provider object has been destroyed.
|
||||
trl = rp.get_traits()
|
||||
self.assertEqual(0, len(trl))
|
||||
# Assert that NotFound exception is raised.
|
||||
self.assertRaises(exception.NotFound,
|
||||
resource_provider.ResourceProvider.get_by_uuid,
|
||||
self.context, uuids.rp)
|
||||
|
||||
|
||||
class TestInventoryNoDB(test_objects._LocalTest):
|
||||
USES_DB = False
|
||||
|
|
Loading…
Reference in New Issue