diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-06-07 22:49:02 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2020-06-07 22:49:04 +0200 |
commit | dec99e036a466fbdba2faa17002707b920933db3 (patch) | |
tree | 0f6d5edf8af6119848360052870d09d66e64e8b4 /src/op_mode | |
parent | cfeebf30947f70d92ea24bd5962b3092f7db8341 (diff) | |
download | vyos-1x-dec99e036a466fbdba2faa17002707b920933db3.tar.gz vyos-1x-dec99e036a466fbdba2faa17002707b920933db3.zip |
op-mode: T2558: version: split out CPU info
Instead of using "show version" as catch-all command for information rather
add "show system cpu" op-mode command which is analogous to "show system memory"
which deals with RAM.
Diffstat (limited to 'src/op_mode')
-rwxr-xr-x | src/op_mode/show_cpu.py | 61 | ||||
-rwxr-xr-x | src/op_mode/show_version.py (renamed from src/op_mode/version.py) | 25 |
2 files changed, 66 insertions, 20 deletions
diff --git a/src/op_mode/show_cpu.py b/src/op_mode/show_cpu.py new file mode 100755 index 000000000..0a540da1d --- /dev/null +++ b/src/op_mode/show_cpu.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2016-2020 VyOS maintainers and contributors +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 or later as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import json + +from jinja2 import Template +from sys import exit +from vyos.util import popen, DEVNULL + +OUT_TMPL_SRC = """ +{%- if cpu -%} +{% if 'vendor' in cpu %}CPU Vendor: {{cpu.vendor}}{%- endif %} +{% if 'model' in cpu %}Model: {{cpu.model}}{%- endif %} +{% if 'cpus' in cpu %}Total CPUs: {{cpu.cpus}}{%- endif %} +{% if 'sockets' in cpu %}Sockets: {{cpu.sockets}}{%- endif %} +{% if 'cores' in cpu %}Cores: {{cpu.cores}}{%- endif %} +{% if 'threads' in cpu %}Threads: {{cpu.threads}}{%- endif %} +{% if 'mhz' in cpu %}Current MHz: {{cpu.mhz}}{%- endif %} +{% if 'mhz_min' in cpu %}Minimum MHz: {{cpu.mhz_min}}{%- endif %} +{% if 'mhz_max' in cpu %}Maximum MHz: {{cpu.mhz_max}}{%- endif %} +{% endif %} +""" + +cpu = {} +cpu_json, code = popen('lscpu -J', stderr=DEVNULL) + +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: + tmp = { 'cpu':cpu } + tmpl = Template(OUT_TMPL_SRC) + print(tmpl.render(tmp)) + exit(0) +else: + print('CPU information could not be determined\n') + exit(1) diff --git a/src/op_mode/version.py b/src/op_mode/show_version.py index 160aa9f26..d0d5c6785 100755 --- a/src/op_mode/version.py +++ b/src/op_mode/show_version.py @@ -18,14 +18,12 @@ # Displays image version and system information. # Used by the "run show version" command. -import sys import argparse -import json -import jinja2 - import vyos.version import vyos.limericks +from jinja2 import Template +from sys import exit from vyos.util import call parser = argparse.ArgumentParser() @@ -45,18 +43,6 @@ Build Commit ID: {{build_git}} Architecture: {{system_arch}} Boot via: {{boot_via}} System type: {{system_type}} -{% if cpu %} - -{% if 'vendor' in cpu %}CPU Vendor: {{cpu.vendor}}{% endif %} -{% if 'model' in cpu %}Model: {{cpu.model}}{% endif %} -{% if 'cpus' in cpu %}Total CPUs: {{cpu.cpus}}{% endif %} -{% if 'sockets' in cpu %}Sockets: {{cpu.sockets}}{% endif %} -{% if 'cores' in cpu %}Cores: {{cpu.cores}}{% endif %} -{% if 'threads' in cpu %}Threads: {{cpu.threads}}{% endif %} -{% if 'mhz' in cpu %}Current MHz: {{cpu.mhz}}{% endif %} -{% if 'mhz_min' in cpu %}Minimum MHz: {{cpu.mhz_min}}{% endif %} -{% if 'mhz_max' in cpu %}Maximum MHz: {{cpu.mhz_max}}{% endif %} -{% endif %} Hardware vendor: {{hardware_vendor}} Hardware model: {{hardware_model}} @@ -72,14 +58,13 @@ if __name__ == '__main__': version_data = vyos.version.get_full_version_data() if args.json: + import json print(json.dumps(version_data)) - sys.exit(0) + exit(0) - tmpl = jinja2.Template(version_output_tmpl) + tmpl = Template(version_output_tmpl) print(tmpl.render(version_data)) - #print(version_output_tmpl.format(**version_data).strip()) - if args.all: print("Package versions:") call("dpkg -l") |