Am 28.01.26 um 1:29 PM schrieb Dominik Csapak: > in case a nodes runs a non-x86 kernel, broadcast that info into the
typo: nodes -> node > 'static-info' hash to pmxcfs (once). Use that info to add an > 'architecture' property to /cluster/resources. > > x86 nodes won't return a value here. > > Use 'POSIX::uname' for determining the architecture (from the running > kernel). POSIX is used in this module anyway but was missing in the > imports. > > Signed-off-by: Dominik Csapak <[email protected]> > --- > PVE/API2/Cluster.pm | 9 +++++++++ > PVE/API2/Nodes.pm | 3 ++- > PVE/Service/pvestatd.pm | 10 ++++++++++ > 3 files changed, 21 insertions(+), 1 deletion(-) > > diff --git a/PVE/API2/Cluster.pm b/PVE/API2/Cluster.pm > index d6003a7d..73b948b5 100644 > --- a/PVE/API2/Cluster.pm > +++ b/PVE/API2/Cluster.pm > @@ -484,6 +484,12 @@ __PACKAGE__->register_method({ > type => "string", > optional => 1, > }, > + architecture => { > + description => "The nodes CPU architecture. (for type > 'node').", typo: nodes -> node's > + type => 'string', could also be an enum > + default => 'x86_64', > + optional => 1, > + }, > }, > }, > }, > @@ -608,6 +614,9 @@ __PACKAGE__->register_method({ > if (defined(my $mode = $info->{'cgroup-mode'})) { > $entry->{'cgroup-mode'} = int($mode); > } > + if (defined(my $architecture = $info->{architecture})) { > + $entry->{architecture} = $architecture; > + } > if (defined(my $status = $hastatus->{node_status}->{$node})) > { > $entry->{'hastate'} = $status; > } > diff --git a/PVE/API2/Nodes.pm b/PVE/API2/Nodes.pm > index 5bd6fe49..9fddea9f 100644 > --- a/PVE/API2/Nodes.pm > +++ b/PVE/API2/Nodes.pm > @@ -502,7 +502,8 @@ __PACKAGE__->register_method({ > my ($avg1, $avg5, $avg15) = PVE::ProcFSTools::read_loadavg(); > $res->{loadavg} = [$avg1, $avg5, $avg15]; > > - my ($current_kernel_info, $kversion_string) = > get_current_kernel_info(); > + my ($current_kernel_info, $kversion_string) = > + PVE::NodeConfig::get_current_kernel_info(); Seems like an unrelated hunk from an older iteration of the patch? > $res->{kversion} = $kversion_string; > $res->{'current-kernel'} = $current_kernel_info; > > diff --git a/PVE/Service/pvestatd.pm b/PVE/Service/pvestatd.pm > index 98d421f4..05f4061e 100755 > --- a/PVE/Service/pvestatd.pm > +++ b/PVE/Service/pvestatd.pm > @@ -7,6 +7,7 @@ use PVE::SafeSyslog; > use PVE::Daemon; > > use JSON; > +use POSIX qw(); > > use Time::HiRes qw (gettimeofday); > use PVE::Tools qw(dir_glob_foreach file_read_firstline); > @@ -138,6 +139,8 @@ my sub broadcast_static_node_info { > my $cgroup_mode = eval { PVE::CGroup::cgroup_mode(); }; > syslog('err', "cgroup mode error: $@") if $@; > > + my (undef, undef, undef, undef, $architecture) = POSIX::uname(); > + > my $old = PVE::Cluster::get_node_kv('static-info', $nodename); > $old = eval { decode_json($old->{$nodename}) } if > defined($old->{$nodename}); > > @@ -147,11 +150,18 @@ my sub broadcast_static_node_info { > || !defined($old->{memory}) > || $old->{memory} != $memory > || ($old->{'cgroup-mode'} // -1) != ($cgroup_mode // -1) > + || (defined($architecture) > + && $architecture ne 'x86_64' > + && (!defined($old->{architecture}) || $old->{architecture} ne > $architecture)) > ) { > my $info = { > cpus => $cpus, > memory => $memory, > }; > + > + # only save architecture info for non-x86 ones > + $info->{architecture} = $architecture; > + > $info->{'cgroup-mode'} = $cgroup_mode if defined($cgroup_mode); > PVE::Cluster::broadcast_node_kv('static-info', encode_json($info)); > } _______________________________________________ pve-devel mailing list [email protected] https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
