I am testing jsonrpc changes using master branch with fencing flow and noticed something strange. I am sending following message to vdsm: {"jsonrpc":"2.0","method":"Host.fenceNode","params":{"addr":"rack05-pdu01-lab4.tlv.redhat.com","port":"","agent":"apc_snmp","username":"emesika","password":"<removed>","action":"off","options":"port=15"},"id":"c212299f-42b5-485d-b9ba-bc9880628743"} and I see this error in vdsm logs: sonRpcServer::DEBUG::2014-05-21 13:23:29,405::__init__::493::jsonrpc.JsonRpcServer::(serve_requests) Waiting for request Thread-100::DEBUG::2014-05-21 13:23:29,405::API::1124::vds::(fenceNode) fenceNode(addr=rack05-pdu01-lab4.tlv.redhat.com,port=,agent=apc_snmp,user=emesika,passwd=XXXX,action=status,secure=port=15,options=) Thread-100::DEBUG::2014-05-21 13:23:29,405::utils::729::root::(execCmd) u'/usr/sbin/fence_apc_snmp' (cwd None) Thread-100::DEBUG::2014-05-21 13:23:30,412::utils::749::root::(execCmd) FAILED: <err> = "ERROR:root:Failed: You have to enter plug number or machine identification\n\nERROR:root:Please use '-h' for usage\n\n"; <rc> = 1 Thread-100::DEBUG::2014-05-21 13:23:30,412::API::1111::vds::(fence) rc 1 inp agent=fence_apc_snmp ipaddr=rack05-pdu01-lab4.tlv.redhat.com login=emesika action=status passwd=XXXX out [] err ['ERROR:root:Failed: You have to enter plug number or machine identification', '', "ERROR:root:Please use '-h' for usage", ''] Thread-100::DEBUG::2014-05-21 13:23:30,412::API::1147::vds::(fenceNode) rc 1 in agent=fence_apc_snmp ipaddr=rack05-pdu01-lab4.tlv.redhat.com login=emesika action=status passwd=XXXX out [] err ['ERROR:root:Failed: You have to enter plug number or machine identification', '', "ERROR:root:Please use '-h' for usage", ''] Thread-100::DEBUG::2014-05-21 13:23:30,413::stompReactor::112::yajsonrpc.StompServer::(send) Sending response
For some reason, the jsonrpc option "port=15" is mapped to the arg "secure" in the API. probably a bug in vdsm Bridge.py.
There is a bug in Bridge.py which is part of jsonrpc work. The bug do not check whether there are many optional parameters when executing vdsm API which leads to wrong value assignment. This but is fixed as part of jsonrpc work. *** This bug has been marked as a duplicate of bug 1081049 ***