add new topology parameter: arch 74/9474/15
authorGabriel Ganne <gabriel.ganne@enea.com>
Mon, 27 Nov 2017 14:38:53 +0000 (15:38 +0100)
committerJan Gelety <jgelety@cisco.com>
Wed, 10 Jan 2018 14:42:43 +0000 (15:42 +0100)
if unset, arch variable will default to "x86_64"

* Note on "arm64" vs "aarch64"
  debian-based uses arm64
  rhel-based uses aarch64
  qemu binaries of both distribs uses aarch64
  dpdk uses arm64
  vpp uses aarch64
  python machine modules uses aarch64
=> prefer aarch64 to use the same nomenclature as vpp

* add ARCH argument to:
  init_dpdk.sh, install_dpdk.sh, run_l2fwd.sh, install_tldk.sh, run_tldk.sh.
  default to x86_64
  converts "aarch64" if needed for dpdk naming convention
* fixed terminal end detection to allow "~]# "
  add dut node arch as param to all robot set bin calls
* add --target-list flag to qemu_build.sh
  defaults to x86_64-softmmu
* add arch flag to all the topology files
  * topologies/available/ (and example file)
  * resources/tools/virl/topologies/
* set _qemu_bin path using node['arch'] in qemu_set_node()

Change-Id: If46d88d064d213d3e4c6fc584bb8e0d4b6428cb8
Signed-off-by: Gabriel Ganne <gabriel.ganne@enea.com>
23 files changed:
resources/libraries/bash/qemu_build.sh
resources/libraries/python/DPDK/DPDKTools.py
resources/libraries/python/DPDK/L2fwdTest.py
resources/libraries/python/DPDK/SetupDPDKTest.py
resources/libraries/python/QemuUtils.py
resources/libraries/python/TLDK/SetupTLDKTest.py
resources/libraries/python/VatExecutor.py
resources/libraries/python/ssh.py
resources/libraries/python/topology.py
resources/tools/virl/topologies/double-ring-nested.centos7.yaml
resources/tools/virl/topologies/double-ring-nested.trusty.yaml
resources/tools/virl/topologies/double-ring-nested.xenial.yaml
tests/dpdk/dpdk_scripts/init_dpdk.sh
tests/dpdk/dpdk_scripts/install_dpdk.sh
tests/dpdk/dpdk_scripts/run_l2fwd.sh
tests/tldk/tldk_scripts/install_tldk.sh
tests/tldk/tldk_scripts/run_tldk.sh
topologies/available/3_node_hw_topo1.yaml.example
topologies/available/lf_testbed1.yaml
topologies/available/lf_testbed2.yaml
topologies/available/lf_testbed3.yaml
topologies/available/vagrant.yaml
topologies/available/virl.yaml

index 5fbbef8..57520a9 100755 (executable)
@@ -18,6 +18,7 @@ QEMU_DOWNLOAD_PACKAGE="${QEMU_VERSION}.tar.xz"
 QEMU_PACKAGE_URL="${QEMU_DOWNLOAD_REPO}${QEMU_DOWNLOAD_PACKAGE}"
 QEMU_INSTALL_DIR="/opt/${QEMU_VERSION}"
 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+TARGET_LIST="x86_64-softmmu"
 
 for i in "$@"; do
     case $i in
@@ -33,6 +34,9 @@ for i in "$@"; do
         --force)
             FORCE=1
             shift ;;
+        --target-list)
+            TARGET_LIST="${i#*=}"
+            shift ;;
         *)
             ;;
     esac
@@ -78,7 +82,7 @@ then
 fi
 
 # Build
-./configure --target-list=x86_64-softmmu --prefix=${QEMU_INSTALL_DIR} || \
+./configure --target-list=${TARGET_LIST} --prefix=${QEMU_INSTALL_DIR} || \
     { echo "Failed to configure ${QEMU_VERSION}"; exit 1; }
 make -j`nproc` || \
     { echo "Failed to compile ${QEMU_VERSION}"; exit 1; }
index 6d9eedd..5435dff 100644 (file)
@@ -46,8 +46,12 @@ class DPDKTools(object):
         ssh = SSH()
         ssh.connect(dut_node)
 
-        cmd = 'cd {0}/tests/dpdk/dpdk_scripts/ && sudo ./init_dpdk.sh {1} {2}' \
-              .format(con.REMOTE_FW_DIR, pci_address1, pci_address2)
+        arch = Topology.get_node_arch(dut_node)
+        cmd = 'cd {0}/tests/dpdk/dpdk_scripts/ &&'\
+              'sudo ./init_dpdk.sh {1} {2} {3}' .format(con.REMOTE_FW_DIR,
+                                                        pci_address1,
+                                                        pci_address2,
+                                                        arch)
 
         (ret_code, _, _) = ssh.exec_command(cmd, timeout=600)
         if ret_code != 0:
index f5f714a..b662eeb 100644 (file)
@@ -17,6 +17,7 @@ DUT nodes.
 
 from resources.libraries.python.ssh import SSH
 from resources.libraries.python.constants import Constants as con
+from resources.libraries.python.topology import Topology
 
 
 class L2fwdTest(object):
@@ -46,8 +47,9 @@ class L2fwdTest(object):
         ssh.connect(dut_node)
 
         cmd = 'cd {0}/tests/dpdk/dpdk_scripts/ && sudo ./run_l2fwd.sh {1} ' \
-              '{2} {3} {4}'.format(con.REMOTE_FW_DIR, cpu_cores, nb_cores,
-                                   queue_nums, jumbo_frames)
+              '{2} {3} {4} {5}'.format(con.REMOTE_FW_DIR, cpu_cores, nb_cores,
+                                       queue_nums, jumbo_frames,
+                                       Topology.get_node_arch(dut_node))
 
         (ret_code, _, _) = ssh.exec_command(cmd, timeout=600)
         if ret_code != 0:
index 0f70803..d3725d9 100644 (file)
@@ -28,6 +28,7 @@ from robot.libraries.BuiltIn import BuiltIn
 from resources.libraries.python.ssh import SSH
 from resources.libraries.python.constants import Constants as con
 from resources.libraries.python.topology import NodeType
+from resources.libraries.python.topology import Topology
 
 __all__ = ["SetupDPDKTest"]
 
@@ -125,14 +126,16 @@ def install_dpdk_test(node):
     :type node: dict
     :returns: nothing
     """
-    logger.console('Install the DPDK on {0}'.format(node['host']))
+    arch = Topology.get_node_arch(node)
+    logger.console('Install the DPDK on {0} ({1})'.format(node['host'],
+                                                          arch))
 
     ssh = SSH()
     ssh.connect(node)
 
     (ret_code, _, stderr) = ssh.exec_command(
-        'cd {0}/tests/dpdk/dpdk_scripts/ && ./install_dpdk.sh'
-        .format(con.REMOTE_FW_DIR), timeout=600)
+        'cd {0}/tests/dpdk/dpdk_scripts/ && ./install_dpdk.sh {1}'
+        .format(con.REMOTE_FW_DIR, arch), timeout=600)
 
     if ret_code != 0:
         logger.error('Install the DPDK error: {0}'.format(stderr))
@@ -153,6 +156,11 @@ def setup_node(args):
     :rtype: bool
     """
     tarball, remote_tarball, node = args
+
+    # if unset, arch defaults to x86_64
+    if 'arch' not in node or not node['arch']:
+        node['arch'] = 'x86_64'
+
     try:
         copy_tarball_to_node(tarball, node)
         extract_tarball_at_node(remote_tarball, node)
@@ -166,6 +174,7 @@ def setup_node(args):
     else:
         logger.console('Setup of node {0} done'.format(node['host']))
         return True
+#pylint: enable=broad-except
 
 def delete_local_tarball(tarball):
     """Delete local tarball to prevent disk pollution.
@@ -210,9 +219,13 @@ class SetupDPDKTest(object):
             'Executed node setups in parallel, waiting for processes to end')
         result.wait()
 
-        logger.info('Results: {0}'.format(result.get()))
+        results = result.get()
+        node_setup_success = all(results)
+        logger.info('Results: {0}'.format(results))
 
         logger.trace('Test framework copied to all topology nodes')
         delete_local_tarball(tarball)
-        logger.console('All nodes are ready')
-
+        if node_setup_success:
+            logger.console('All nodes are ready')
+        else:
+            logger.console('Failed to setup dpdk on all the nodes')
index 428599b..6426394 100644 (file)
@@ -20,7 +20,7 @@ from robot.api import logger
 
 from resources.libraries.python.ssh import SSH, SSHTimeout
 from resources.libraries.python.constants import Constants
-from resources.libraries.python.topology import NodeType
+from resources.libraries.python.topology import NodeType, Topology
 
 
 class QemuUtils(object):
@@ -28,7 +28,7 @@ class QemuUtils(object):
 
     def __init__(self, qemu_id=1):
         self._qemu_id = qemu_id
-        # Path to QEMU binary
+        # Path to QEMU binary. Use x86_64 by default
         self._qemu_bin = '/usr/bin/qemu-system-x86_64'
         # QEMU Machine Protocol socket
         self._qmp_sock = '/tmp/qmp{0}.sock'.format(self._qemu_id)
@@ -188,6 +188,9 @@ class QemuUtils(object):
         self._ssh.connect(node)
         self._vm_info['host'] = node['host']
 
+        arch = Topology.get_node_arch(node)
+        self._qemu_bin = '/usr/bin/qemu-system-{0}'.format(arch)
+
     def qemu_add_vhost_user_if(self, socket, server=True, mac=None):
         """Add Vhost-user interface.
 
@@ -677,12 +680,14 @@ class QemuUtils(object):
         version = ' --version={0}'.format(Constants.QEMU_INSTALL_VERSION)
         force = ' --force' if force_install else ''
         patch = ' --patch' if apply_patch else ''
+        arch = Topology.get_node_arch(node)
+        target_list = ' --target-list={0}-softmmu'.format(arch)
 
         (ret_code, stdout, stderr) = \
             ssh.exec_command(
-                "sudo -E sh -c '{0}/{1}/qemu_build.sh{2}{3}{4}{5}'"\
+                "sudo -E sh -c '{0}/{1}/qemu_build.sh{2}{3}{4}{5}{6}'"\
                 .format(Constants.REMOTE_FW_DIR, Constants.RESOURCES_LIB_SH,
-                        version, directory, force, patch), 1000)
+                        version, directory, force, patch, target_list), 1000)
 
         if int(ret_code) != 0:
             logger.debug('QEMU build failed {0}'.format(stdout + stderr))
index 3d9685f..7692902 100644 (file)
@@ -28,7 +28,7 @@ from robot.libraries.BuiltIn import BuiltIn
 
 from resources.libraries.python.ssh import SSH
 from resources.libraries.python.TLDK.TLDKConstants import TLDKConstants as con
-from resources.libraries.python.topology import NodeType
+from resources.libraries.python.topology import NodeType, Topology
 from resources.libraries.python.TLDK.gen_pcap import gen_all_pcap
 
 __all__ = ["SetupTLDKTest"]
@@ -147,14 +147,17 @@ def install_tldk_test(node):
     :returns: nothing.
     :raises RuntimeError: If install tldk failed.
     """
-    logger.console('Install the TLDK on {0}'.format(node['host']))
+
+    arch = Topology.get_node_arch(node)
+    logger.console('Install the TLDK on {0} ({1})'.format(node['host'],
+                                                          arch))
 
     ssh = SSH()
     ssh.connect(node)
 
     (ret_code, _, stderr) = ssh.exec_command(
-        'cd {0}/{1} && ./install_tldk.sh'
-        .format(con.REMOTE_FW_DIR, con.TLDK_SCRIPTS), timeout=600)
+        'cd {0}/{1} && ./install_tldk.sh {2}'
+        .format(con.REMOTE_FW_DIR, con.TLDK_SCRIPTS, arch), timeout=600)
 
     if ret_code != 0:
         logger.error('Install the TLDK error: {0}'.format(stderr))
@@ -175,6 +178,10 @@ def setup_node(args):
     :raises RuntimeError: If node setup failed.
     """
     tarball, remote_tarball, node = args
+
+    # if unset, arch defaults to x86_64
+    Topology.get_node_arch(node)
+
     try:
         copy_tarball_to_node(tarball, node)
         extract_tarball_at_node(remote_tarball, node)
@@ -232,8 +239,13 @@ class SetupTLDKTest(object):
             'Executed node setups in parallel, waiting for processes to end')
         result.wait()
 
-        logger.info('Results: {0}'.format(result.get()))
+        results = result.get()
+        node_setup_success = all(results)
+        logger.info('Results: {0}'.format(results))
 
         logger.trace('Test framework copied to all topology nodes')
         delete_local_tarball(tarball)
-        logger.console('All nodes are ready')
+        if node_setup_success:
+            logger.console('All nodes are ready')
+        else:
+            logger.console('Failed to setup dpdk on all the nodes')
index de6baab..c50fdba 100644 (file)
@@ -304,7 +304,7 @@ class VatTerminal(object):
     """
 
     __VAT_PROMPT = ("vat# ", )
-    __LINUX_PROMPT = (":~$ ", "~]$ ")
+    __LINUX_PROMPT = (":~$ ", "~]$ ", "~]# ")
 
     def __init__(self, node, json_param=True):
         json_text = ' json' if json_param else ''
index 87fc02d..11b0583 100644 (file)
@@ -250,7 +250,7 @@ class SSH(object):
         chan.set_combine_stderr(True)
 
         buf = ''
-        while not buf.endswith((":~$ ", "~]$ ")):
+        while not buf.endswith((":~$ ", "~]$ ", "~]# ")):
             try:
                 chunk = chan.recv(self.__MAX_RECV_BUF)
                 if not chunk:
index 38e08d2..13dbddd 100644 (file)
@@ -904,6 +904,22 @@ class Topology(object):
         """
         return node['host']
 
+    @staticmethod
+    def get_node_arch(node):
+        """Return arch of the node.
+           Default to x86_64 if no arch present
+
+        :param node: Node created from topology.
+        :type node: dict
+        :returns: Node architecture
+        :rtype: str
+        """
+        try:
+            return node['arch']
+        except KeyError:
+            node['arch'] = 'x86_64'
+            return 'x86_64'
+
     @staticmethod
     def get_cryptodev(node):
         """Return Crytodev configuration of the node.
index 00b297c..d35e24b 100644 (file)
@@ -10,6 +10,7 @@ nodes:
   TG:
     type: TG
     host: "{topology[tg1][nic-management][ip-addr]}"
+    arch: x86_64
     port: 22
     username: cisco
     priv_key: |
@@ -38,6 +39,7 @@ nodes:
   DUT1:
     type: DUT
     host: "{topology[sut1][nic-management][ip-addr]}"
+    arch: x86_64
     port: 22
     username: cisco
     honeycomb:
@@ -67,6 +69,7 @@ nodes:
   DUT2:
     type: DUT
     host: "{topology[sut2][nic-management][ip-addr]}"
+    arch: x86_64
     port: 22
     username: cisco
     honeycomb:
index 00b297c..d35e24b 100644 (file)
@@ -10,6 +10,7 @@ nodes:
   TG:
     type: TG
     host: "{topology[tg1][nic-management][ip-addr]}"
+    arch: x86_64
     port: 22
     username: cisco
     priv_key: |
@@ -38,6 +39,7 @@ nodes:
   DUT1:
     type: DUT
     host: "{topology[sut1][nic-management][ip-addr]}"
+    arch: x86_64
     port: 22
     username: cisco
     honeycomb:
@@ -67,6 +69,7 @@ nodes:
   DUT2:
     type: DUT
     host: "{topology[sut2][nic-management][ip-addr]}"
+    arch: x86_64
     port: 22
     username: cisco
     honeycomb:
index 00b297c..d35e24b 100644 (file)
@@ -10,6 +10,7 @@ nodes:
   TG:
     type: TG
     host: "{topology[tg1][nic-management][ip-addr]}"
+    arch: x86_64
     port: 22
     username: cisco
     priv_key: |
@@ -38,6 +39,7 @@ nodes:
   DUT1:
     type: DUT
     host: "{topology[sut1][nic-management][ip-addr]}"
+    arch: x86_64
     port: 22
     username: cisco
     honeycomb:
@@ -67,6 +69,7 @@ nodes:
   DUT2:
     type: DUT
     host: "{topology[sut2][nic-management][ip-addr]}"
+    arch: x86_64
     port: 22
     username: cisco
     honeycomb:
index 09a9628..db9dee5 100755 (executable)
@@ -6,6 +6,18 @@ set -x
 DPDK_VERSION=dpdk-17.11
 ROOTDIR=/tmp/openvpp-testing
 PWDDIR=$(pwd)
+
+# set arch, default to x86_64 if none given
+ARCH=${3:-"x86_64"}
+
+# dpdk prefers "arm64" to "aarch64" and does not allow arm64 native target
+if [ $ARCH == "aarch64" ]; then
+    ARCH="arm64"
+    MACHINE="armv8a"
+else
+    MACHINE="native"
+fi
+
 cd ${ROOTDIR}/${DPDK_VERSION}/
 
 modprobe uio
@@ -25,7 +37,7 @@ then
         { echo "Failed to remove uio_pci_generic module"; exit 1; }
 fi
 
-insmod ./x86_64-native-linuxapp-gcc/kmod/igb_uio.ko || \
+insmod ./${ARCH}-${MACHINE}-linuxapp-gcc/kmod/igb_uio.ko || \
     { echo "Failed to insert igb_uio module"; exit 1; }
 
 # Binding
index 6a7c11d..945defe 100755 (executable)
@@ -3,6 +3,19 @@
 set -x
 
 # Setting variables
+
+# set arch, default to x86_64 if none given
+ARCH=${1:-"x86_64"}
+
+
+# dpdk prefers "arm64" to "aarch64" and does not allow arm64 native target
+if [ $ARCH == "aarch64" ]; then
+    ARCH="arm64"
+    MACHINE="armv8a"
+else
+    MACHINE="native"
+fi
+
 DPDK_VERSION=dpdk-17.11
 DPDK_DIR=${DPDK_VERSION}
 DPDK_PACKAGE=${DPDK_DIR}.tar.xz
@@ -19,13 +32,13 @@ tar xJvf ${DPDK_PACKAGE} || \
 # Compile the DPDK
 cd ./${DPDK_DIR}
 sudo sed -i 's/^CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=y/g' ./config/common_base
-make install T=x86_64-native-linuxapp-gcc -j || \
+make install T=${ARCH}-${MACHINE}-linuxapp-gcc -j || \
     { echo "Failed to compile $DPDK_VERSION"; exit 1; }
 cd ${PWDDIR}
 
 # Compile the l3fwd
 export RTE_SDK=${ROOTDIR}/${DPDK_DIR}/
-export RTE_TARGET=x86_64-native-linuxapp-gcc
+export RTE_TARGET=${ARCH}-${MACHINE}-linuxapp-gcc
 cd ${RTE_SDK}/examples/l3fwd
 sudo sed -i 's/^#define RTE_TEST_RX_DESC_DEFAULT 128/#define RTE_TEST_RX_DESC_DEFAULT 2048/g' ./main.c
 sudo sed -i 's/^#define RTE_TEST_TX_DESC_DEFAULT 512/#define RTE_TEST_TX_DESC_DEFAULT 2048/g' ./main.c
index bbd69b6..80b688e 100755 (executable)
@@ -13,6 +13,15 @@ cpu_corelist=$1
 nb_cores=$2
 queue_nums=$3
 jumbo_frames=$4
+arch=${5:-"x86_64"}
+
+# dpdk prefers "arm64" to "aarch64" and does not allow arm64 native target
+if [ $arch == "aarch64" ]; then
+    arch="arm64"
+    machine="armv8a"
+else
+    machine="native"
+fi
 
 # Try to kill the testpmd
 sudo pgrep testpmd
@@ -75,8 +84,10 @@ sleep 2
 
 cd ${ROOTDIR}/${DPDK_VERSION}/
 rm -f ${TESTPMDLOG}
+TESTPMD_BIN=./${arch}-${machine}-linuxapp-gcc/app/testpmd
+
 if [ "$jumbo_frames" = "yes" ]; then
-    sudo sh -c "screen -dmSL DPDK-test ./x86_64-native-linuxapp-gcc/app/testpmd \
+    sudo sh -c "screen -dmSL DPDK-test $TESTPMD_BIN \
         -l ${cpu_corelist} -n 4 -- \
         --numa \
         --nb-ports=2 \
@@ -93,7 +104,7 @@ if [ "$jumbo_frames" = "yes" ]; then
         --disable-link-check \
         --auto-start"
 else
-    sudo sh -c "screen -dmSL DPDK-test ./x86_64-native-linuxapp-gcc/app/testpmd \
+    sudo sh -c "screen -dmSL DPDK-test $TESTPMD_BIN \
         -l ${cpu_corelist} -n 4 -- \
         --numa \
         --nb-ports=2 \
index 0cc65f9..4adff56 100755 (executable)
@@ -2,6 +2,17 @@
 
 set -x
 
+# set arch, default to x86_64 if none given
+ARCH=${1:-"x86_64"}
+
+# dpdk prefers "arm64" to "aarch64" and does not allow arm64 native target
+if [ $ARCH == "aarch64" ]; then
+    ARCH="arm64"
+    MACHINE="armv8a"
+else
+    MACHINE="native"
+fi
+
 DPDK_VERSION=16.11.1
 
 ROOTDIR=/tmp/TLDK-testing
@@ -17,12 +28,12 @@ echo $PWD
 echo ${DPDK_PACKAGE}
 cd ./${DPDK_DIR}
 sudo sed -i 's/^CONFIG_RTE_LIBRTE_PMD_PCAP=n/CONFIG_RTE_LIBRTE_PMD_PCAP=y/g' ./config/common_base
-sudo make install T=x86_64-native-linuxapp-gcc
+sudo make install T=${ARCH}-${MACHINE}-linuxapp-gcc
 cd ${PWDDIR}
 
 # compile the TLDK
 export RTE_SDK=${ROOTDIR}/${DPDK_DIR}/
-export RTE_TARGET=x86_64-native-linuxapp-gcc
+export RTE_TARGET=${ARCH}-${MACHINE}-linuxapp-gcc
 cd ${ROOTDIR}/tldk
 make all
 cd ${PWDDIR}
index 6a0311b..10ad5b2 100755 (executable)
@@ -2,6 +2,17 @@
 
 set -x
 
+# set arch, default to x86_64 if none given
+ARCH=${1:-"x86_64"}
+
+# dpdk prefers "arm64" to "aarch64" and does not allow arm64 native target
+if [ $ARCH == "aarch64" ]; then
+    ARCH="arm64"
+    MACHINE="armv8a"
+else
+    MACHINE="native"
+fi
+
 ROOTDIR=/tmp/TLDK-testing
 PWDDIR=$(pwd)
 
@@ -53,12 +64,12 @@ sleep 2
 # need to install libpcap, libpcap-dev to use --vdev
 cd ${ROOTDIR}
 if [ "$IPv6_addr" == "NONE" ]; then
-sudo sh -c "nohup ./tldk/x86_64-native-linuxapp-gcc/app/l4fwd --lcore='0' \
+sudo sh -c "nohup ./tldk/${ARCH}-${MACHINE}-linuxapp-gcc/app/l4fwd --lcore='0' \
     -n 2 --vdev 'eth_pcap1,rx_pcap=${rx_file},tx_pcap=${tx_file}' \
     -b ${nic_pci} -- -P -U -R 0x1000 -S 0x1000 -s 0x20 -f ${fe_cfg} -b ${be_cfg} \
     port=0,lcore=0,rx_offload=0,tx_offload=0,ipv4=${IPv4_addr} &"
 elif [ "$IPv4_addr" == "NONE" ]; then
-sudo sh -c "nohup ./tldk/x86_64-native-linuxapp-gcc/app/l4fwd --lcore='0' \
+sudo sh -c "nohup ./tldk/${ARCH}-${MACHINE}-linuxapp-gcc/app/l4fwd --lcore='0' \
     -n 2 --vdev 'eth_pcap1,rx_pcap=${rx_file},tx_pcap=${tx_file}' \
     -b ${nic_pci} -- -P -U -R 0x1000 -S 0x1000 -s 0x20 -f ${fe_cfg} -b ${be_cfg} \
     port=0,lcore=0,rx_offload=0,tx_offload=0,ipv6=${IPv6_addr} &"
index 01fc9aa..ed817ff 100644 (file)
@@ -25,6 +25,7 @@ nodes:
   TG:
     type: TG
     host: 10.0.0.3
+    arch: x86_64
     port: 22
     username: lab
     password: lab
@@ -40,6 +41,7 @@ nodes:
   DUT1:
     type: DUT
     host: 10.0.0.1
+    arch: x86_64
     port: 22
     username: lab
     password: lab
@@ -55,6 +57,7 @@ nodes:
   DUT2:
     type: DUT
     host: 10.0.0.2
+    arch: x86_64
     port: 22
     username: lab
     password: lab
index 571a764..fcd9208 100644 (file)
@@ -11,6 +11,7 @@ nodes:
     type: TG
     subtype: TREX
     host: "10.30.51.16"
+    arch: x86_64
     port: 22
     username: testuser
     password: Csit1234
@@ -114,6 +115,7 @@ nodes:
   DUT1:
     type: DUT
     host: "10.30.51.17"
+    arch: x86_64
     port: 22
     username: testuser
     password: Csit1234
@@ -198,6 +200,7 @@ nodes:
   DUT2:
     type: DUT
     host: "10.30.51.18"
+    arch: x86_64
     port: 22
     username: testuser
     password: Csit1234
index c86cc8b..d69f861 100644 (file)
@@ -11,6 +11,7 @@ nodes:
     type: TG
     subtype: TREX
     host: "10.30.51.20"
+    arch: x86_64
     port: 22
     username: testuser
     password: Csit1234
@@ -114,6 +115,7 @@ nodes:
   DUT1:
     type: DUT
     host: "10.30.51.21"
+    arch: x86_64
     port: 22
     username: testuser
     password: Csit1234
@@ -198,6 +200,7 @@ nodes:
   DUT2:
     type: DUT
     host: "10.30.51.22"
+    arch: x86_64
     port: 22
     username: testuser
     password: Csit1234
index 8de90ff..e678c87 100644 (file)
@@ -11,6 +11,7 @@ nodes:
     type: TG
     subtype: TREX
     host: "10.30.51.24"
+    arch: x86_64
     port: 22
     username: testuser
     password: Csit1234
@@ -114,6 +115,7 @@ nodes:
   DUT1:
     type: DUT
     host: "10.30.51.25"
+    arch: x86_64
     port: 22
     username: testuser
     password: Csit1234
@@ -198,6 +200,7 @@ nodes:
   DUT2:
     type: DUT
     host: "10.30.51.26"
+    arch: x86_64
     port: 22
     username: testuser
     password: Csit1234
index a5a5ed5..b2a444e 100644 (file)
@@ -10,6 +10,7 @@ nodes:
   TG:
     type: TG
     host: "192.168.255.100"
+    arch: x86_64
     port: 22
     username: csit
     password: csit
@@ -47,6 +48,7 @@ nodes:
   DUT1:
     type: DUT
     host: "192.168.255.101"
+    arch: x86_64
     port: 22
     username: csit
     password: csit
@@ -74,6 +76,7 @@ nodes:
   DUT2:
     type: DUT
     host: "192.168.255.102"
+    arch: x86_64
     port: 22
     username: csit
     password: csit
index 36d45fe..32e929a 100644 (file)
@@ -10,6 +10,7 @@ nodes:
   TG:
     type: TG
     host: "10.30.51.73"
+    arch: x86_64
     port: 22
     username: cisco
     priv_key: |
@@ -54,6 +55,7 @@ nodes:
   DUT1:
     type: DUT
     host: "10.30.51.72"
+    arch: x86_64
     port: 22
     username: cisco
     priv_key: |
@@ -96,6 +98,7 @@ nodes:
   DUT2:
     type: DUT
     host: "10.30.51.71"
+    arch: x86_64
     port: 22
     username: cisco
     priv_key: |