summaryrefslogtreecommitdiff
path: root/python/vyos/version.py
diff options
context:
space:
mode:
authorkroy-the-rabbit <kroy@kroy.io>2020-06-07 10:08:58 -0500
committerGitHub <noreply@github.com>2020-06-07 17:08:58 +0200
commit760bf1a9bcac34bd786aa62edbe9a01d03e10f99 (patch)
treef8826a8d47480c7874bcdf4517a5b754fa4471c2 /python/vyos/version.py
parent7b1773fa97772e6756646b48d3d85d12426d0ddb (diff)
downloadvyos-1x-760bf1a9bcac34bd786aa62edbe9a01d03e10f99.tar.gz
vyos-1x-760bf1a9bcac34bd786aa62edbe9a01d03e10f99.zip
op-mode: T2558: fix hypervisor bug, add CPU info to "show version"
Diffstat (limited to 'python/vyos/version.py')
-rw-r--r--python/vyos/version.py34
1 files changed, 28 insertions, 6 deletions
diff --git a/python/vyos/version.py b/python/vyos/version.py
index a524b36ea..f5eac5a58 100644
--- a/python/vyos/version.py
+++ b/python/vyos/version.py
@@ -31,6 +31,7 @@ Example of the version data dict::
import os
import json
+import logging
import vyos.defaults
@@ -76,13 +77,34 @@ def get_full_version_data(fname=version_file):
# Get system architecture (well, kernel architecture rather)
version_data['system_arch'], _ = popen('uname -m', stderr=DEVNULL)
- # Get hypervisor name, if any
- try:
- hypervisor, _ = popen('hvinfo', stderr=DEVNULL)
+ cpu_json,code = popen('lscpu -J',stderr=DEVNULL)
+
+ cpu = {}
+ if code == 0:
+ cpu_info = json.loads(cpu_json)
+ if len(cpu_info) > 0 and 'lscpu' in cpu_info:
+ for prop in cpu_info['lscpu']:
+ if (prop['field'].find('Thread(s)') > -1): cpu['threads'] = prop['data']
+ if (prop['field'].find('Core(s)')) > -1: cpu['cores'] = prop['data']
+ if (prop['field'].find('Socket(s)')) > -1: cpu['sockets'] = prop['data']
+ if (prop['field'].find('CPU(s):')) > -1: cpu['cpus'] = prop['data']
+ if (prop['field'].find('CPU MHz')) > -1: cpu['mhz'] = prop['data']
+ if (prop['field'].find('CPU min MHz')) > -1: cpu['mhz_min'] = prop['data']
+ if (prop['field'].find('CPU max MHz')) > -1: cpu['mhz_max'] = prop['data']
+ if (prop['field'].find('Vendor ID')) > -1: cpu['vendor'] = prop['data']
+ if (prop['field'].find('Model name')) > -1: cpu['model'] = prop['data']
+
+ if len(cpu) > 0:
+ version_data['cpu'] = cpu
+
+
+
+ hypervisor,code = popen('hvinfo', stderr=DEVNULL)
+ if code == 1:
+ # hvinfo returns 1 if it cannot detect any hypervisor
+ version_data['system_type'] = 'bare metal'
+ else:
version_data['system_type'] = f"{hypervisor} guest"
- except OSError:
- # hvinfo returns 1 if it cannot detect any hypervisor
- version_data['system_type'] = 'bare metal'
# Get boot type, it can be livecd, installed image, or, possible, a system installed
# via legacy "install system" mechanism