aboutsummaryrefslogtreecommitdiffstats
path: root/resources/tools
diff options
context:
space:
mode:
authorPeter Mikus <pmikus@cisco.com>2019-08-16 06:47:53 +0000
committerPeter Mikus <pmikus@cisco.com>2019-08-19 05:22:03 +0000
commitdb24a2e63a447599b5125da4b6f93f0f9184bfcc (patch)
tree6b07fb0413e9b9bc898341669dabb73f860c6958 /resources/tools
parentbbcacad812c4e4144b97ec480e7db428b248ab22 (diff)
FIX: Topology reservation
Last attempt [0] is doing more harm then good. If testbed is down but recovered quickly enough (reboot, temporary ssh connectivity issue, ...) it never gets back into pool making other testbeds overloaded and queued. This patch is suppose to partially revert previous behavior until proper patch will follow. [0] https://gerrit.fd.io/r/c/csit/+/21148 Signed-off-by: Peter Mikus <pmikus@cisco.com> Change-Id: I8203946d10d3e7dd51e97519d679246b5dae59e3
Diffstat (limited to 'resources/tools')
-rwxr-xr-xresources/tools/scripts/topo_reservation.py35
1 files changed, 19 insertions, 16 deletions
diff --git a/resources/tools/scripts/topo_reservation.py b/resources/tools/scripts/topo_reservation.py
index 77d84efeba..e7e1ff6bab 100755
--- a/resources/tools/scripts/topo_reservation.py
+++ b/resources/tools/scripts/topo_reservation.py
@@ -28,6 +28,7 @@ from resources.libraries.python.ssh import exec_cmd
RESERVATION_DIR = "/tmp/reservation_dir"
+RESERVATION_NODE = "TG"
def diag_cmd(node, cmd):
@@ -38,9 +39,9 @@ def diag_cmd(node, cmd):
:type ssh: dict
:type cmd: str
"""
- print "+", cmd
+ print('+ {cmd}'.format(cmd=cmd))
_, stdout, _ = exec_cmd(node, cmd)
- print stdout
+ print(stdout)
def main():
@@ -88,37 +89,39 @@ def main():
# we are using it, because testing shows SSH access to DUT
# during test affects its performance (bursts of lost packets).
try:
- tgn = topology["TG"]
+ node = topology[RESERVATION_NODE]
except KeyError:
- print "Topology file does not contain 'TG' node"
+ print("Topology file does not contain '{node}' node".
+ format(node=RESERVATION_NODE))
return 1
# For system reservation we use mkdir it is an atomic operation and we can
# store additional data (time, client_ID, ..) within reservation directory.
if args.cancel:
- ret, _, err = exec_cmd(tgn, "rm -r {}".format(RESERVATION_DIR))
+ ret, _, err = exec_cmd(node, "rm -r {dir}".format(dir=RESERVATION_DIR))
if ret:
- print "Cancellation unsuccessful:\n{}".format(err)
+ print("Cancellation unsuccessful:\n{err}".format(err=err))
return ret
# Before critical section, output can be outdated already.
print("Diagnostic commands:")
# -d and * are to supress "total <size>", see https://askubuntu.com/a/61190
- diag_cmd(tgn, "ls --full-time -cd '{dir}'/*".format(dir=RESERVATION_DIR))
- print("Attempting reservation.")
+ diag_cmd(node, "ls --full-time -cd '{dir}'/*".format(dir=RESERVATION_DIR))
+ print("Attempting testbed reservation.")
# Entering critical section.
- ret, _, err = exec_cmd(tgn, "mkdir '{dir}'".format(dir=RESERVATION_DIR))
+ ret, _, _ = exec_cmd(node, "mkdir '{dir}'".format(dir=RESERVATION_DIR))
# Critical section is over.
if ret:
- print("Already reserved by another job:\n{}".format(err))
+ _, stdo, _ = exec_cmd(node, "ls '{dir}'/*".format(dir=RESERVATION_DIR))
+ print("Testbed already reserved by:\n{stdo}".format(stdo=stdo))
return 2
# Here the script knows it is the only owner of the testbed.
- print("Success, writing test run info to reservation dir.")
- ret2, _, err = exec_cmd(
- tgn, "touch '{dir}/{runtag}'"\
+ print("Reservation success, writing additional info to reservation dir.")
+ ret, _, err = exec_cmd(
+ node, "touch '{dir}/{runtag}'"\
.format(dir=RESERVATION_DIR, runtag=args.runtag))
- if ret2:
- print("Writing test run info failed, but continuing anyway:\n{}".format(
- err))
+ if ret:
+ print("Writing test run info failed, but continuing anyway:\n{err}".
+ format(err=err))
return 0