From f3a2266972c5cefda956d26ec2b009c4c3d7f28c Mon Sep 17 00:00:00 2001 From: Shashank Kumar Shankar Date: Fri, 26 Aug 2016 15:19:14 +0000 Subject: Integration of Provisioning Block OVO. This patch integrates Provisioning Block OVO. Change-Id: I08d373d47dc69c3866f23e3187b1e48b8d68a30b Partially-Implements: blueprint adopt-oslo-versioned-objects-for-db --- neutron/db/provisioning_blocks.py | 46 +++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 24 deletions(-) (limited to 'neutron/db/provisioning_blocks.py') diff --git a/neutron/db/provisioning_blocks.py b/neutron/db/provisioning_blocks.py index ae8062a0da..397c6e1a60 100644 --- a/neutron/db/provisioning_blocks.py +++ b/neutron/db/provisioning_blocks.py @@ -18,17 +18,21 @@ from oslo_log import log as logging from neutron._i18n import _LE from neutron.callbacks import registry from neutron.callbacks import resources -from neutron.db import api as db_api - from neutron.common import _deprecate +from neutron.db import api as db_api from neutron.db.models import provisioning_block as pb_model from neutron.db import models_v2 +from neutron.objects import provisioning_blocks as pb_obj LOG = logging.getLogger(__name__) PROVISIONING_COMPLETE = 'provisioning_complete' # identifiers for the various entities that participate in provisioning DHCP_ENTITY = 'DHCP' L2_AGENT_ENTITY = 'L2' + +# TODO(sshank): Change to object later on when complete integration of Port +# OVO is complete. Currently 'extend_port_dict' in ext_test fails when changed +# to OVO here. _RESOURCE_TO_MODEL_MAP = {resources.PORT: models_v2.Port} _deprecate._moved_global('ProvisioningBlock', new_module=pb_model) @@ -60,18 +64,15 @@ def add_provisioning_component(context, object_id, object_type, entity): standard_attr_id = _get_standard_attr_id(context, object_id, object_type) if not standard_attr_id: return - record = context.session.query(pb_model.ProvisioningBlock).filter_by( - standard_attr_id=standard_attr_id, entity=entity).first() - if record: + if pb_obj.ProvisioningBlock.objects_exist( + context, standard_attr_id=standard_attr_id, entity=entity): # an entry could be leftover from a previous transition that hasn't # yet been provisioned. (e.g. multiple updates in a short period) LOG.debug("Ignored duplicate provisioning block setup for %(otype)s " "%(oid)s by entity %(entity)s.", log_dict) return - with context.session.begin(subtransactions=True): - record = pb_model.ProvisioningBlock(standard_attr_id=standard_attr_id, - entity=entity) - context.session.add(record) + pb_obj.ProvisioningBlock( + context, standard_attr_id=standard_attr_id, entity=entity).create() LOG.debug("Transition to ACTIVE for %(otype)s object %(oid)s " "will not be triggered until provisioned by entity %(entity)s.", log_dict) @@ -95,16 +96,14 @@ def remove_provisioning_component(context, object_id, object_type, entity, the standard_attr_id. :return: boolean indicating whether or not a record was deleted """ - with context.session.begin(subtransactions=True): - standard_attr_id = standard_attr_id or _get_standard_attr_id( - context, object_id, object_type) - if not standard_attr_id: - return False - record = context.session.query(pb_model.ProvisioningBlock).filter_by( - standard_attr_id=standard_attr_id, entity=entity).first() - if record: - context.session.delete(record) - return True + standard_attr_id = standard_attr_id or _get_standard_attr_id( + context, object_id, object_type) + if not standard_attr_id: + return False + if pb_obj.ProvisioningBlock.delete_objects( + context, standard_attr_id=standard_attr_id, entity=entity): + return True + else: return False @@ -138,9 +137,8 @@ def provisioning_complete(context, object_id, object_type, entity): "%(entity)s.", log_dict) # now with that committed, check if any records are left. if None, emit # an event that provisioning is complete. - records = context.session.query(pb_model.ProvisioningBlock).filter_by( - standard_attr_id=standard_attr_id).count() - if not records: + if not pb_obj.ProvisioningBlock.objects_exist( + context, standard_attr_id=standard_attr_id): LOG.debug("Provisioning complete for %(otype)s %(oid)s triggered by " "entity %(entity)s.", log_dict) registry.notify(object_type, PROVISIONING_COMPLETE, @@ -161,8 +159,8 @@ def is_object_blocked(context, object_id, object_type): if not standard_attr_id: # object doesn't exist so it has no blocks return False - return bool(context.session.query(pb_model.ProvisioningBlock).filter_by( - standard_attr_id=standard_attr_id).count()) + return pb_obj.ProvisioningBlock.objects_exist( + context, standard_attr_id=standard_attr_id) def _get_standard_attr_id(context, object_id, object_type): -- cgit v1.2.1