From f4f24469da44411812f0b5bbf4706194c409ff84 Mon Sep 17 00:00:00 2001 From: Toshiki Tsuboi Date: Sat, 24 Oct 2015 08:07:11 +0900 Subject: [PATCH] vrrp: fix param of virtual_ip_address for rpc_api It looks VRRPManager can't handle virtual_ip_address properly as bellow. $ sudo ryu-manager ryu.services.protocols.vrrp.rpc_manager.py loading app ryu.services.protocols.vrrp.rpc_manager.py loading app ryu.services.protocols.vrrp.manager instantiating app ryu.services.protocols.vrrp.manager of VRRPManager instantiating app ryu.services.protocols.vrrp.rpc_manager.py of RpcVRRPManager instantiating app None of VRRPInterfaceMonitorNetworkDevice instantiating app None of VRRPRouterV3 handle EventVRRPStateChanged VRID:1 VRRP-Router-VRRPInterfaceNetworkDevice<00:00:00:00:00:00, 192.168.0.2, None, eth1>-1-ipv4: None -> Initialize handle EventVRRPStateChanged VRID:1 VRRP-Router-VRRPInterfaceNetworkDevice<00:00:00:00:00:00, 192.168.0.2, None, eth1>-1-ipv4: Initialize -> Backup hub: uncaught exception: Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/ryu/lib/hub.py", line 52, in _launch func(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/ryu/base/app_manager.py", line 276, in _event_loop handler(ev) File "/usr/local/lib/python2.7/dist-packages/ryu/services/protocols/vrrp/router.py", line 234, in master_down_handler self.state_impl.master_down(ev) File "/usr/local/lib/python2.7/dist-packages/ryu/services/protocols/vrrp/router.py", line 613, in master_down self._master_down() File "/usr/local/lib/python2.7/dist-packages/ryu/services/protocols/vrrp/router.py", line 579, in _master_down vrrp_router.send_advertisement() File "/usr/local/lib/python2.7/dist-packages/ryu/services/protocols/vrrp/router.py", line 219, in send_advertisement packet_.serialize() File "/usr/local/lib/python2.7/dist-packages/ryu/lib/packet/packet.py", line 74, in serialize data = p.serialize(self.data, prev) File "/usr/local/lib/python2.7/dist-packages/ryu/lib/packet/vrrp.py", line 394, in serialize return self.serialize_static(self, prev) File "/usr/local/lib/python2.7/dist-packages/ryu/lib/packet/vrrp.py", line 625, in serialize_static *[conv(x) for x in vrrp_.ip_addresses]) File "/usr/local/lib/python2.7/dist-packages/ryu/lib/addrconv.py", line 27, in text_to_bin return self._addr(text, **self._addr_kwargs).packed File "/usr/local/lib/python2.7/dist-packages/netaddr/ip/__init__.py", line 314, in __init__ % (addr, self._module.version)) AddrFormatError: base address '.' is not IPv4 Signed-off-by: Toshiki Tsuboi Signed-off-by: FUJITA Tomonori --- ryu/services/protocols/vrrp/rpc_manager.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ryu/services/protocols/vrrp/rpc_manager.py b/ryu/services/protocols/vrrp/rpc_manager.py index c532e7b7..6ac07b10 100644 --- a/ryu/services/protocols/vrrp/rpc_manager.py +++ b/ryu/services/protocols/vrrp/rpc_manager.py @@ -129,6 +129,8 @@ class RpcVRRPManager(app_manager.RyuApp): 'preempt_delay', 'statistics_interval')) try: + ip_addr = config_params.pop('ip_addresses') + config_params['ip_addresses'] = [ip_addr] config = vrrp_event.VRRPConfig(**config_params) except: raise RPCError('parameters are invalid, %s' % (str(param_dict)))