08a60f7483
With python 3.x, classes can use the metaclass= logic to not require usage of the six library. One step in removing all of six usage from neutron. Change-Id: I2f815e412d9a96eb5faf2b3bb3a1e393a9db9309
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
# Copyright 2015 Cisco Systems
|
|
# 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.
|
|
|
|
import abc
|
|
|
|
from neutron.conf.agent import common as agent_conf
|
|
|
|
agent_conf.register_pddriver_opts()
|
|
|
|
|
|
class PDDriverBase(object, metaclass=abc.ABCMeta):
|
|
|
|
def __init__(self, router_id, subnet_id, ri_ifname):
|
|
self.router_id = router_id
|
|
self.subnet_id = subnet_id
|
|
self.ri_ifname = ri_ifname
|
|
|
|
@abc.abstractmethod
|
|
def enable(self, pmon, router_ns, ex_gw_ifname, lla):
|
|
"""Enable IPv6 Prefix Delegation for this PDDriver on the given
|
|
external interface, with the given link local address
|
|
"""
|
|
|
|
@abc.abstractmethod
|
|
def disable(self, pmon, router_ns):
|
|
"""Disable IPv6 Prefix Delegation for this PDDriver
|
|
"""
|
|
|
|
@abc.abstractmethod
|
|
def get_prefix(self):
|
|
"""Get the current assigned prefix for this PDDriver from the PD agent.
|
|
If no prefix is currently assigned, return
|
|
neutron_lib.constants.PROVISIONAL_IPV6_PD_PREFIX
|
|
"""
|
|
|
|
@staticmethod
|
|
@abc.abstractmethod
|
|
def get_sync_data():
|
|
"""Get the latest router_id, subnet_id, and ri_ifname from the PD agent
|
|
so that the PDDriver can be kept up to date
|
|
"""
|