187 lines
6.0 KiB
Python
187 lines
6.0 KiB
Python
# Copyright (c) 2016 Nokia, Inc.
|
|
# All Rights Reserved
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from oslo_log import log as logging
|
|
|
|
from gluon.shim.base import HandlerBase
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
|
|
class DummyNetL3VPN(HandlerBase):
|
|
def __init__(self):
|
|
pass
|
|
|
|
def bind_port(self, uuid, model, changes):
|
|
"""Called to bind port to VM.
|
|
|
|
:param uuid: UUID of Port
|
|
:param model: Model object
|
|
:returns: dict of vif parameters (vif_type, vif_details)
|
|
"""
|
|
LOG.info("bind_port: %s" % uuid)
|
|
port = model.ports.get(uuid, None)
|
|
if not port:
|
|
LOG.error("Cannot find port")
|
|
return dict()
|
|
service_binding = model.vpnbindings.get(uuid, None)
|
|
if not service_binding:
|
|
LOG.error("Cannot bind port, not bound to a servcie")
|
|
return dict()
|
|
vpn_instance = model.vpn_instances.get(service_binding["service_id"],
|
|
None)
|
|
if not vpn_instance:
|
|
LOG.error("VPN instance not available!")
|
|
return dict()
|
|
LOG.info("port: %s" % port)
|
|
LOG.info("service: %s" % vpn_instance)
|
|
rd_list = list()
|
|
rd_string = vpn_instance.get("route_distinguishers")
|
|
if rd_string:
|
|
tmp_list = rd_string.split(',')
|
|
for rd_name in tmp_list:
|
|
rd_list.append(rd_name.strip())
|
|
afconfig_list = list()
|
|
afconfig_name_list = list()
|
|
afconfig_string = vpn_instance.get("ipv4_family")
|
|
if afconfig_string:
|
|
tmp_list = afconfig_string.split(',')
|
|
for afconfig_name in tmp_list:
|
|
afconfig_name_list.append(afconfig_name.strip())
|
|
|
|
for afconfig_name in afconfig_name_list:
|
|
afconfig = model.vpn_afconfigs.get(afconfig_name, None)
|
|
if afconfig:
|
|
afconfig_list.append(afconfig)
|
|
LOG.info(" afconfig(%s): %s" % (afconfig_name, afconfig))
|
|
LOG.info(changes)
|
|
retval = {'vif_type': 'ovs',
|
|
'vif_details': {'port_filter': False,
|
|
'bridge_name': 'br-gluon'}}
|
|
return retval
|
|
|
|
def unbind_port(self, uuid, model, changes):
|
|
"""Called to unbind port from VM.
|
|
|
|
:param uuid: UUID of Port
|
|
:param model: Model object
|
|
:returns: None
|
|
"""
|
|
port = model.ports.get(uuid, None)
|
|
if not port:
|
|
LOG.error("Cannot find port")
|
|
return
|
|
LOG.info("unbind_port: %s" % uuid)
|
|
LOG.info(changes)
|
|
return
|
|
|
|
def modify_port(self, uuid, model, changes):
|
|
"""Called when attributes change on a bound port.
|
|
|
|
:param uuid: UUID of Port
|
|
:param model: Model object
|
|
:param changes: dictionary of changed attributes
|
|
:returns: None
|
|
"""
|
|
LOG.info("modify_port: %s" % uuid)
|
|
LOG.info(changes)
|
|
pass
|
|
|
|
def delete_port(self, uuid, model):
|
|
"""Called when a bound port is deleted
|
|
|
|
:param uuid: UUID of Port
|
|
:param model: Model object
|
|
:returns: None
|
|
"""
|
|
pass
|
|
|
|
def modify_interface(self, uuid, model, changes):
|
|
"""Called when attributes on an interface
|
|
|
|
:param uuid: UUID of Interface
|
|
:param model: Model Object
|
|
:param changes: dictionary of changed attributes
|
|
:returns: None
|
|
"""
|
|
LOG.info("modify_interface: %s" % uuid)
|
|
LOG.info(changes)
|
|
pass
|
|
|
|
def delete_interface(self, uuid, model, changes):
|
|
"""Called when an interface is deleted
|
|
|
|
:param uuid: UUID of Interface
|
|
:param model: Model Object
|
|
:param changes: dictionary of changed attributes
|
|
:returns: None
|
|
"""
|
|
pass
|
|
|
|
def modify_service(self, uuid, model, changes):
|
|
"""Called when attributes change on a bound port's service
|
|
|
|
:param uuid: UUID of Service
|
|
:param model: Model Object
|
|
:param changes: dictionary of changed attributes
|
|
:returns: None
|
|
"""
|
|
LOG.info("modify_service: %s" % uuid)
|
|
LOG.info(changes)
|
|
pass
|
|
|
|
def delete_service(self, uuid, model, changes):
|
|
"""Called when a service associated with a bound port is deleted
|
|
|
|
:param uuid: UUID of Service
|
|
:param model: Model Object
|
|
:param changes: dictionary of changed attributes
|
|
:returns: None
|
|
"""
|
|
pass
|
|
|
|
def modify_service_binding(self, uuid, model, prev_binding):
|
|
"""Called when a service is associated with a bound port.
|
|
|
|
:param uuid: UUID of Port
|
|
:param model: Model Object
|
|
:param prev_binding: dictionary of previous binding
|
|
:returns: None
|
|
"""
|
|
LOG.info("modify_service_binding: %s" % uuid)
|
|
LOG.info(prev_binding)
|
|
pass
|
|
|
|
def delete_service_binding(self, model, prev_binding):
|
|
"""Called when a service is disassociated with a bound port.
|
|
|
|
:param model: Model Object
|
|
:param prev_binding: dictionary of previous binding
|
|
:returns: None
|
|
"""
|
|
pass
|
|
|
|
def modify_subport_parent(self, uuid, model, prev_parent,
|
|
prev_parent_type):
|
|
"""Called when a subport's parent relationship changes.
|
|
|
|
:param uuid: UUID of Subport
|
|
:param model: Model object
|
|
:param prev_parent: UUID of previous parent
|
|
:param prev_parent_type: name of previous parent (Port or Subport)
|
|
:returns: None
|
|
"""
|
|
pass
|