X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FVPPUtil.py;h=8744dc0154a521d1363e6c5cd2ac27ea97a0d30b;hb=e08706e85b412b1307df3789fdbe747b43c2bd95;hp=7dabb4fc613fe7614cc09ae399ed424a13dec77d;hpb=3d5a75be5a88931690898e0fe52e4f48bc67c5ed;p=csit.git diff --git a/resources/libraries/python/VPPUtil.py b/resources/libraries/python/VPPUtil.py index 7dabb4fc61..8744dc0154 100644 --- a/resources/libraries/python/VPPUtil.py +++ b/resources/libraries/python/VPPUtil.py @@ -1,4 +1,4 @@ -# Copyright (c) 2019 Cisco and/or its affiliates. +# Copyright (c) 2020 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -113,8 +113,19 @@ class VPPUtil: :param node: Topology node. :type node: dict """ - cmd = u"command -v vpp" - exec_cmd_no_error(node, cmd, message=u"VPP is not installed!") + DUTSetup.verify_program_installed(node, u"vpp") + + @staticmethod + def adjust_privileges(node): + """Adjust privileges to control VPP without sudo. + + :param node: Topology node. + :type node: dict + """ + cmd = u"chmod -R o+rwx /run/vpp" + exec_cmd_no_error( + node, cmd, sudo=True, message=u"Failed to adjust privileges!", + retries=120) @staticmethod def verify_vpp_started(node): @@ -123,12 +134,12 @@ class VPPUtil: :param node: Topology node. :type node: dict """ - cmd = u"echo \"show ver\" | sudo socat - UNIX-CONNECT:/run/vpp/cli.sock" + cmd = u"echo \"show pci\" | sudo socat - UNIX-CONNECT:/run/vpp/cli.sock" exec_cmd_no_error( node, cmd, sudo=False, message=u"VPP failed to start!", retries=120 ) - cmd = u"vppctl show ver 2>&1 | fgrep -v \"Connection refused\" | " \ + cmd = u"vppctl show pci 2>&1 | fgrep -v \"Connection refused\" | " \ u"fgrep -v \"No such file or directory\"" exec_cmd_no_error( node, cmd, sudo=True, message=u"VPP failed to start!", retries=120 @@ -137,16 +148,18 @@ class VPPUtil: @staticmethod def verify_vpp(node): """Verify that VPP is installed and started on the specified topology - node. + node. Adjust privileges so user can connect without sudo. :param node: Topology node. :type node: dict :raises RuntimeError: If VPP service fails to start. """ - VPPUtil.verify_vpp_installed(node) + DUTSetup.verify_program_installed(node, 'vpp') try: # Verify responsiveness of vppctl. VPPUtil.verify_vpp_started(node) + # Adjust privileges. + VPPUtil.adjust_privileges(node) # Verify responsiveness of PAPI. VPPUtil.show_log(node) VPPUtil.vpp_show_version(node) @@ -333,15 +346,7 @@ class VPPUtil: with PapiSocketExecutor(node) as papi_exec: reply = papi_exec.add(cmd).get_reply() - threads_data = list() - for thread in reply[u"thread_data"]: - thread_data = list() - for item in thread: - if isinstance(item, str): - item = item.rstrip('\x00') - thread_data.append(item) - threads_data.append(thread_data) - + threads_data = reply[u"thread_data"] logger.trace(f"show threads:\n{threads_data}") return threads_data