diff --git a/f5lbaasdriver/v2/bigip/disconnected_service.py b/f5lbaasdriver/v2/bigip/disconnected_service.py index e77736399..09fc9d79c 100644 --- a/f5lbaasdriver/v2/bigip/disconnected_service.py +++ b/f5lbaasdriver/v2/bigip/disconnected_service.py @@ -13,8 +13,14 @@ # limitations under the License. # -from neutron.db import segments_db from neutron.plugins.ml2 import db + +try: + from neutron.db import segments_db +except ImportError: + # Mitaka compatibility + segments_db = db + from neutron.plugins.ml2 import models from oslo_log import log as logging @@ -52,7 +58,12 @@ def get_network_segment(self, context, agent_configuration, network): agent_configuration.get('tunnel_types', []) ] # look up segment details in the ml2_network_segments table - segments = segments_db.get_network_segments(context, network['id'], + if db == segments_db: + # Mitaka compatibility + ctx = context.session + else: + ctx = context + segments = segments_db.get_network_segments(ctx, network['id'], filter_dynamic=None) for segment in segments: @@ -98,8 +109,13 @@ def get_segment_id(self, context, port_id, agent_hosts): for level in levels: if level.driver in ('f5networks', 'huawei_ac_ml2'): LOG.debug('level with driver f5networks') + if db == segments_db: + # Mitaka compatibility + ctx = context.session + else: + ctx = context segment = segments_db.get_segment_by_id( - context, level.segment_id + ctx, level.segment_id ) LOG.debug( 'vxlan 2 vlan seg id %s: segment %s' diff --git a/f5lbaasdriver/v2/bigip/driver_v2.py b/f5lbaasdriver/v2/bigip/driver_v2.py index 9d0ee79d3..b71bbca12 100644 --- a/f5lbaasdriver/v2/bigip/driver_v2.py +++ b/f5lbaasdriver/v2/bigip/driver_v2.py @@ -26,7 +26,13 @@ from neutron.callbacks import registry from neutron.callbacks import resources from neutron.plugins.common import constants as plugin_constants -from neutron_lib.api.definitions import portbindings + +try: + from neutron_lib.api.definitions import portbindings +except ImportError: + # Mitaka compatibility + from neutron.extensions import portbindings + from neutron_lib import constants as q_const from neutron_lbaas.db.loadbalancer import models @@ -122,9 +128,15 @@ def __init__(self, plugin=None, env=None): self.plugin.agent_notifiers.update( {q_const.AGENT_TYPE_LOADBALANCER: self.agent_rpc}) + try: + after_init = events.AFTER_INIT + except AttributeError: + # Mitaka compatibility + after_init = events.AFTER_CREATE + registry.subscribe(self._bindRegistryCallback(), resources.PROCESS, - events.AFTER_INIT) + after_init) def _bindRegistryCallback(self): # Defines a callback function with name tied to driver env. Need to diff --git a/f5lbaasdriver/v2/bigip/neutron_client.py b/f5lbaasdriver/v2/bigip/neutron_client.py index becf0bbd7..e87bb88cd 100644 --- a/f5lbaasdriver/v2/bigip/neutron_client.py +++ b/f5lbaasdriver/v2/bigip/neutron_client.py @@ -20,7 +20,11 @@ from oslo_log import helpers as log_helpers from oslo_log import log as logging -from neutron_lib.api.definitions import portbindings +try: + from neutron_lib.api.definitions import portbindings +except ImportError: + # Mitaka compatibility + from neutron.extensions import portbindings LOG = logging.getLogger(__name__) diff --git a/f5lbaasdriver/v2/bigip/plugin_rpc.py b/f5lbaasdriver/v2/bigip/plugin_rpc.py index 6572d297b..dc6cdb79c 100644 --- a/f5lbaasdriver/v2/bigip/plugin_rpc.py +++ b/f5lbaasdriver/v2/bigip/plugin_rpc.py @@ -19,14 +19,25 @@ from neutron.common import rpc as neutron_rpc from neutron.db import agents_db -from neutron.db.models import agent as agents_model + +try: + from neutron.db.models import agent as agents_model +except ImportError: + # Mitaka compatibility + agents_model = agents_db + from neutron.plugins.common import constants as plugin_constants from neutron_lbaas.db.loadbalancer import models from neutron_lbaas.services.loadbalancer import constants as nlb_constant from neutron_lbaas.services.loadbalancer.data_models import LoadBalancer -from neutron_lib.api.definitions import portbindings +try: + from neutron_lib.api.definitions import portbindings +except ImportError: + # Mitaka compatibility + from neutron.extensions import portbindings + from neutron_lib import constants as neutron_const from neutron_lib import exceptions as q_exc from oslo_log import helpers as log_helpers