summaryrefslogtreecommitdiffhomepage
path: root/doc/source
diff options
context:
space:
mode:
Diffstat (limited to 'doc/source')
-rw-r--r--doc/source/library.rst1
-rw-r--r--doc/source/library_ovsdb_manager.rst61
2 files changed, 62 insertions, 0 deletions
diff --git a/doc/source/library.rst b/doc/source/library.rst
index 38cc3872..bc8ff67f 100644
--- a/doc/source/library.rst
+++ b/doc/source/library.rst
@@ -12,3 +12,4 @@ Ryu provides some useful library for your network applications.
library_of_config.rst
library_bgp_speaker.rst
library_bgp_speaker_ref.rst
+ library_ovsdb_manager.rst
diff --git a/doc/source/library_ovsdb_manager.rst b/doc/source/library_ovsdb_manager.rst
new file mode 100644
index 00000000..b23ae81d
--- /dev/null
+++ b/doc/source/library_ovsdb_manager.rst
@@ -0,0 +1,61 @@
+*********************
+OVSDB Manager library
+*********************
+
+Introduction
+============
+
+Ryu OVSDB Manager library allows your code to interact with devices
+speaking the OVSDB protocol. This enables your code to perform remote
+management of the devices and react to topology changes on them.
+
+Example
+=======
+
+The following logs all new OVSDB connections and allows creating a port
+on a bridge.
+
+.. code-block:: python
+
+ import uuid
+
+ from ryu.base import app_manager
+ from ryu.services.protocols.ovsdb import api as ovsdb
+ from ryu.services.protocols.ovsdb import event as ovsdb_event
+
+
+ class MyApp(app_manager.RyuApp):
+ @set_ev_cls(ovsdb_event.EventNewOVSDBConnection)
+ def handle_new_ovsdb_connection(self, ev):
+ system_id = ev.system_id
+ self.logger.info('New OVSDB connection from system id %s',
+ systemd_id)
+
+ def create_port(self, systemd_id, bridge_name, name):
+ new_iface_uuid = uuid.uuid4()
+ new_port_uuid = uuid.uuid4()
+
+ def _create_port(tables, insert):
+ bridge = ovsdb.row_by_name(self, system_id, bridge_name)
+
+ iface = insert(tables['Interface'], new_iface_uuid)
+ iface.name = name
+ iface.type = 'internal'
+
+ port = insert(tables['Port'], new_port_uuid)
+ port.name = name
+ port.interfaces = [iface]
+
+ brdige.ports = bridfe.ports + [port]
+
+ return (new_port_uuid, new_iface_uuid)
+
+ req = ovsdb_event.EventModifyRequest(system_id, _create_port)
+ rep = self.send_request(req)
+
+ if rep.status != 'success':
+ self.logger.error('Error creating port %s on bridge %s: %s',
+ name, bridge, rep.status)
+ return None
+
+ return reply.insert_uuid[new_port_uuid]