feat(tests): IPv6 fixes
[csit.git] / resources / tools / scripts / topo_reservation.py
index 73f6d0e..f2d18bc 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2022 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:
@@ -84,7 +84,7 @@ def main():
     )
     args = parser.parse_args()
 
-    with open(args.topo, "r") as topo_file:
+    with open(args.topo, u"rt") as topo_file:
         topology = yaml.safe_load(topo_file.read())[u"nodes"]
 
     # Even if TG is not guaranteed to be a Linux host,
@@ -100,9 +100,11 @@ def main():
     # store additional data (time, client_ID, ..) within reservation directory.
     if args.cancel:
         ret, _, err = exec_cmd(node, f"rm -r {RESERVATION_DIR}")
-        if ret:
+        # If connection is refused, ret==None.
+        if ret != 0:
             print(f"Cancellation unsuccessful:\n{err!r}")
-        return ret
+            return 1
+        return 0
     # Before critical section, output can be outdated already.
     print(u"Diagnostic commands:")
     # -d and * are to suppress "total <size>", see https://askubuntu.com/a/61190
@@ -111,7 +113,10 @@ def main():
     # Entering critical section.
     ret, _, _ = exec_cmd(node, f"mkdir '{RESERVATION_DIR}'")
     # Critical section is over.
-    if ret:
+    if ret is None:
+        print(u"Failed to connect to testbed.")
+        return 1
+    if ret != 0:
         _, stdo, _ = exec_cmd(node, f"ls '{RESERVATION_DIR}'/*")
         print(f"Testbed already reserved by:\n{stdo}")
         return 2
@@ -119,7 +124,7 @@ def main():
     print(u"Reservation success, writing additional info to reservation dir.")
     ret, _, err = exec_cmd(
         node, f"touch '{RESERVATION_DIR}/{args.runtag}'")
-    if ret:
+    if ret != 0:
         print(f"Writing test run info failed, but continuing anyway:\n{err!r}")
     return 0