Hoststack perf infrastructure refactoring
[csit.git] / resources / libraries / python / VPPUtil.py
index 7dabb4f..ca63fa6 100644 (file)
@@ -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):
@@ -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)