summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>2014-07-29 17:47:00 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2014-07-29 17:56:02 +0900
commite51f1dcf5a7ddca6fb549dc7e9a189ea969d5d10 (patch)
tree7857e5acba780be07cc4489446176eb7113fbfd8
parenteb90b2ecc848f2223e98f68d6171f77afc1f4b31 (diff)
bgp: make 'core.reset_neighbor' API asynchronously
'core.reset_neighbor' was synchronous API and the caller had to wait until neighbor comes up. This behavior doesn't work well with rpc_cli. Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/services/protocols/bgp/api/core.py11
-rw-r--r--ryu/services/protocols/bgp/net_ctrl.py2
2 files changed, 8 insertions, 5 deletions
diff --git a/ryu/services/protocols/bgp/api/core.py b/ryu/services/protocols/bgp/api/core.py
index e45adf27..4d9a516c 100644
--- a/ryu/services/protocols/bgp/api/core.py
+++ b/ryu/services/protocols/bgp/api/core.py
@@ -69,10 +69,13 @@ def reset_neighor(ip_address):
if neigh_conf.enabled:
# Disable neighbor to close existing session.
neigh_conf.enabled = False
- # Yield here so that we give chance for neighbor to be disabled.
- hub.sleep(NEIGHBOR_RESET_WAIT_TIME)
- # Enable neighbor, so that we have a new session with it.
- neigh_conf.enabled = True
+ # Enable neighbor after NEIGHBOR_RESET_WAIT_TIME
+ # this API works asynchronously
+ # it's recommended to check it really reset neighbor later
+
+ def up():
+ neigh_conf.enabled = True
+ hub.spawn_after(NEIGHBOR_RESET_WAIT_TIME, up)
else:
raise RuntimeConfigError('Neighbor %s is not enabled, hence cannot'
' reset.' % ip_address)
diff --git a/ryu/services/protocols/bgp/net_ctrl.py b/ryu/services/protocols/bgp/net_ctrl.py
index fec29ee7..f0dd888d 100644
--- a/ryu/services/protocols/bgp/net_ctrl.py
+++ b/ryu/services/protocols/bgp/net_ctrl.py
@@ -94,7 +94,7 @@ class RpcSession(Activity):
"""
def __init__(self, socket, outgoing_msg_sink_iter):
- super(RpcSession, self).__init__()
+ super(RpcSession, self).__init__("RpcSession(%s)" % socket)
import msgpack
self._packer = msgpack.Packer()