[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 22/34] scripts/kvm/kvm_stat: Cleanup of Stats class
From: |
Janosch Frank |
Subject: |
[Qemu-devel] [PATCH 22/34] scripts/kvm/kvm_stat: Cleanup of Stats class |
Date: |
Thu, 10 Dec 2015 13:12:52 +0100 |
Converted class definition to new style and renamed improper named
variables.
Introduced property for fields_filter.
Moved member variable declaration to init, so one can see all class
variables when reading the init method.
Completely clear the values dict, as we don't need to keep single values.
---
scripts/kvm/kvm_stat | 52 +++++++++++++++++++++++++++++++---------------------
1 file changed, 31 insertions(+), 21 deletions(-)
diff --git a/scripts/kvm/kvm_stat b/scripts/kvm/kvm_stat
index 868c6a5..f14af44 100755
--- a/scripts/kvm/kvm_stat
+++ b/scripts/kvm/kvm_stat
@@ -466,31 +466,41 @@ class DebugfsProvider(object):
return int(file(PATH_DEBUGFS + '/' + key).read())
return dict([(key, val(key)) for key in self._fields])
-class Stats:
+class Stats(object):
def __init__(self, providers, fields=None):
self.providers = providers
- self.fields_filter = fields
- self._update()
- def _update(self):
+ self._fields_filter = fields
+ self.values = {}
+ self.update_provider_filters()
+
+ def update_provider_filters(self):
def wanted(key):
- if not self.fields_filter:
+ if not self._fields_filter:
return True
- return re.match(self.fields_filter, key) is not None
- self.values = dict()
- for d in self.providers:
- provider_fields = [key for key in d.fields if wanted(key)]
- for key in provider_fields:
- self.values[key] = None
- d.fields = provider_fields
- def set_fields_filter(self, fields_filter):
- self.fields_filter = fields_filter
- self._update()
+ return re.match(self._fields_filter, key) is not None
+
+ # As we reset the counters when updating the fields we can
+ # also clear the cache of old values.
+ self.values = {}
+ for provider in self.providers:
+ provider_fields = [key for key in provider.fields if wanted(key)]
+ provider.fields = provider_fields
+
+ @property
+ def fields_filter(self):
+ return self._fields_filter
+
+ @fields_filter.setter
+ def fields_filter(self, fields_filter):
+ self._fields_filter = fields_filter
+ self.update_provider_filters()
+
def get(self):
- for d in self.providers:
- new = d.read()
- for key in d.fields:
+ for provider in self.providers:
+ new = provider.read()
+ for key in provider.fields:
oldval = self.values.get(key, (0, 0))
- newval = new[key]
+ newval = new.get(key, 0)
newdelta = None
if oldval is not None:
newdelta = newval - oldval[0]
@@ -508,9 +518,9 @@ def tui(screen, stats):
def update_drilldown():
if not fields_filter:
if drilldown:
- stats.set_fields_filter(None)
+ stats.fields_filter = None
else:
- stats.set_fields_filter(r'^[^\(]*$')
+ stats.fields_filter = r'^[^\(]*$'
update_drilldown()
def refresh(sleeptime):
screen.erase()
--
2.3.0
- [Qemu-devel] [PATCH 12/34] scripts/kvm/kvm_stat: Moved DebugfsProvider, (continued)
- [Qemu-devel] [PATCH 12/34] scripts/kvm/kvm_stat: Moved DebugfsProvider, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 32/34] scripts/kvm/kvm_stat: Fix rlimit for unprivileged users, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 13/34] scripts/kvm/kvm_stat: Fixup syscall error reporting, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 34/34] scripts/kvm/kvm_stat: Add interactive filtering, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 03/34] scripts/kvm/kvm_stat: Make constants uppercase, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 17/34] scripts/kvm/kvm_stat: Rename _perf_event_open, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 18/34] scripts/kvm/kvm_stat: Introduce properties for providers, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 21/34] scripts/kvm/kvm_stat: Encapsulate filters variable, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 23/34] scripts/kvm/kvm_stat: Cleanup of Groups class, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 16/34] scripts/kvm/kvm_stat: Make cpu detection a function, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 22/34] scripts/kvm/kvm_stat: Cleanup of Stats class,
Janosch Frank <=
- [Qemu-devel] [PATCH 26/34] scripts/kvm/kvm_stat: Remove unneeded X86_EXIT_REASONS, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 10/34] scripts/kvm/kvm_stat: Fix spaces around keyword assignments, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 29/34] scripts/kvm/kvm_stat: Move to argparse and add description, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 27/34] scripts/kvm/kvm_stat: Make tui function a class, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 24/34] scripts/kvm/kvm_stat: Cleanup of Event class, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 33/34] scripts/kvm/kvm_stat: Fixup filtering, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 11/34] scripts/kvm/kvm_stat: Rename variables that redefine globals, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 06/34] scripts/kvm/kvm_stat: Invert dictionaries, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 15/34] scripts/kvm/kvm_stat: Cleanup of platform detection, Janosch Frank, 2015/12/10
- [Qemu-devel] [PATCH 19/34] scripts/kvm/kvm_stat: Cleanup of TracepointProvider, Janosch Frank, 2015/12/10