[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 22/34] scripts/kvm/kvm_stat: Cleanup of Stats cla
From: |
Janosch Frank |
Subject: |
[Qemu-devel] [PATCH v2 22/34] scripts/kvm/kvm_stat: Cleanup of Stats class |
Date: |
Mon, 11 Jan 2016 16:17: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.
Signed-off-by: Janosch Frank <address@hidden>
---
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 7837f40..203873e 100755
--- a/scripts/kvm/kvm_stat
+++ b/scripts/kvm/kvm_stat
@@ -472,31 +472,41 @@ class DebugfsProvider(object):
return int(file(PATH_DEBUGFS_KVM + '/' + 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]
@@ -514,9 +524,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 v2 16/34] scripts/kvm/kvm_stat: Make cpu detection a function, (continued)
- [Qemu-devel] [PATCH v2 16/34] scripts/kvm/kvm_stat: Make cpu detection a function, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 12/34] scripts/kvm/kvm_stat: Moved DebugfsProvider, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 25/34] scripts/kvm/kvm_stat: Group arch specific data, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 04/34] scripts/kvm/kvm_stat: Removed unneeded PERF constants, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 02/34] scripts/kvm/kvm_stat: Replaced os.listdir with os.walk, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 08/34] scripts/kvm/kvm_stat: Improve debugfs access checking, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 29/34] scripts/kvm/kvm_stat: Cleanup and pre-init perf_event_attr, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 03/34] scripts/kvm/kvm_stat: Make constants uppercase, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 06/34] scripts/kvm/kvm_stat: Invert dictionaries, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 10/34] scripts/kvm/kvm_stat: Fix spaces around keyword assignments, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 22/34] scripts/kvm/kvm_stat: Cleanup of Stats class,
Janosch Frank <=
- [Qemu-devel] [PATCH v2 30/34] scripts/kvm/kvm_stat: Read event values as u64, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 31/34] scripts/kvm/kvm_stat: Fix rlimit for unprivileged users, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 13/34] scripts/kvm/kvm_stat: Fixup syscall error reporting, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 05/34] scripts/kvm/kvm_stat: Mark globals in functions, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 14/34] scripts/kvm/kvm_stat: Set sensible no. files rlimit, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 24/34] scripts/kvm/kvm_stat: Cleanup of Event class, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 20/34] scripts/kvm/kvm_stat: Cleanup cpu list retrieval, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 34/34] scripts/kvm/kvm_stat: Add optparse description, Janosch Frank, 2016/01/11
- [Qemu-devel] [PATCH v2 21/34] scripts/kvm/kvm_stat: Encapsulate filters variable, Janosch Frank, 2016/01/11