Revert "Remove get_current_session method"

This reverts commit e5c5bbfc3a.

Change-Id: I2add1bb19bee4133217991b5ff5d5f72add11b8d
This commit is contained in:
Thomas Bachman
2020-08-04 18:04:27 +00:00
parent dc3ffa72d8
commit 07488e6940
5 changed files with 28 additions and 65 deletions

View File

@@ -50,6 +50,12 @@ def get_current_context():
return get_obj_from_stack(n_context.Context)
def get_current_session():
ctx = get_current_context()
if ctx:
return ctx.session
def get_resource_plural(resource):
if resource.endswith('y'):
resource_plural = resource.replace('y', 'ies')

View File

@@ -20,9 +20,6 @@
# corresponding to the newest neutron branch supported by this
# repository.
from sqlalchemy import inspect
import neutron.objects.base as n_base
from neutron_lib.db import api
get_context_manager = api.get_context_manager
@@ -33,14 +30,3 @@ retry_db_errors = api.retry_db_errors
retry_if_session_inactive = api.retry_if_session_inactive
CONTEXT_READER = api.CONTEXT_READER
CONTEXT_WRITER = api.CONTEXT_WRITER
def get_session_from_obj(db_obj):
# Support OVOs
if isinstance(db_obj, n_base.NeutronObject):
db_obj = db_obj.db_obj
try:
instance = inspect(db_obj)
return instance.session
except Exception:
return None

View File

@@ -36,6 +36,10 @@ extensions.get_extensions_path = get_extensions_path
from gbpservice.common import utils as gbp_utils
def get_current_session():
return gbp_utils.get_current_session()
from neutron_lib import context as nlib_ctx

View File

@@ -17,6 +17,7 @@
# that the patches are applied before any of the
# modules save a reference to the functions being patched
from gbpservice.neutron.extensions import patch # noqa
from gbpservice.neutron.plugins.ml2plus import patch_neutron # noqa
from neutron.common import constants as n_const
from neutron.common import utils as n_utils
@@ -163,15 +164,11 @@ class Ml2PlusPlugin(ml2_plugin.Ml2Plugin,
@resource_extend.extends([net_def.COLLECTION_NAME])
def _ml2_md_extend_network_dict(result, netdb):
plugin = directory.get_plugin()
session = db_api.get_session_from_obj(netdb)
if not session:
session = db_api.get_writer_session()
session = patch_neutron.get_current_session()
# REVISIT: Check if transaction begin is still
# required here, and if so, if reader pattern
# can be used instead (will require getting the
# current context, which should be available in
# the session.info's dictionary, with a key of
# 'using_context').
# current context)
with session.begin(subtransactions=True):
plugin.extension_manager.extend_network_dict(
session, netdb, result)
@@ -179,11 +176,8 @@ class Ml2PlusPlugin(ml2_plugin.Ml2Plugin,
@staticmethod
@resource_extend.extends([net_def.COLLECTION_NAME + '_BULK'])
def _ml2_md_extend_network_dict_bulk(results, _):
netdb = results[0][1] if results else None
plugin = directory.get_plugin()
session = db_api.get_session_from_obj(netdb)
if not session:
session = db_api.get_writer_session()
session = patch_neutron.get_current_session()
with session.begin(subtransactions=True):
plugin.extension_manager.extend_network_dict_bulk(session, results)
@@ -191,15 +185,11 @@ class Ml2PlusPlugin(ml2_plugin.Ml2Plugin,
@resource_extend.extends([port_def.COLLECTION_NAME])
def _ml2_md_extend_port_dict(result, portdb):
plugin = directory.get_plugin()
session = db_api.get_session_from_obj(portdb)
if not session:
session = db_api.get_writer_session()
session = patch_neutron.get_current_session()
# REVISIT: Check if transaction begin is still
# required here, and if so, if reader pattern
# can be used instead (will require getting the
# current context, which should be available in
# the session.info's dictionary, with a key of
# 'using_context').
# current context)
with session.begin(subtransactions=True):
plugin.extension_manager.extend_port_dict(
session, portdb, result)
@@ -207,11 +197,8 @@ class Ml2PlusPlugin(ml2_plugin.Ml2Plugin,
@staticmethod
@resource_extend.extends([port_def.COLLECTION_NAME + '_BULK'])
def _ml2_md_extend_port_dict_bulk(results, _):
portdb = results[0][1] if results else None
plugin = directory.get_plugin()
session = db_api.get_session_from_obj(portdb)
if not session:
session = db_api.get_writer_session()
session = patch_neutron.get_current_session()
with session.begin(subtransactions=True):
plugin.extension_manager.extend_port_dict_bulk(session, results)
@@ -219,15 +206,11 @@ class Ml2PlusPlugin(ml2_plugin.Ml2Plugin,
@resource_extend.extends([subnet_def.COLLECTION_NAME])
def _ml2_md_extend_subnet_dict(result, subnetdb):
plugin = directory.get_plugin()
session = db_api.get_session_from_obj(subnetdb)
if not session:
session = db_api.get_writer_session()
session = patch_neutron.get_current_session()
# REVISIT: Check if transaction begin is still
# required here, and if so, if reader pattern
# can be used instead (will require getting the
# current context, which should be available in
# the session.info's dictionary, with a key of
# 'using_context').
# current context)
with session.begin(subtransactions=True):
plugin.extension_manager.extend_subnet_dict(
session, subnetdb, result)
@@ -235,11 +218,8 @@ class Ml2PlusPlugin(ml2_plugin.Ml2Plugin,
@staticmethod
@resource_extend.extends([subnet_def.COLLECTION_NAME + '_BULK'])
def _ml2_md_extend_subnet_dict_bulk(results, _):
subnetdb = results[0][1] if results else None
plugin = directory.get_plugin()
session = db_api.get_session_from_obj(subnetdb)
if not session:
session = db_api.get_writer_session()
session = patch_neutron.get_current_session()
with session.begin(subtransactions=True):
plugin.extension_manager.extend_subnet_dict_bulk(session, results)
@@ -247,15 +227,11 @@ class Ml2PlusPlugin(ml2_plugin.Ml2Plugin,
@resource_extend.extends([subnetpool_def.COLLECTION_NAME])
def _ml2_md_extend_subnetpool_dict(result, subnetpooldb):
plugin = directory.get_plugin()
session = db_api.get_session_from_obj(subnetpooldb)
if not session:
session = db_api.get_writer_session()
session = patch_neutron.get_current_session()
# REVISIT: Check if transaction begin is still
# required here, and if so, if reader pattern
# can be used instead (will require getting the
# current context, which should be available in
# the session.info's dictionary, with a key of
# 'using_context').
# current context)
with session.begin(subtransactions=True):
plugin.extension_manager.extend_subnetpool_dict(
session, subnetpooldb, result)
@@ -263,11 +239,8 @@ class Ml2PlusPlugin(ml2_plugin.Ml2Plugin,
@staticmethod
@resource_extend.extends([subnetpool_def.COLLECTION_NAME + '_BULK'])
def _ml2_md_extend_subnetpool_dict_bulk(results, _):
subnetpooldb = results[0][1] if results else None
plugin = directory.get_plugin()
session = db_api.get_session_from_obj(subnetpooldb)
if not session:
session = db_api.get_writer_session()
session = patch_neutron.get_current_session()
with session.begin(subtransactions=True):
plugin.extension_manager.extend_subnetpool_dict_bulk(session,
results)
@@ -276,15 +249,11 @@ class Ml2PlusPlugin(ml2_plugin.Ml2Plugin,
@resource_extend.extends([as_def.COLLECTION_NAME])
def _ml2_md_extend_address_scope_dict(result, address_scope):
plugin = directory.get_plugin()
session = db_api.get_session_from_obj(address_scope)
if not session:
session = db_api.get_writer_session()
session = patch_neutron.get_current_session()
# REVISIT: Check if transaction begin is still
# required here, and if so, if reader pattern
# can be used instead (will require getting the
# current context, which should be available in
# the session.info's dictionary, with a key of
# 'using_context').
# current context)
with session.begin(subtransactions=True):
plugin.extension_manager.extend_address_scope_dict(
session, address_scope, result)
@@ -292,11 +261,8 @@ class Ml2PlusPlugin(ml2_plugin.Ml2Plugin,
@staticmethod
@resource_extend.extends([as_def.COLLECTION_NAME + '_BULK'])
def _ml2_md_extend_address_scope_dict_bulk(results, _):
address_scope = results[0][1] if results else None
plugin = directory.get_plugin()
session = db_api.get_session_from_obj(address_scope)
if not session:
session = db_api.get_writer_session()
session = patch_neutron.get_current_session()
with session.begin(subtransactions=True):
plugin.extension_manager.extend_address_scope_dict_bulk(session,
results)

View File

@@ -42,6 +42,7 @@ from gbpservice.neutron.plugins.ml2plus.drivers.apic_aim import (
extension_db as extn_db)
from gbpservice.neutron.plugins.ml2plus.drivers.apic_aim import (
mechanism_driver as md)
from gbpservice.neutron.plugins.ml2plus import patch_neutron # noqa
LOG = logging.getLogger(__name__)
@@ -107,7 +108,7 @@ class ApicL3Plugin(common_db_mixin.CommonDbMixin,
if not routers:
return
plugin = directory.get_plugin(constants.L3)
session = db_api.get_writer_session()
session = patch_neutron.get_current_session()
try:
plugin._md.extend_router_dict_bulk(session, routers)
plugin._include_router_extn_attr_bulk(session, routers)