VPP install and verify in __init__.robot
[csit.git] / resources / tools / virl / bin / start-testcase
index f6c3cc3..ce47378 100755 (executable)
@@ -32,6 +32,7 @@ import requests
 
 IPS_PER_SIMULATION = 5
 
 
 IPS_PER_SIMULATION = 5
 
+
 def indent(lines, amount, fillchar=' '):
     """Indent the string by amount of fill chars.
 
 def indent(lines, amount, fillchar=' '):
     """Indent the string by amount of fill chars.
 
@@ -47,6 +48,7 @@ def indent(lines, amount, fillchar=' '):
     padding = amount * fillchar
     return padding + ('\n'+padding).join(lines.split('\n'))
 
     padding = amount * fillchar
     return padding + ('\n'+padding).join(lines.split('\n'))
 
+
 def print_to_stderr(msg, end='\n'):
     """Writes any text to stderr.
 
 def print_to_stderr(msg, end='\n'):
     """Writes any text to stderr.
 
@@ -60,6 +62,7 @@ def print_to_stderr(msg, end='\n'):
     except ValueError:
         pass
 
     except ValueError:
         pass
 
+
 def get_assigned_interfaces(args, network="flat"):
     """Retrieve assigned interfaces in openstack network.
 
 def get_assigned_interfaces(args, network="flat"):
     """Retrieve assigned interfaces in openstack network.
 
@@ -81,6 +84,7 @@ def get_assigned_interfaces(args, network="flat"):
                            "Status other than 200 HTTP OK:\n{}"
                            .format(req.content))
 
                            "Status other than 200 HTTP OK:\n{}"
                            .format(req.content))
 
+
 def get_assigned_interfaces_count(args, network="flat"):
     """Count assigned interfaces in openstack network.
 
 def get_assigned_interfaces_count(args, network="flat"):
     """Count assigned interfaces in openstack network.
 
@@ -93,6 +97,7 @@ def get_assigned_interfaces_count(args, network="flat"):
     """
     return len(get_assigned_interfaces(args, network=network))
 
     """
     return len(get_assigned_interfaces(args, network=network))
 
+
 def check_ip_addresses(args):
     """Check IP address availability.
 
 def check_ip_addresses(args):
     """Check IP address availability.
 
@@ -101,8 +106,8 @@ def check_ip_addresses(args):
     :raises RuntimeError: If not enough free addresses available.
     """
     for i in range(args.wait_count):
     :raises RuntimeError: If not enough free addresses available.
     """
     for i in range(args.wait_count):
-        if (args.quota - \
-            get_assigned_interfaces_count(args) >= IPS_PER_SIMULATION):
+        if (args.quota -
+                get_assigned_interfaces_count(args) >= IPS_PER_SIMULATION):
             break
         if args.verbosity >= 2:
             print_to_stderr("DEBUG: - Attempt {} out of {}, waiting for free "
             break
         if args.verbosity >= 2:
             print_to_stderr("DEBUG: - Attempt {} out of {}, waiting for free "
@@ -112,6 +117,7 @@ def check_ip_addresses(args):
     else:
         raise RuntimeError("ERROR: Not enough IP addresses to run simulation")
 
     else:
         raise RuntimeError("ERROR: Not enough IP addresses to run simulation")
 
+
 def check_virl_resources(args):
     """Check virl resources availability.
 
 def check_virl_resources(args):
     """Check virl resources availability.
 
@@ -125,6 +131,8 @@ def check_virl_resources(args):
 # function executed in sequence. This should be broken down into multiple
 # functions.
 #
 # function executed in sequence. This should be broken down into multiple
 # functions.
 #
+
+
 def main():
     """ Main function."""
     #
 def main():
     """ Main function."""
     #
@@ -189,6 +197,8 @@ def main():
     parser.add_argument("-q", "--quota",
                         help="VIRL quota for max number of allowed IPs",
                         type=int, default=74)
     parser.add_argument("-q", "--quota",
                         help="VIRL quota for max number of allowed IPs",
                         type=int, default=74)
+    parser.add_argument("-si", "--skip-install", help="Skip VPP installation",
+                        action='store_true')
 
     args = parser.parse_args()
 
 
     args = parser.parse_args()
 
@@ -216,14 +226,15 @@ def main():
     #
     # Check if VPP package exists
     #
     #
     # Check if VPP package exists
     #
-    for package in args.packages:
-        if args.verbosity >= 2:
-            print_to_stderr("DEBUG: Checking if file {} exists"
-                            .format(package))
-        if not os.path.isfile(package):
-            print_to_stderr("ERROR: Debian package {} does not exist"
-                            .format(package))
-            sys.exit(1)
+    if not args.skip_install:
+        for package in args.packages:
+            if args.verbosity >= 2:
+                print_to_stderr("DEBUG: Checking if file {} exists"
+                                .format(package))
+            if not os.path.isfile(package):
+                print_to_stderr("ERROR: Required package {} does not exist"
+                                .format(package))
+                sys.exit(1)
 
     #
     # Start VIRL topology
 
     #
     # Start VIRL topology
@@ -496,46 +507,47 @@ def main():
     #
     # Upgrade VPP
     #
     #
     # Upgrade VPP
     #
-    if args.verbosity >= 1:
-        print_to_stderr("DEBUG: Uprading VPP")
-
-    for key1 in nodeaddrs:
-        if not key1 == 'tg':
-            for key2 in nodeaddrs[key1]:
-                ipaddr = nodeaddrs[key1][key2]
-                if args.verbosity >= 2:
-                    print_to_stderr("DEBUG: Upgrading VPP on node {}"
-                                    .format(ipaddr))
-                paramiko.util.log_to_file(os.path.join(scratch_directory,
-                                                       "ssh.log"))
-                client = paramiko.SSHClient()
-                client.load_system_host_keys()
-                client.load_host_keys("/dev/null")
-                client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
-                client.connect(ipaddr, username=args.ssh_user,
-                               key_filename=args.ssh_privkey)
-                if 'centos' in args.topology:
-                    if args.verbosity >= 1:
-                        print_to_stderr("DEBUG: Installing RPM packages")
-                    vpp_install_command = 'sudo rpm -ivh /scratch/vpp/*.rpm'
-                elif 'trusty' in args.topology or 'xenial' in args.topology:
-                    if args.verbosity >= 1:
-                        print_to_stderr("DEBUG: Installing DEB packages")
-                    vpp_install_command = 'sudo dpkg -i --force-all ' \
-                                          '/scratch/vpp/*.deb'
-                else:
-                    print_to_stderr("ERROR: Unsupported OS requested: {}"
-                                    .format(args.topology))
-                    vpp_install_command = ''
-                _, stdout, stderr = \
-                    client.exec_command(vpp_install_command)
-                c_stdout = stdout.read()
-                c_stderr = stderr.read()
-                if args.verbosity >= 2:
-                    print_to_stderr("DEBUG: Command output was:")
-                    print_to_stderr(c_stdout)
-                    print_to_stderr("DEBUG: Command stderr was:")
-                    print_to_stderr(c_stderr)
+    if not args.skip_install:
+        if args.verbosity >= 1:
+            print_to_stderr("DEBUG: Uprading VPP")
+
+        for key1 in nodeaddrs:
+            if not key1 == 'tg':
+                for key2 in nodeaddrs[key1]:
+                    ipaddr = nodeaddrs[key1][key2]
+                    if args.verbosity >= 2:
+                        print_to_stderr("DEBUG: Upgrading VPP on node {}"
+                                        .format(ipaddr))
+                    paramiko.util.log_to_file(os.path.join(scratch_directory,
+                                                           "ssh.log"))
+                    client = paramiko.SSHClient()
+                    client.load_system_host_keys()
+                    client.load_host_keys("/dev/null")
+                    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
+                    client.connect(ipaddr, username=args.ssh_user,
+                                   key_filename=args.ssh_privkey)
+                    if 'centos' in args.topology:
+                        if args.verbosity >= 1:
+                            print_to_stderr("DEBUG: Installing RPM packages")
+                        vpp_install_command = 'sudo rpm -ivh /scratch/vpp/*.rpm'
+                    elif 'trusty' in args.topology or 'xenial' in args.topology:
+                        if args.verbosity >= 1:
+                            print_to_stderr("DEBUG: Installing DEB packages")
+                        vpp_install_command = 'sudo dpkg -i --force-all ' \
+                                              '/scratch/vpp/*.deb'
+                    else:
+                        print_to_stderr("ERROR: Unsupported OS requested: {}"
+                                         .format(args.topology))
+                        vpp_install_command = ''
+                    _, stdout, stderr = \
+                        client.exec_command(vpp_install_command)
+                    c_stdout = stdout.read()
+                    c_stderr = stderr.read()
+                    if args.verbosity >= 2:
+                        print_to_stderr("DEBUG: Command output was:")
+                        print_to_stderr(c_stdout)
+                        print_to_stderr("DEBUG: Command stderr was:")
+                        print_to_stderr(c_stderr)
 
     #
     # Write a file with timestamp to scratch directory. We can use this to track
 
     #
     # Write a file with timestamp to scratch directory. We can use this to track