]> git.proxmox.com Git - pmg-api.git/commitdiff
api: node status: return structured info about current kernel
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 26 Feb 2024 14:57:47 +0000 (15:57 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 26 Feb 2024 15:08:59 +0000 (16:08 +0100)
Makes it easier to show selectively what's important, as the whole
string got quite a bit unwieldy lately.

Mirrors commit 20ad4e0e ("api: nodes: add full info about current
kernel from uname call") from pve-manager.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
src/PMG/API2/Nodes.pm

index 873434b6d55ebd46063fda71d98158c51d63f6b9..c1a39e157d36fdb2b8a37337b3c5cad402714c41 100644 (file)
@@ -679,6 +679,19 @@ __PACKAGE__->register_method({
        return undef;
     }});
 
+my sub get_current_kernel_info {
+    my ($sysname, $nodename, $release, $version, $machine) = POSIX::uname();
+
+    my $kernel_version_string = "$sysname $release $version"; # for legacy compat
+    my $current_kernel = {
+       sysname => $sysname,
+       release => $release,
+       version => $version,
+       machine => $machine,
+    };
+    return ($current_kernel, $kernel_version_string);
+}
+
 __PACKAGE__->register_method({
     name => 'status',
     path => 'status',
@@ -711,6 +724,28 @@ __PACKAGE__->register_method({
                description => "Database is synced with other nodes.",
                type => 'boolean',
            },
+           'current-kernel' => {
+               description => "Meta-information about the currently booted kernel.",
+               type => 'object',
+               properties => {
+                   sysname => {
+                       description => 'OS kernel name (e.g., "Linux")',
+                       type => 'string',
+                   },
+                   release => {
+                       description => 'OS kernel release (e.g., "6.8.0")',
+                       type => 'string',
+                   },
+                   version => {
+                       description => 'OS kernel version with build info',
+                       type => 'string',
+                   },
+                   machine => {
+                       description => 'Hardware (architecture) type',
+                       type => 'string',
+                   },
+               },
+           },
         },
     },
     code => sub {
@@ -737,9 +772,9 @@ __PACKAGE__->register_method({
        my ($avg1, $avg5, $avg15) = PVE::ProcFSTools::read_loadavg();
        $res->{loadavg} = [ $avg1, $avg5, $avg15];
 
-       my ($sysname, $nodename, $release, $version, $machine) = POSIX::uname();
-
-       $res->{kversion} = "$sysname $release $version";
+       my ($current_kernel_info, $kversion_string) = get_current_kernel_info();
+       $res->{kversion} = $kversion_string;
+       $res->{'current-kernel'} = $current_kernel_info;
 
        $res->{cpuinfo} = PVE::ProcFSTools::read_cpuinfo();