# Path: vif_plug_ovs/ovsdb/api.py
# def get_instance(context, iface_name=None):
#     def has_table_column(self, table, column):
# class ImplAPI(metaclass=abc.ABCMeta):


import functools
import socket
from ovs.db import idl
from ovs import socket_util
from ovs import stream
from ovsdbapp.backend.ovs_idl import connection
from ovsdbapp.backend.ovs_idl import idlutils
from ovsdbapp.backend.ovs_idl import vlog
from ovsdbapp.schema.open_vswitch import impl_idl
from vif_plug_ovs.ovsdb import api
#         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.




REQUIRED_TABLES = ('Interface', 'Port', 'Bridge', 'Open_vSwitch')


def idl_factory(config):
    conn = config.connection
    schema_name = 'Open_vSwitch'
    helper = idlutils.get_schema_helper(conn, schema_name)
    for table in REQUIRED_TABLES:
        helper.register_table(table)
    return idl.Idl(conn, helper)


def api_factory(config):
    conn = connection.Connection(
        idl=idl_factory(config),
        timeout=config.timeout)
    return NeutronOvsdbIdl(conn)



# Path: vif_plug_ovs/ovsdb/api.py
# def get_instance(context, iface_name=None):
#     def has_table_column(self, table, column):
# class ImplAPI(metaclass=abc.ABCMeta):


# Path: vif_plug_ovs/ovsdb/impl_idl.py
import functools
import socket
from ovs.db import idl
from ovs import socket_util
from ovs import stream
from ovsdbapp.backend.ovs_idl import connection
from ovsdbapp.backend.ovs_idl import idlutils
from ovsdbapp.backend.ovs_idl import vlog
from ovsdbapp.schema.open_vswitch import impl_idl
from vif_plug_ovs.ovsdb import api

#         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.




REQUIRED_TABLES = ('Interface', 'Port', 'Bridge', 'Open_vSwitch')


def idl_factory(config):
    conn = config.connection
    schema_name = 'Open_vSwitch'
    helper = idlutils.get_schema_helper(conn, schema_name)
    for table in REQUIRED_TABLES:
        helper.register_table(table)
    return idl.Idl(conn, helper)


def api_factory(config):
    conn = connection.Connection(
        idl=idl_factory(config),
        timeout=config.timeout)
    return NeutronOvsdbIdl(conn)



class NeutronOvsdbIdl(impl_idl.OvsdbIdl, api.ImplAPI):