scripts/kvm/kvm_stat: Add interactive filtering

Interactively changing the filter is much more useful than the
drilldown, because it is more versatile.

With this patch, the filter can be changed by pressing 'f' in the text
ui and entering a new filter regex.

Signed-off-by: Janosch Frank <frankja@linux.vnet.ibm.com>
Message-Id: <1452525484-32309-34-git-send-email-frankja@linux.vnet.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Janosch Frank 2016-01-11 16:18:03 +01:00 committed by Paolo Bonzini
parent 126b33e619
commit 7f786a9a06

View File

@ -634,6 +634,28 @@ class Tui(object):
row += 1
self.screen.refresh()
def show_filter_selection(self):
while True:
self.screen.erase()
self.screen.addstr(0, 0,
"Show statistics for events matching a regex.",
curses.A_BOLD)
self.screen.addstr(2, 0,
"Current regex: {0}"
.format(self.stats.fields_filter))
self.screen.addstr(3, 0, "New regex: ")
curses.echo()
regex = self.screen.getstr()
curses.noecho()
if len(regex) == 0:
return
try:
re.compile(regex)
self.stats.fields_filter = regex
return
except re.error:
continue
def show_stats(self):
sleeptime = 0.25
while True:
@ -647,6 +669,8 @@ class Tui(object):
self.update_drilldown()
if char == 'q':
break
if char == 'f':
self.show_filter_selection()
except KeyboardInterrupt:
break
except curses.error: