Clean up helper methods in ResourceProvider
This change moves several of the module level methods that perform database interaction back into the ResourceProvider class. They had been created outside the class because of issues with the fixtures python library when monkeypatching staticmethods and testing with python3. Those issue have since been fixed in fixtures by https://github.com/testing-cabal/fixtures/pull/30 Note that the methods that are associated with _update, _add and _set_inventory have _not_ been moved because the changes involved would have been more than a simple copy and paste. Change-Id: I14395ba84cea9effe81e42f7615101ad9fab80e3 Partially-Implements: blueprint generic-resource-pools
This commit is contained in:
parent
29f82ad191
commit
0709f65b50
@ -25,48 +25,6 @@ _INV_TBL = models.Inventory.__table__
|
||||
_RP_TBL = models.ResourceProvider.__table__
|
||||
|
||||
|
||||
@db_api.api_context_manager.writer
|
||||
def _create_rp_in_db(context, updates):
|
||||
db_rp = models.ResourceProvider()
|
||||
db_rp.update(updates)
|
||||
context.session.add(db_rp)
|
||||
return db_rp
|
||||
|
||||
|
||||
@db_api.api_context_manager.writer
|
||||
def _delete_rp_from_db(context, _id):
|
||||
# Don't delete the resource provider if it has allocations.
|
||||
rp_allocations = context.session.query(models.Allocation).\
|
||||
filter(models.Allocation.resource_provider_id == _id).\
|
||||
count()
|
||||
if rp_allocations:
|
||||
raise exception.ResourceProviderInUse()
|
||||
# Delete any inventory associated with the resource provider
|
||||
context.session.query(models.Inventory).\
|
||||
filter(models.Inventory.resource_provider_id == _id).delete()
|
||||
result = context.session.query(models.ResourceProvider).\
|
||||
filter(models.ResourceProvider.id == _id).delete()
|
||||
if not result:
|
||||
raise exception.NotFound()
|
||||
|
||||
|
||||
@db_api.api_context_manager.writer
|
||||
def _update_rp_in_db(context, id, updates):
|
||||
db_rp = context.session.query(models.ResourceProvider).filter_by(
|
||||
id=id).first()
|
||||
db_rp.update(updates)
|
||||
db_rp.save(context.session)
|
||||
|
||||
|
||||
@db_api.api_context_manager.reader
|
||||
def _get_rp_by_uuid_from_db(context, uuid):
|
||||
result = context.session.query(models.ResourceProvider).filter_by(
|
||||
uuid=uuid).first()
|
||||
if not result:
|
||||
raise exception.NotFound()
|
||||
return result
|
||||
|
||||
|
||||
def _get_current_inventory_resources(conn, rp):
|
||||
"""Returns a set() containing the resource class IDs for all resources
|
||||
currently having an inventory record for the supplied resource provider.
|
||||
@ -341,16 +299,37 @@ class ResourceProvider(base.NovaObject):
|
||||
self.obj_reset_changes()
|
||||
|
||||
@staticmethod
|
||||
@db_api.api_context_manager.writer
|
||||
def _create_in_db(context, updates):
|
||||
return _create_rp_in_db(context, updates)
|
||||
db_rp = models.ResourceProvider()
|
||||
db_rp.update(updates)
|
||||
context.session.add(db_rp)
|
||||
return db_rp
|
||||
|
||||
@staticmethod
|
||||
def _delete(context, id):
|
||||
_delete_rp_from_db(context, id)
|
||||
@db_api.api_context_manager.writer
|
||||
def _delete(context, _id):
|
||||
# Don't delete the resource provider if it has allocations.
|
||||
rp_allocations = context.session.query(models.Allocation).\
|
||||
filter(models.Allocation.resource_provider_id == _id).\
|
||||
count()
|
||||
if rp_allocations:
|
||||
raise exception.ResourceProviderInUse()
|
||||
# Delete any inventory associated with the resource provider
|
||||
context.session.query(models.Inventory).\
|
||||
filter(models.Inventory.resource_provider_id == _id).delete()
|
||||
result = context.session.query(models.ResourceProvider).\
|
||||
filter(models.ResourceProvider.id == _id).delete()
|
||||
if not result:
|
||||
raise exception.NotFound()
|
||||
|
||||
@staticmethod
|
||||
@db_api.api_context_manager.writer
|
||||
def _update_in_db(context, id, updates):
|
||||
return _update_rp_in_db(context, id, updates)
|
||||
db_rp = context.session.query(models.ResourceProvider).filter_by(
|
||||
id=id).first()
|
||||
db_rp.update(updates)
|
||||
db_rp.save(context.session)
|
||||
|
||||
@staticmethod
|
||||
def _from_db_object(context, resource_provider, db_resource_provider):
|
||||
@ -361,8 +340,13 @@ class ResourceProvider(base.NovaObject):
|
||||
return resource_provider
|
||||
|
||||
@staticmethod
|
||||
@db_api.api_context_manager.reader
|
||||
def _get_by_uuid_from_db(context, uuid):
|
||||
return _get_rp_by_uuid_from_db(context, uuid)
|
||||
result = context.session.query(models.ResourceProvider).filter_by(
|
||||
uuid=uuid).first()
|
||||
if not result:
|
||||
raise exception.NotFound()
|
||||
return result
|
||||
|
||||
|
||||
@base.NovaObjectRegistry.register
|
||||
|
Loading…
x
Reference in New Issue
Block a user