backing up
[vsorcdistro/.git] / ryu / build / lib.linux-armv7l-2.7 / ryu / services / protocols / ovsdb / event.py
diff --git a/ryu/build/lib.linux-armv7l-2.7/ryu/services/protocols/ovsdb/event.py b/ryu/build/lib.linux-armv7l-2.7/ryu/services/protocols/ovsdb/event.py
new file mode 100644 (file)
index 0000000..0695db2
--- /dev/null
@@ -0,0 +1,196 @@
+# Copyright (c) 2014 Rackspace Hosting
+#
+# 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.
+
+from ryu.controller import event as ryu_event
+from ryu.controller import handler
+
+
+class EventRowBase(ryu_event.EventBase):
+    def __init__(self, system_id, table, row, event_type):
+        super(EventRowBase, self).__init__()
+        self.system_id = system_id
+        self.table = table
+        self.row = row
+        self.event_type = event_type
+
+    def __str__(self):
+        return '%s<system_id=%s table=%s, uuid=%s>' % (self.__class__.__name__,
+                                                       self.system_id,
+                                                       self.table,
+                                                       self.row['_uuid'])
+
+
+class EventRowDelete(EventRowBase):
+    def __init__(self, system_id, table, row):
+        super(EventRowDelete, self).__init__(system_id, table, row, 'Deleted')
+
+
+class EventRowInsert(EventRowBase):
+    def __init__(self, system_id, table, row):
+        super(EventRowInsert, self).__init__(system_id, table, row, 'Inserted')
+
+
+class EventRowUpdate(ryu_event.EventBase):
+    def __init__(self, system_id, table, old, new):
+        super(EventRowUpdate, self).__init__()
+        self.system_id = system_id
+        self.table = table
+        self.old = old
+        self.new = new
+        self.event_type = 'Updated'
+
+    def __str__(self):
+        return '%s<system_id=%s table=%s, uuid=%s>' % (self.__class__.__name__,
+                                                       self.system_id,
+                                                       self.table,
+                                                       self.old['_uuid'])
+
+
+class EventModifyRequest(ryu_event.EventRequestBase):
+    """ Dispatch a modify function to OVSDB
+
+    `func` must be a callable that accepts an insert fucntion and the
+    IDL.tables object. It can then modify the tables as needed. For inserts,
+    specify a UUID for each insert, and return a tuple of the temporary
+    UUID's. The execution of `func` will be wrapped in a single transaction
+    and the reply will include a dict of temporary UUID to real UUID mappings.
+
+    e.g.
+
+        new_port_uuid = uuid.uuid4()
+
+        def modify(tables, insert):
+            bridges = tables['Bridge'].rows
+            bridge = None
+            for b in bridges:
+                if b.name == 'my-bridge':
+                    bridge = b
+
+            if not bridge:
+                return
+
+            port = insert('Port', new_port_uuid)
+
+            bridge.ports = bridge.ports + [port]
+
+            return (new_port_uuid, )
+
+        request = EventModifyRequest(system_id, modify)
+        reply = send_request(request)
+
+        port_uuid = reply.insert_uuids[new_port_uuid]
+    """
+
+    def __init__(self, system_id, func):
+        super(EventModifyRequest, self).__init__()
+        self.dst = 'OVSDB'
+        self.system_id = system_id
+        self.func = func
+
+    def __str__(self):
+        return '%s<system_id=%s>' % (self.__class__.__name__, self.system_id)
+
+
+class EventModifyReply(ryu_event.EventReplyBase):
+    def __init__(self, system_id, status, insert_uuids, err_msg):
+        self.system_id = system_id
+        self.status = status
+        self.insert_uuids = insert_uuids
+        self.err_msg = err_msg
+
+    def __str__(self):
+        return ('%s<system_id=%s, status=%s, insert_uuids=%s, error_msg=%s>'
+                % (self.__class__.__name__,
+                   self.system_id,
+                   self.status,
+                   self.insert_uuids,
+                   self.err_msg))
+
+
+class EventNewOVSDBConnection(ryu_event.EventBase):
+    def __init__(self, client):
+        super(EventNewOVSDBConnection, self).__init__()
+        self.client = client
+
+    def __str__(self):
+        return '%s<system_id=%s>' % (self.__class__.__name__,
+                                     self.client.system_id)
+
+    @property
+    def system_id(self):
+        return self.client.system_id
+
+
+class EventReadRequest(ryu_event.EventRequestBase):
+    def __init__(self, system_id, func):
+        self.system_id = system_id
+        self.func = func
+        self.dst = 'OVSDB'
+
+
+class EventReadReply(ryu_event.EventReplyBase):
+    def __init__(self, system_id, result, err_msg=''):
+        self.system_id = system_id
+        self.result = result
+        self.err_msg = err_msg
+
+
+class EventRowInsertedBase(EventRowInsert):
+    def __init__(self, ev):
+        super(EventRowInsertedBase, self).__init__(ev.system_id,
+                                                   ev.table,
+                                                   ev.row)
+
+
+class EventRowDeletedBase(EventRowDelete):
+    def __init__(self, ev):
+        super(EventRowDeletedBase, self).__init__(ev.system_id,
+                                                  ev.table,
+                                                  ev.row)
+
+
+class EventRowUpdatedBase(EventRowUpdate):
+    def __init__(self, ev):
+        super(EventRowUpdatedBase, self).__init__(ev.system_id,
+                                                  ev.table,
+                                                  ev.old,
+                                                  ev.new)
+
+
+class EventPortInserted(EventRowInsertedBase):
+    pass
+
+
+class EventPortDeleted(EventRowDeletedBase):
+    pass
+
+
+class EventPortUpdated(EventRowUpdatedBase):
+    pass
+
+
+class EventInterfaceInserted(EventRowInsertedBase):
+    pass
+
+
+class EventInterfaceDeleted(EventRowDeletedBase):
+    pass
+
+
+class EventInterfaceUpdated(EventRowUpdatedBase):
+    pass
+
+
+handler.register_service('ryu.services.protocols.ovsdb.manager')