feat(infra): Remove system.d dependency
[csit.git] / resources / libraries / python / VppConfigGenerator.py
index e183014..a57d24c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2022 Cisco and/or its affiliates.
+# Copyright (c) 2023 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:
@@ -21,7 +21,7 @@ from resources.libraries.python.topology import NodeType
 from resources.libraries.python.topology import Topology
 from resources.libraries.python.VPPUtil import VPPUtil
 
-__all__ = [u"VppConfigGenerator"]
+__all__ = ["VppConfigGenerator", "VppInitConfig"]
 
 
 def pci_dev_check(pci_dev):
@@ -58,8 +58,6 @@ class VppConfigGenerator:
         self._vpp_config = u""
         # VPP Service name
         self._vpp_service_name = u"vpp"
-        # VPP Logfile location
-        self._vpp_logfile = u"/tmp/vpe.log"
         # VPP Startup config location
         self._vpp_startup_conf = u"/etc/vpp/startup.conf"
 
@@ -133,15 +131,13 @@ class VppConfigGenerator:
         if level >= 0:
             self._vpp_config += f"{level * indent}}}\n"
 
-    def add_unix_log(self, value=None):
+    def add_unix_log(self, value="/var/log/vpp/vpp.log"):
         """Add UNIX log configuration.
 
         :param value: Log file.
         :type value: str
         """
         path = [u"unix", u"log"]
-        if value is None:
-            value = self._vpp_logfile
         self.add_config_item(self._nodeconfig, value, path)
 
     def add_unix_cli_listen(self, value=u"/run/vpp/cli.sock"):
@@ -433,10 +429,50 @@ class VppConfigGenerator:
         path = [u"ip6", u"heap-size"]
         self.add_config_item(self._nodeconfig, value, path)
 
-    def add_spd_flow_cache_ipv4_outbound(self):
-        """Add SPD flow cache for IP4 outbound traffic"""
+    def add_ipsec_spd_flow_cache_ipv4_inbound(self, value):
+        """Add IPsec spd flow cache for IP4 inbound.
+
+        :param value: "on" to enable spd flow cache.
+        :type value: str
+        """
+        path = [u"ipsec", u"ipv4-inbound-spd-flow-cache"]
+        self.add_config_item(self._nodeconfig, value, path)
+
+    def add_ipsec_spd_flow_cache_ipv4_outbound(self, value):
+        """Add IPsec spd flow cache for IP4 outbound.
+
+        :param value: "on" to enable spd flow cache.
+        :type value: str
+        """
         path = [u"ipsec", u"ipv4-outbound-spd-flow-cache"]
-        self.add_config_item(self._nodeconfig, "on", path)
+        self.add_config_item(self._nodeconfig, value, path)
+
+    def add_ipsec_spd_fast_path_ipv4_inbound(self, value):
+        """Add IPsec spd fast path for IP4 inbound.
+
+        :param value: "on" to enable spd fast path.
+        :type value: str
+        """
+        path = [u"ipsec", u"ipv4-inbound-spd-fast-path"]
+        self.add_config_item(self._nodeconfig, value, path)
+
+    def add_ipsec_spd_fast_path_ipv4_outbound(self, value):
+        """Add IPsec spd fast path for IP4 outbound.
+
+        :param value: "on" to enable spd fast path.
+        :type value: str
+        """
+        path = [u"ipsec", u"ipv4-outbound-spd-fast-path"]
+        self.add_config_item(self._nodeconfig, value, path)
+
+    def add_ipsec_spd_fast_path_num_buckets(self, value):
+        """Add num buckets for IPsec spd fast path.
+
+        :param value: Number of buckets.
+        :type value: int
+        """
+        path = [u"ipsec", u"spd-fast-path-num-buckets"]
+        self.add_config_item(self._nodeconfig, value, path)
 
     def add_statseg_size(self, value):
         """Add Stats Heap Size configuration.
@@ -542,6 +578,11 @@ class VppConfigGenerator:
         path = [u"session", u"enable"]
         self.add_config_item(self._nodeconfig, u"", path)
 
+    def add_session_app_socket_api(self):
+        """Use session app socket api."""
+        path = [u"session", u"use-app-socket-api"]
+        self.add_config_item(self._nodeconfig, u"", path)
+
     def add_session_event_queues_memfd_segment(self):
         """Add session event queue memfd segment."""
         path = [u"session", u"evt_qs_memfd_seg"]
@@ -663,3 +704,40 @@ class VppConfigGenerator:
         VPPUtil.restart_vpp_service(self._node, self._node_key)
         if verify_vpp:
             VPPUtil.verify_vpp(self._node)
+
+
+class VppInitConfig:
+    """VPP Initial Configuration."""
+    @staticmethod
+    def init_vpp_startup_configuration_on_all_duts(nodes):
+        """Apply initial VPP startup configuration on all DUTs.
+
+        :param nodes: Nodes in the topology.
+        :type nodes: dict
+        """
+        huge_size = Constants.DEFAULT_HUGEPAGE_SIZE
+        for node in nodes.values():
+            if node[u"type"] == NodeType.DUT:
+                vpp_config = VppConfigGenerator()
+                vpp_config.set_node(node)
+                vpp_config.add_unix_log()
+                vpp_config.add_unix_cli_listen()
+                vpp_config.add_unix_cli_no_pager()
+                vpp_config.add_unix_gid()
+                vpp_config.add_unix_coredump()
+                vpp_config.add_socksvr(socket=Constants.SOCKSVR_PATH)
+                vpp_config.add_main_heap_size("2G")
+                vpp_config.add_main_heap_page_size(huge_size)
+                vpp_config.add_default_hugepage_size(huge_size)
+                vpp_config.add_statseg_size("2G")
+                vpp_config.add_statseg_page_size(huge_size)
+                vpp_config.add_statseg_per_node_counters("on")
+                vpp_config.add_plugin("disable", "default")
+                vpp_config.add_plugin("enable", "dpdk_plugin.so")
+                vpp_config.add_dpdk_dev(
+                    *[node["interfaces"][interface].get("pci_address") \
+                        for interface in node[u"interfaces"]]
+                )
+                vpp_config.add_ip6_hash_buckets(2000000)
+                vpp_config.add_ip6_heap_size("4G")
+                vpp_config.apply_config()
\ No newline at end of file