diff options
author | ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp> | 2014-07-29 17:47:00 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2014-07-29 17:56:02 +0900 |
commit | e51f1dcf5a7ddca6fb549dc7e9a189ea969d5d10 (patch) | |
tree | 7857e5acba780be07cc4489446176eb7113fbfd8 | |
parent | eb90b2ecc848f2223e98f68d6171f77afc1f4b31 (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.py | 11 | ||||
-rw-r--r-- | ryu/services/protocols/bgp/net_ctrl.py | 2 |
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() |