Reviewed-by: Aline Manera <alinefm(a)linux.vnet.ibm.com>
On 27/04/2015 21:50, Jose Ricardo Ziviani wrote:
- Retrieving the number of cpus using psinfo is unstable, there
are three (at least) different ways to do it that changes from
version to version. This code improves the way such functions
are called to avoid any surprise in future.
Signed-off-by: Jose Ricardo Ziviani <joserz(a)linux.vnet.ibm.com>
---
src/kimchi/model/host.py | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/kimchi/model/host.py b/src/kimchi/model/host.py
index 293c4ce..b2fa379 100644
--- a/src/kimchi/model/host.py
+++ b/src/kimchi/model/host.py
@@ -102,15 +102,20 @@ class HostModel(object):
return res
def lookup(self, *name):
- cpus = 0
+ cpus = psutil.NUM_CPUS
- # Only newer psutil versions have a portable method to get
- # the number of cpus
- try:
+ # psutil is unstable on how to get the number of
+ # cpus, different versions call it differently
+ if hasattr(psutil, 'cpu_count'):
cpus = psutil.cpu_count()
- except AttributeError:
- cpus = psutil._psplatform.get_num_cpus()
+ elif hasattr(psutil, '_psplatform'):
+ for method_name in ['_get_num_cpus', 'get_num_cpus']:
+
+ method = getattr(psutil._psplatform, method_name, None)
+ if method is not None:
+ cpus = method()
+ break
self.host_info['cpus'] = cpus
self.host_info['memory'] = psutil.phymem_usage().total