Signed-off-by: Jason Kölker <[email protected]>
---
 ryu/services/protocols/ovsdb/client.py  | 12 +++++++++++-
 ryu/services/protocols/ovsdb/manager.py | 12 +++++++++++-
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/ryu/services/protocols/ovsdb/client.py 
b/ryu/services/protocols/ovsdb/client.py
index ef532b3..5d4b21f 100644
--- a/ryu/services/protocols/ovsdb/client.py
+++ b/ryu/services/protocols/ovsdb/client.py
@@ -192,7 +192,8 @@ class RemoteOvsdb(app_manager.RyuApp):
                event.EventPortUpdated]
 
     @classmethod
-    def factory(cls, sock, address, probe_interval=None, *args, **kwargs):
+    def factory(cls, sock, address, probe_interval=None, min_backoff=None,
+                max_backoff=None, *args, **kwargs):
         ovs_stream = stream.Stream(sock, None, None)
         connection = jsonrpc.Connection(ovs_stream)
         schemas = discover_schemas(connection)
@@ -209,6 +210,15 @@ class RemoteOvsdb(app_manager.RyuApp):
         if probe_interval is not None:
             fsm.set_probe_interval(probe_interval)
 
+        if min_backoff is None:
+            min_backoff = fsm.get_min_backoff()
+
+        if max_backoff is None:
+            max_backoff = fsm.get_max_backoff()
+
+        if min_backoff and max_backoff:
+            fsm.set_backoff(min_backoff, max_backoff)
+
         fsm.connected(now())
 
         session = jsonrpc.Session(fsm, connection)
diff --git a/ryu/services/protocols/ovsdb/manager.py 
b/ryu/services/protocols/ovsdb/manager.py
index 631f28b..b828eb7 100644
--- a/ryu/services/protocols/ovsdb/manager.py
+++ b/ryu/services/protocols/ovsdb/manager.py
@@ -27,6 +27,12 @@ from ryu.controller import handler
 opts = (cfg.StrOpt('address', default='0.0.0.0', help='OVSDB address'),
         cfg.IntOpt('port', default=6640, help='OVSDB port'),
         cfg.IntOpt('probe-interval', help='OVSDB reconnect probe interval'),
+        cfg.IntOpt('min-backoff',
+                   help=('OVSDB reconnect minimum milliseconds between '
+                         'connection attemps')),
+        cfg.IntOpt('max-backoff',
+                   help=('OVSDB reconnect maximum milliseconds between '
+                         'connection attemps')),
         cfg.StrOpt('mngr-privkey', default=None, help='manager private key'),
         cfg.StrOpt('mngr-cert', default=None, help='manager certificate'),
         cfg.ListOpt('whitelist', default=[],
@@ -45,6 +51,8 @@ class OVSDB(app_manager.RyuApp):
         self._address = self.CONF.ovsdb.address
         self._port = self.CONF.ovsdb.port
         self._probe_interval = self.CONF.ovsdb.probe_interval
+        self._min_backoff = self.CONF.ovsdb._min_backoff
+        self._max_backoff = self.CONF.ovsdb._max_backoff
         self._clients = {}
 
     def _accept(self, server):
@@ -92,7 +100,9 @@ class OVSDB(app_manager.RyuApp):
 
     def _start_remote(self, sock, client_address):
         app = client.RemoteOvsdb.factory(sock, client_address,
-                                         probe_interval=self._probe_interval)
+                                         probe_interval=self._probe_interval,
+                                         min_backoff=self._min_backoff,
+                                         max_backoff=self._max_min_backoff)
 
         if app:
             self._clients[app.name] = app
-- 
2.7.2


------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to