# Overview

OVSDBapp is a library to make it easier to write applications that interact with an Open vSwitch database server. It allows the user to separate support for a particular OVSDB schema and the backend method of communication with the OVSDB server.

## OVSDBapp Concepts

API

  The interface that an application will use for reading or modifying entries in the OVS database. Whatever backend communication method is used, as long as user code only accesses methods in this API, no user code should need to be changed when swapping between backends.

Backend

  The Backend handles the communication with Open vSwitch. Originally, there were two OVSDBapp backends: 1) one that used the ovs-vsctl CLI utility to interact with the OVS database and 2) one that maintains a persistent connection to an OVSDB server using the python-ovs library. Currently, only the python-ovs backend is being maintained.

Command

  OVSDBapp uses the Command Pattern to isolate individual units of work that will be run as part of an OVSDB transaction.

Event

  OVSDB provides the ability to monitor database changes as they happen. OVSDBapp backends each implement the `RowEvent` and `RowEventHandler` to handle delivering these events to user code.

API Implementations:

  The backend-specific implementation of an OVSDBapp API. Only this code should need to be implemented to support a new backend. All other user code should be backend-agnostic.

Schema

  The OVSDB database schema for which the API is implemented. In current ovsdbapp code, the schema and API are intrinsically linked in a 1:1 manner, but ultimately they are independent. User code could easily define an API specific to their application that encompasses multiple OVSDB schemas as long as the Backend supported it.

Transaction

  An OVSDB transaction consisting of one or more Commands.

Virtual Environment

  OVSDBapp supports running OVS and OVN services in a virtual environment. This is primarily used for testing.

this page last updated: 2026-08-19 22:19:12

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug