@@ -56,10 +56,10 @@ import time
return self.process(terminate=self.terminate)
-def ip(args, json=None, ns=None, host=None):
- cmd_str = "ip "
+def tool(name, args, json=None, ns=None, host=None):
+ cmd_str = name + " "
if json:
- cmd_str += '-j '
+ cmd_str += '--json '
cmd_str += args
cmd_obj = cmd(cmd_str, ns=ns, host=host)
if json:
@@ -67,6 +67,12 @@ import time
return cmd_obj
+def ip(args, json=None, ns=None, host=None):
+ if ns:
+ args = '-netns ' + ns + " " + args
+ return tool("ip", args, json=json, host=host)
+
+
def rand_port():
"""
Get unprivileged port, for now just random, one day we may decide to check if used.
The main use of the ip() wrapper over cmd() is that it can parse JSON. cmd("ip -j link show") will return stdout as a string, and test has to call json.loads(). With ip("link show", json=True) the return value will be already parsed. More tools (ethtool, bpftool etc.) support the --json switch. To avoid having to wrap all of them individually create a tool() helper. Switch from -j to --json (for ethtool). While at it consume the netns attribute at the ip() level. Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- tools/testing/selftests/net/lib/py/utils.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)