summaryrefslogtreecommitdiff
path: root/neutron/db/provisioning_blocks.py
diff options
context:
space:
mode:
authorShashank Kumar Shankar <shashank.kumar.shankar@intel.com>2016-08-26 15:19:14 +0000
committerArmando Migliaccio <armamig@gmail.com>2017-02-02 19:16:55 +0000
commitf3a2266972c5cefda956d26ec2b009c4c3d7f28c (patch)
tree1d654cb4b68631e506c16d82b4f064dbc57f4337 /neutron/db/provisioning_blocks.py
parent0e712489557b9ebe0b6d90abf54260a53987891d (diff)
downloadneutron-f3a2266972c5cefda956d26ec2b009c4c3d7f28c.tar.gz
Integration of Provisioning Block OVO.
This patch integrates Provisioning Block OVO. Change-Id: I08d373d47dc69c3866f23e3187b1e48b8d68a30b Partially-Implements: blueprint adopt-oslo-versioned-objects-for-db
Diffstat (limited to 'neutron/db/provisioning_blocks.py')
-rw-r--r--neutron/db/provisioning_blocks.py46
1 files changed, 22 insertions, 24 deletions
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):