+ if node_key:
+ Topology.del_node_socket_id(node, SocketType.PAPI, node_key)
+ Topology.del_node_socket_id(node, SocketType.STATS, node_key)
+
+ @staticmethod
+ def stop_vpp_service_on_all_duts(nodes):
+ """Stop VPP service on all DUT nodes.
+
+ :param nodes: Topology nodes.
+ :type nodes: dict
+ """
+ for node_key, node in nodes.items():
+ if node[u"type"] == NodeType.DUT:
+ VPPUtil.stop_vpp_service(node, node_key)
+
+ @staticmethod
+ def verify_vpp_installed(node):
+ """Verify that VPP is installed on the specified topology node.
+
+ :param node: Topology node.
+ :type node: dict
+ """
+ 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):
+ """Verify that VPP is started on the specified topology node.
+
+ :param node: Topology node.
+ :type node: dict
+ """
+ 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 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
+ )