# Path: neutron_taas/services/taas/agents/common/taas_agent.py
# LOG = logging.getLogger(__name__)
# class TaasPluginApi(api.TaasPluginApiMixin):
# class TaasAgentRpcCallback(api.TaasAgentRpcCallbackMixin):
# class TaasAgentService(service.Service):
#     def __init__(self, topic, host):
#     def sync_tap_resources(self, sync_tap_res, host):
#     def set_tap_service_status(self, msg, status, host):
#     def set_tap_flow_status(self, msg, status, host):
#     def __init__(self, conf, driver_type):
#     def initialize(self):
#     def consume_api(self, agent_api):
#     def _invoke_driver_for_plugin_api(self, context, args, func_name):
#     def create_tap_service(self, context, tap_service, host):
#     def create_tap_flow(self, context, tap_flow_msg, host):
#     def delete_tap_service(self, context, tap_service, host):
#     def delete_tap_flow(self, context, tap_flow_msg, host):
#     def _taas_rpc_setup(self):
#     def periodic_tasks(self):
#     def get_driver_type(self):
#     def _is_driver_port_type_compatible(self, port):
#     def _driver_and_host_verification(self, host, port):
#     def __init__(self, driver):
#     def start(self, taas_plugin_rpc, host):


import abc
import six
from neutron_lib.agent import l2_extension
from neutron_taas.services.taas.agents.common import taas_agent
from oslo_config import cfg
from oslo_log import log as logging

    def consume_api(self, agent_api):
        """Consume the AgentAPI instance from the TaasAgentExtension class

        :param agent_api: An instance of an agent specific API
        """

    @abc.abstractmethod
    def create_tap_service(self, tap_service):
        """Create a Tap Service request in driver."""

    @abc.abstractmethod
    def create_tap_flow(self, tap_flow):
        """Create a tap flow request in driver."""

    @abc.abstractmethod
    def delete_tap_service(self, tap_service):
        """delete a Tap Service request in driver."""

    @abc.abstractmethod
    def delete_tap_flow(self, tap_flow):
        """Delete a tap flow request in driver."""


class TaasAgentExtension(l2_extension.L2AgentExtension):

    def initialize(self, connection, driver_type):
        """Initialize agent extension."""
        self.taas_agent = taas_agent.TaasAgentRpcCallback(
            cfg.CONF, driver_type)

# Path: neutron_taas/services/taas/agents/common/taas_agent.py
# LOG = logging.getLogger(__name__)
# class TaasPluginApi(api.TaasPluginApiMixin):
# class TaasAgentRpcCallback(api.TaasAgentRpcCallbackMixin):
# class TaasAgentService(service.Service):
#     def __init__(self, topic, host):
#     def sync_tap_resources(self, sync_tap_res, host):
#     def set_tap_service_status(self, msg, status, host):
#     def set_tap_flow_status(self, msg, status, host):
#     def __init__(self, conf, driver_type):
#     def initialize(self):
#     def consume_api(self, agent_api):
#     def _invoke_driver_for_plugin_api(self, context, args, func_name):
#     def create_tap_service(self, context, tap_service, host):
#     def create_tap_flow(self, context, tap_flow_msg, host):
#     def delete_tap_service(self, context, tap_service, host):
#     def delete_tap_flow(self, context, tap_flow_msg, host):
#     def _taas_rpc_setup(self):
#     def periodic_tasks(self):
#     def get_driver_type(self):
#     def _is_driver_port_type_compatible(self, port):
#     def _driver_and_host_verification(self, host, port):
#     def __init__(self, driver):
#     def start(self, taas_plugin_rpc, host):


# Path: neutron_taas/services/taas/agents/extensions/taas.py
import abc
import six
from neutron_lib.agent import l2_extension
from neutron_taas.services.taas.agents.common import taas_agent
from oslo_config import cfg
from oslo_log import log as logging


    def consume_api(self, agent_api):
        """Consume the AgentAPI instance from the TaasAgentExtension class

        :param agent_api: An instance of an agent specific API
        """

    @abc.abstractmethod
    def create_tap_service(self, tap_service):
        """Create a Tap Service request in driver."""

    @abc.abstractmethod
    def create_tap_flow(self, tap_flow):
        """Create a tap flow request in driver."""

    @abc.abstractmethod
    def delete_tap_service(self, tap_service):
        """delete a Tap Service request in driver."""

    @abc.abstractmethod
    def delete_tap_flow(self, tap_flow):
        """Delete a tap flow request in driver."""


class TaasAgentExtension(l2_extension.L2AgentExtension):

    def initialize(self, connection, driver_type):
        """Initialize agent extension."""
        self.taas_agent = taas_agent.TaasAgentRpcCallback(
            cfg.CONF, driver_type)

        self.taas_agent.consume_api(self.agent_api)