React quickly to quit requests 73/66673/2
authorStephen Kitt <skitt@redhat.com>
Wed, 20 Dec 2017 17:54:00 +0000 (18:54 +0100)
committerJamo Luhrsen <jluhrsen@redhat.com>
Wed, 20 Dec 2017 18:45:34 +0000 (10:45 -0800)
This patch checks keypresses in both loops inside the main loop,
ensuring that the monitor quits soon after the user presses 'q'.

Change-Id: I5889d1958e6c3887cde715feac4bc3cb87b67f34
Signed-off-by: Stephen Kitt <skitt@redhat.com>
Signed-off-by: Jamo Luhrsen <jluhrsen@redhat.com>
tools/clustering/cluster-monitor/monitor.py

index 3c8c44b3616c2a500a9d74bdbf9f92a71203849e..a36cd50273349874839c11d59e19619aa09d8e13 100755 (executable)
@@ -136,14 +136,18 @@ curses.init_pair(3, curses.COLOR_WHITE, curses.COLOR_BLUE)
 curses.init_pair(4, curses.COLOR_WHITE, curses.COLOR_YELLOW)
 curses.init_pair(5, curses.COLOR_BLACK, curses.COLOR_YELLOW)
 
-key = ''
+key = -1
 controller_len = 0
 field_len = 0
 while key != ord('q') and key != ord('Q'):
-    key = stdscr.getch()
+    key = max(key, stdscr.getch())
 
     # Retrieve controller names and shard names.
     for controller in controllers:
+        key = max(key, stdscr.getch())
+        if key == ord('q') or key == ord('Q'):
+            break
+
         url = "http://" + controller["ip"] + ":" + controller["port"]\
               + "/jolokia/read/org.opendaylight.controller:"
         url += "Category=ShardManager,name=shard-manager-" + data_store.lower()\
@@ -181,6 +185,10 @@ while key != ord('q') and key != ord('Q'):
     # display shard status
     odd_or_even = 0
     for data_column, shard_name in enumerate(Shards):
+        key = max(key, stdscr.getch())
+        if key == ord('q') or key == ord('Q'):
+            break
+
         odd_or_even += 1
         if shard_name not in shards_to_exclude:
             cluster_stat = getClusterRolesWithCurl(shard_name, controllers)