tools/kvm_stat: add interactive command 'c'
Provide a real simple way to erase any active filter. Signed-off-by: Stefan Raspl <raspl@linux.vnet.ibm.com> Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
This commit is contained in:
committed by
Paolo Bonzini
parent
f9ff108735
commit
4443084fa0
@@ -861,6 +861,7 @@ DELAY_INITIAL = 0.25
|
|||||||
DELAY_REGULAR = 3.0
|
DELAY_REGULAR = 3.0
|
||||||
MAX_GUEST_NAME_LEN = 48
|
MAX_GUEST_NAME_LEN = 48
|
||||||
MAX_REGEX_LEN = 44
|
MAX_REGEX_LEN = 44
|
||||||
|
DEFAULT_REGEX = r'^[^\(]*$'
|
||||||
|
|
||||||
|
|
||||||
class Tui(object):
|
class Tui(object):
|
||||||
@@ -907,9 +908,9 @@ class Tui(object):
|
|||||||
def update_drilldown(self):
|
def update_drilldown(self):
|
||||||
"""Sets or removes a filter that only allows fields without braces."""
|
"""Sets or removes a filter that only allows fields without braces."""
|
||||||
if not self.stats.fields_filter:
|
if not self.stats.fields_filter:
|
||||||
self.stats.fields_filter = r'^[^\(]*$'
|
self.stats.fields_filter = DEFAULT_REGEX
|
||||||
|
|
||||||
elif self.stats.fields_filter == r'^[^\(]*$':
|
elif self.stats.fields_filter == DEFAULT_REGEX:
|
||||||
self.stats.fields_filter = None
|
self.stats.fields_filter = None
|
||||||
|
|
||||||
def update_pid(self, pid):
|
def update_pid(self, pid):
|
||||||
@@ -931,7 +932,8 @@ class Tui(object):
|
|||||||
.format(pid, gname), curses.A_BOLD)
|
.format(pid, gname), curses.A_BOLD)
|
||||||
else:
|
else:
|
||||||
self.screen.addstr(0, 0, 'kvm statistics - summary', curses.A_BOLD)
|
self.screen.addstr(0, 0, 'kvm statistics - summary', curses.A_BOLD)
|
||||||
if self.stats.fields_filter and self.stats.fields_filter != '^[^\(]*$':
|
if self.stats.fields_filter and self.stats.fields_filter \
|
||||||
|
!= DEFAULT_REGEX:
|
||||||
regex = self.stats.fields_filter
|
regex = self.stats.fields_filter
|
||||||
if len(regex) > MAX_REGEX_LEN:
|
if len(regex) > MAX_REGEX_LEN:
|
||||||
regex = regex[:MAX_REGEX_LEN] + '...'
|
regex = regex[:MAX_REGEX_LEN] + '...'
|
||||||
@@ -991,7 +993,7 @@ class Tui(object):
|
|||||||
regex = self.screen.getstr()
|
regex = self.screen.getstr()
|
||||||
curses.noecho()
|
curses.noecho()
|
||||||
if len(regex) == 0:
|
if len(regex) == 0:
|
||||||
self.stats.fields_filter = r'^[^\(]*$'
|
self.stats.fields_filter = DEFAULT_REGEX
|
||||||
self.refresh_header()
|
self.refresh_header()
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
@@ -1101,6 +1103,11 @@ class Tui(object):
|
|||||||
sleeptime = DELAY_INITIAL
|
sleeptime = DELAY_INITIAL
|
||||||
if char == 'q':
|
if char == 'q':
|
||||||
break
|
break
|
||||||
|
if char == 'c':
|
||||||
|
self.stats.fields_filter = DEFAULT_REGEX
|
||||||
|
self.refresh_header(0)
|
||||||
|
self.update_pid(0)
|
||||||
|
sleeptime = DELAY_INITIAL
|
||||||
if char == 'f':
|
if char == 'f':
|
||||||
self.show_filter_selection()
|
self.show_filter_selection()
|
||||||
sleeptime = DELAY_INITIAL
|
sleeptime = DELAY_INITIAL
|
||||||
@@ -1177,6 +1184,7 @@ Requirements:
|
|||||||
the large number of files that are possibly opened.
|
the large number of files that are possibly opened.
|
||||||
|
|
||||||
Interactive Commands:
|
Interactive Commands:
|
||||||
|
c clear filter
|
||||||
f filter by regular expression
|
f filter by regular expression
|
||||||
g filter by guest name
|
g filter by guest name
|
||||||
p filter by PID
|
p filter by PID
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ meaning of events.
|
|||||||
INTERACTIVE COMMANDS
|
INTERACTIVE COMMANDS
|
||||||
--------------------
|
--------------------
|
||||||
[horizontal]
|
[horizontal]
|
||||||
|
*c*:: clear filter
|
||||||
|
|
||||||
*f*:: filter by regular expression
|
*f*:: filter by regular expression
|
||||||
|
|
||||||
*g*:: filter by guest name
|
*g*:: filter by guest name
|
||||||
|
|||||||
Reference in New Issue
Block a user