From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 921481FF144 for ; Tue, 24 Mar 2026 19:36:00 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 60D621CD40; Tue, 24 Mar 2026 19:36:18 +0100 (CET) From: Daniel Kral To: pve-devel@lists.proxmox.com Subject: [PATCH ha-manager v2 25/40] sim: hardware: add set-dynamic-stats command Date: Tue, 24 Mar 2026 19:30:09 +0100 Message-ID: <20260324183029.1274972-26-d.kral@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260324183029.1274972-1-d.kral@proxmox.com> References: <20260324183029.1274972-1-d.kral@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1774376989250 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.058 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: TXCQKQ2INTS6ZL5AZBA4AGCV3W7U4VXS X-Message-ID-Hash: TXCQKQ2INTS6ZL5AZBA4AGCV3W7U4VXS X-MailFrom: d.kral@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Dominik Rusovac Add command to set dynamic service stats and handle respective commands set-dynamic-stats and set-static-stats analogously. Signed-off-by: Dominik Rusovac Signed-off-by: Daniel Kral --- changes v1 -> v2: - new! wrt v1: - merge the two branches for set-static-stats and set-dynamic-stats commands to avoid code duplication src/PVE/HA/Sim/Hardware.pm | 34 ++++++++++++++++++++++++++-------- src/PVE/HA/Sim/RTHardware.pm | 4 +++- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/PVE/HA/Sim/Hardware.pm b/src/PVE/HA/Sim/Hardware.pm index cb4a1504..89180ad7 100644 --- a/src/PVE/HA/Sim/Hardware.pm +++ b/src/PVE/HA/Sim/Hardware.pm @@ -795,7 +795,8 @@ sub get_cfs_state { # service stop # service lock/unlock [lockname] # service add [] [] -# service set-static-stats +# service set-static-stats [maxcpu ] [maxmem ] +# service set-dynamic-stats [cpu ] [mem ] # service delete sub sim_hardware_cmd { my ($self, $cmdstr, $logid) = @_; @@ -945,15 +946,32 @@ sub sim_hardware_cmd { $params[2] || 0, ); - } elsif ($action eq 'set-static-stats') { - die "sim_hardware_cmd: missing maxcpu for '$action' command" if !$params[0]; - die "sim_hardware_cmd: missing maxmem for '$action' command" if !$params[1]; + } elsif ($action eq 'set-static-stats' || $action eq 'set-dynamic-stats') { + die "sim_hardware_cmd: missing target stat for '$action' command" + if !@params; - $self->set_static_service_stats( - $sid, - { maxcpu => 0.0 + $params[0], maxmem => int($params[1]) }, - ); + my $conversions = + $action eq 'set-static-stats' + ? { maxcpu => sub { 0.0 + $_[0] }, maxmem => sub { $_[0] * 1024**2 } } + : { cpu => sub { 0.0 + $_[0] }, mem => sub { $_[0] * 1024**2 } }; + my %new_stats; + for my ($target, $val) (@params) { + die "sim_hardware_cmd: missing value for '$action $target' command" + if !defined($val); + + my $convert = $conversions->{$target} + or die + "sim_hardware_cmd: unknown target stat '$target' for '$action' command"; + + $new_stats{$target} = $convert->($val); + } + + if ($action eq 'set-static-stats') { + $self->set_static_service_stats($sid, \%new_stats); + } else { + $self->set_dynamic_service_stats($sid, \%new_stats); + } } elsif ($action eq 'delete') { $self->delete_service($sid); diff --git a/src/PVE/HA/Sim/RTHardware.pm b/src/PVE/HA/Sim/RTHardware.pm index 9a83d098..9528f542 100644 --- a/src/PVE/HA/Sim/RTHardware.pm +++ b/src/PVE/HA/Sim/RTHardware.pm @@ -532,7 +532,9 @@ sub show_service_add_dialog { my $maxcpu = $cpu_count_spin->get_value(); my $maxmem = $memory_spin->get_value(); - $self->sim_hardware_cmd("service $sid set-static-stats $maxcpu $maxmem", 'command'); + $self->sim_hardware_cmd( + "service $sid set-static-stats maxcpu $maxcpu maxmem $maxmem", 'command', + ); $self->add_service_to_gui($sid); } -- 2.47.3