CSIT-811 HC Test: BGP functional tests
[csit.git] / resources / libraries / python / honeycomb / HoneycombSetup.py
index d10a5cc..d4175b1 100644 (file)
@@ -61,12 +61,13 @@ class HoneycombSetup(object):
 
         HoneycombSetup.print_environment(nodes)
 
-        logger.console("\n(re)Starting Honeycomb service ...")
-
         cmd = "sudo service honeycomb start"
 
         for node in nodes:
             if node['type'] == NodeType.DUT:
+                logger.console(
+                    "\n(re)Starting Honeycomb service on node {0}".format(
+                        node["host"]))
                 ssh = SSH()
                 ssh.connect(node)
                 (ret_code, _, _) = ssh.exec_command_sudo(cmd)
@@ -89,13 +90,15 @@ class HoneycombSetup(object):
         :type nodes: list
         :raises HoneycombError: If Honeycomb failed to stop.
         """
-        logger.console("\nShutting down Honeycomb service ...")
 
         cmd = "sudo service honeycomb stop"
         errors = []
 
         for node in nodes:
             if node['type'] == NodeType.DUT:
+                logger.console(
+                    "\nShutting down Honeycomb service on node {0}".format(
+                        node["host"]))
                 ssh = SSH()
                 ssh.connect(node)
                 (ret_code, _, _) = ssh.exec_command_sudo(cmd)
@@ -121,7 +124,8 @@ class HoneycombSetup(object):
         :raises HoneycombError: If Honeycomb fails to start.
         """
 
-        logger.console("\n(re)Starting Honeycomb service ...")
+        logger.console(
+            "\n(re)Starting Honeycomb service on node {0}".format(node["host"]))
 
         cmd = "sudo service honeycomb restart"
 
@@ -293,7 +297,8 @@ class HoneycombSetup(object):
                 "which java",
                 "java -version",
                 "dpkg --list | grep openjdk",
-                "ls -la /opt/honeycomb")
+                "ls -la /opt/honeycomb",
+                "cat /opt/honeycomb/modules/*module-config")
 
         for node in nodes:
             if node['type'] == NodeType.DUT:
@@ -365,27 +370,39 @@ class HoneycombSetup(object):
          """
 
         disabled_features = {
-            "NSH": "io.fd.hc2vpp.vppnsh.impl.VppNshModule"
+            "NSH": ["io.fd.hc2vpp.vppnsh.impl.VppNshModule"],
+            "BGP": ["io.fd.hc2vpp.bgp.inet.BgpInetModule",
+                    "io.fd.honeycomb.infra.bgp.BgpModule",
+                    "io.fd.honeycomb.infra.bgp.BgpReadersModule",
+                    "io.fd.honeycomb.infra.bgp.BgpWritersModule",
+                    "io.fd.honeycomb.northbound.bgp.extension.InetModule",
+                    "io.fd.honeycomb.northbound.bgp.extension.EvpnModule",
+                    "io.fd.honeycomb.northbound.bgp.extension.L3VpnV4Module",
+                    "io.fd.honeycomb.northbound.bgp.extension.L3VpnV6Module",
+                    "io.fd.honeycomb.northbound.bgp.extension."
+                    "LabeledUnicastModule",
+                    "io.fd.honeycomb.northbound.bgp.extension.LinkstateModule"]
         }
 
         ssh = SSH()
         ssh.connect(node)
 
         if feature in disabled_features.keys():
-            # uncomment by replacing the entire line
-            find = replace = "{0}".format(disabled_features[feature])
-            if disable:
-                replace = "// {0}".format(find)
-
-            argument = '"/{0}/c\\ {1}"'.format(find, replace)
-            path = "{0}/modules/*module-config"\
-                .format(Const.REMOTE_HC_DIR)
-            command = "sed -i {0} {1}".format(argument, path)
-
-            (ret_code, _, stderr) = ssh.exec_command_sudo(command)
-            if ret_code != 0:
-                raise HoneycombError("Failed to modify configuration on "
-                                     "node {0}, {1}".format(node, stderr))
+            # for every module, uncomment by replacing the entire line
+            for item in disabled_features[feature]:
+                find = replace = "{0}".format(item)
+                if disable:
+                    replace = "// {0}".format(find)
+
+                argument = '"/{0}/c\\ {1}"'.format(find, replace)
+                path = "{0}/modules/*module-config"\
+                    .format(Const.REMOTE_HC_DIR)
+                command = "sed -i {0} {1}".format(argument, path)
+
+                (ret_code, _, stderr) = ssh.exec_command_sudo(command)
+                if ret_code != 0:
+                    raise HoneycombError("Failed to modify configuration on "
+                                         "node {0}, {1}".format(node, stderr))
         else:
             raise HoneycombError(
                 "Unrecognized feature {0}.".format(feature))
@@ -637,6 +654,26 @@ class HoneycombSetup(object):
 
         logger.info("ODL client service stopped.")
 
+    @staticmethod
+    def set_static_arp(node, ip_address, mac_address):
+        """Configure a static ARP entry using arp.
+
+        :param node: Node in topology.
+        :param ip_address: IP address for the entry.
+        :param mac_address: MAC adddress for the entry.
+        :type node: dict
+        :type ip_address: str
+        :type mac_address: str
+        :raises RuntimeError: If the operation fails.
+        """
+
+        ssh = SSH()
+        ssh.connect(node)
+        ret_code, _, _ = ssh.exec_command_sudo("arp -s {0} {1}".format(
+            ip_address, mac_address))
+
+        if ret_code != 0:
+            raise RuntimeError("Failed to configure static ARP adddress.")
 
 
 class HoneycombStartupConfig(object):