[PATCH] Improve code to retrieve the number of host CPUs

- 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@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 -- 1.9.1

Reviewed-by: Aline Manera <alinefm@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@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

Applied. Thanks. Regards, Aline Manera
participants (2)
-
Aline Manera
-
Jose Ricardo Ziviani