CSIT-106 TB2 XL710 topology file
[csit.git] / resources / libraries / python / VppConfigGenerator.py
index 9ca9fc4..24fb8ce 100644 (file)
@@ -52,9 +52,11 @@ cpu {{
 
 dpdk {{
   socket-mem {socketmemconfig}
-{txqueuesconfig}
+  dev default {{
+  {rxqueuesconfig}
+  {txqueuesconfig}
+  }}
 {pciconfig}
-{rssconfig}
 {nomultiseg}
 }}
 """
@@ -67,33 +69,37 @@ class VppConfigGenerator(object):
     def __init__(self):
         self._nodeconfig = {}
 
-    def add_pci_device(self, node, pci_device=None):
+    def add_pci_all_devices(self, node):
+        """Add all PCI devices from topology file to startup config
+
+        :param node: DUT node
+        :type node: dict
+        :return: nothing
+        """
+        for port in node['interfaces'].keys():
+            pci_addr = Topology.get_interface_pci_addr(node, port)
+            if pci_addr:
+                self.add_pci_device(node, pci_addr)
+
+
+    def add_pci_device(self, node, *pci_devices):
         """Add PCI device configuration for node.
 
         :param node: DUT node.
-        :param pci_device: PCI device (format 0000:00:00.0 or 00:00.0).
-        If none given, all PCI devices for this node as per topology will be
-        added.
+        :param pci_device: PCI devices (format 0000:00:00.0 or 00:00.0)
         :type node: dict
-        :type pci_device: str
+        :type pci_devices: tuple
         :return: nothing
         """
         if node['type'] != NodeType.DUT:
             raise ValueError('Node type is not a DUT')
 
-        if pci_device is None:
-            # No PCI device was given. Add all device from topology.
-            for port in node['interfaces'].values():
-                port_name = port.get('name')
-                pci_addr = Topology.get_interface_pci_addr(node, port_name)
-                if pci_addr:
-                    self.add_pci_device(node, pci_addr)
-        else:
-            # Specific device was given.
-            hostname = Topology.get_node_hostname(node)
-
-            pattern = re.compile("^[0-9A-Fa-f]{4}:[0-9A-Fa-f]{2}:"
-                                 "[0-9A-Fa-f]{2}\\.[0-9A-Fa-f]$")
+        # Specific device was given.
+        hostname = Topology.get_node_hostname(node)
+
+        pattern = re.compile("^[0-9A-Fa-f]{4}:[0-9A-Fa-f]{2}:"
+                             "[0-9A-Fa-f]{2}\\.[0-9A-Fa-f]$")
+        for pci_device in pci_devices:
             if not pattern.match(pci_device):
                 raise ValueError('PCI address {} to be added to host {} '
                                  'is not in valid format xxxx:xx:xx.x'.
@@ -164,13 +170,13 @@ class VppConfigGenerator(object):
         logger.debug('Setting hostname {} Heap Size config to {}'.
                      format(hostname, heapsize_config))
 
-    def add_rss_config(self, node, rss_config):
-        """Add RSS configuration for node.
+    def add_rxqueues_config(self, node, rxqueues_config):
+        """Add Rx Queues configuration for node.
 
         :param node: DUT node.
-        :param rss_config: RSS configuration, as a string.
+        :param rxqueues_config: Rxqueues configuration, as a string.
         :type node: dict
-        :type rss_config: str
+        :type rxqueues_config: str
         :return: nothing
         """
         if node['type'] != NodeType.DUT:
@@ -178,32 +184,11 @@ class VppConfigGenerator(object):
         hostname = Topology.get_node_hostname(node)
         if not hostname in self._nodeconfig:
             self._nodeconfig[hostname] = {}
-        if not 'rss_config' in self._nodeconfig[hostname]:
-            self._nodeconfig[hostname]['rss_config'] = []
-        self._nodeconfig[hostname]['rss_config'].append(rss_config)
-        logger.debug('Setting hostname {} RSS config to {}'.\
-            format(hostname, rss_config))
-
-    def add_max_tx_queues_config(self, node, max_tx_queues_config):
-        """Add Max TX Queues configuration for node.
-
-        :param node: DUT node.
-        :param max_tx_queues_config: Max TX Queues configuration, as a string.
-        :type node: dict
-        :type max_tx_queues_config: str
-        :return: nothing
-        """
-        if node['type'] != NodeType.DUT:
-            raise ValueError('Node type is not a DUT')
-        hostname = Topology.get_node_hostname(node)
-        if not hostname in self._nodeconfig:
-            self._nodeconfig[hostname] = {}
-        if not 'max_tx_queues_config' in self._nodeconfig[hostname]:
-            self._nodeconfig[hostname]['max_tx_queues_config'] = []
-        self._nodeconfig[hostname]['max_tx_queues_config'].append(
-            max_tx_queues_config)
-        logger.debug('Setting hostname {} max_tx_queues config to {}'.\
-            format(hostname, max_tx_queues_config))
+        if not 'rxqueues_config' in self._nodeconfig[hostname]:
+            self._nodeconfig[hostname]['rxqueues_config'] = []
+        self._nodeconfig[hostname]['rxqueues_config'].append(rxqueues_config)
+        logger.debug('Setting hostname {} rxqueues config to {}'.\
+            format(hostname, rxqueues_config))
 
     def add_no_multi_seg_config(self, node):
         """Add No Multi Seg configuration for node.
@@ -284,8 +269,8 @@ class VppConfigGenerator(object):
         logger.debug('Clearing Heap Size config for hostname {}.'.
                      format(hostname))
 
-    def remove_rss_config(self, node):
-        """Remove RSS configuration from node.
+    def remove_rxqueues_config(self, node):
+        """Remove Rxqueues configuration from node.
 
         :param node: DUT node.
         :type node: dict
@@ -295,23 +280,8 @@ class VppConfigGenerator(object):
             raise ValueError('Node type is not a DUT')
         hostname = Topology.get_node_hostname(node)
         if hostname in self._nodeconfig:
-            self._nodeconfig[hostname]['rss_config'] = []
-        logger.debug('Clearing RSS config for hostname {}.'.\
-            format(hostname))
-
-    def remove_max_tx_queues_config(self, node):
-        """Remove Max TX Queues configuration from node.
-
-        :param node: DUT node.
-        :type node: dict
-        :return: nothing
-        """
-        if node['type'] != NodeType.DUT:
-            raise ValueError('Node type is not a DUT')
-        hostname = Topology.get_node_hostname(node)
-        if hostname in self._nodeconfig:
-            self._nodeconfig[hostname]['max_tx_queues_config'] = []
-        logger.debug('Clearing Max TX Queues config for hostname {}.'.\
+            self._nodeconfig[hostname]['rxqueues_config'] = []
+        logger.debug('Clearing rxqueues config for hostname {}.'.\
             format(hostname))
 
     def remove_no_multi_seg_config(self, node):
@@ -351,7 +321,7 @@ class VppConfigGenerator(object):
         pciconfig = ""
         socketmemconfig = DEFAULT_SOCKETMEM_CONFIG
         heapsizeconfig = ""
-        rssconfig = ""
+        rxqueuesconfig = ""
         txqueuesconfig = ""
         nomultiseg = ""
 
@@ -370,12 +340,8 @@ class VppConfigGenerator(object):
                 heapsizeconfig = "\nheapsize {}\n".\
                     format(cfg['heapsize_config'])
 
-            if 'rss_config' in cfg:
-                rssconfig = "  " + "\n  ".join(cfg['rss_config'])
-
-            if 'max_tx_queues_config' in cfg:
-                txqueuesconfig = "  " + "\n  ".join(
-                    cfg['max_tx_queues_config'])
+            if 'rxqueues_config' in cfg:
+                rxqueuesconfig = "  " + "\n  ".join(cfg['rxqueues_config'])
 
             if 'no_multi_seg_config' in cfg:
                 nomultiseg = "  " + "\n  ".join(cfg['no_multi_seg_config'])
@@ -384,7 +350,7 @@ class VppConfigGenerator(object):
                                                pciconfig=pciconfig,
                                                socketmemconfig=socketmemconfig,
                                                heapsizeconfig=heapsizeconfig,
-                                               rssconfig=rssconfig,
+                                               rxqueuesconfig=rxqueuesconfig,
                                                txqueuesconfig=txqueuesconfig,
                                                nomultiseg = nomultiseg)