From: Alexandre Derumier <aderumier@odiso.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH pve-ha-manager 2/3] tests: add support for ressources
Date: Mon, 13 Dec 2021 08:43:15 +0100 [thread overview]
Message-ID: <20211213074316.2565139-3-aderumier@odiso.com> (raw)
In-Reply-To: <20211213074316.2565139-1-aderumier@odiso.com>
---
src/PVE/HA/Sim/Hardware.pm | 61 ++++++++++++++++++++++++++++++++++++++
src/PVE/HA/Sim/TestEnv.pm | 33 +++++++++++++--------
2 files changed, 82 insertions(+), 12 deletions(-)
diff --git a/src/PVE/HA/Sim/Hardware.pm b/src/PVE/HA/Sim/Hardware.pm
index ba731e5..396e8bd 100644
--- a/src/PVE/HA/Sim/Hardware.pm
+++ b/src/PVE/HA/Sim/Hardware.pm
@@ -109,6 +109,22 @@ sub read_service_config {
return $conf;
}
+sub read_service_stats {
+ my ($self) = @_;
+
+ my $filename = "$self->{statusdir}/service_stats";
+ my $conf = PVE::HA::Tools::read_json_from_file($filename);
+ return $conf;
+}
+
+sub read_node_stats {
+ my ($self) = @_;
+
+ my $filename = "$self->{statusdir}/node_stats";
+ my $conf = PVE::HA::Tools::read_json_from_file($filename);
+ return $conf;
+}
+
sub update_service_config {
my ($self, $sid, $param) = @_;
@@ -132,6 +148,24 @@ sub write_service_config {
return PVE::HA::Tools::write_json_to_file($filename, $conf);
}
+sub write_service_stats {
+ my ($self, $conf) = @_;
+
+ $self->{service_stats} = $conf;
+
+ my $filename = "$self->{statusdir}/service_stats";
+ return PVE::HA::Tools::write_json_to_file($filename, $conf);
+}
+
+sub write_node_stats {
+ my ($self, $conf) = @_;
+
+ $self->{node_stats} = $conf;
+
+ my $filename = "$self->{statusdir}/node_stats";
+ return PVE::HA::Tools::write_json_to_file($filename, $conf);
+}
+
sub read_fence_config {
my ($self) = @_;
@@ -382,6 +416,31 @@ sub new {
$self->write_service_config($conf);
}
+ if (-f "$testdir/service_stats") {
+ copy("$testdir/service_stats", "$statusdir/service_stats");
+ } else {
+ my $conf = {
+ '101' => { cpu => 0, maxcpu => 0, mem => 0, maxmem => 0 },
+ '102' => { cpu => 0, maxcpu => 0, mem => 0, maxmem => 0 },
+ '103' => { cpu => 0, maxcpu => 0, mem => 0, maxmem => 0 },
+ '104' => { cpu => 0, maxcpu => 0, mem => 0, maxmem => 0 },
+ '105' => { cpu => 0, maxcpu => 0, mem => 0, maxmem => 0 },
+ '106' => { cpu => 0, maxcpu => 0, mem => 0, maxmem => 0 },
+ };
+ $self->write_service_stats($conf);
+ }
+
+ if (-f "$testdir/node_stats") {
+ copy("$testdir/node_stats", "$statusdir/node_stats");
+ } else {
+ my $conf = {
+ 'node1' => { cpu => 0, maxcpu => 0, mem => 0, maxmem => 0 },
+ 'node2' => { cpu => 0, maxcpu => 0, mem => 0, maxmem => 0 },
+ 'node3' => { cpu => 0, maxcpu => 0, mem => 0, maxmem => 0 },
+ };
+ $self->write_node_stats($conf);
+ }
+
if (-f "$testdir/hardware_status") {
copy("$testdir/hardware_status", "$statusdir/hardware_status") ||
die "Copy failed: $!\n";
@@ -415,6 +474,8 @@ sub new {
}
$self->{service_config} = $self->read_service_config();
+ $self->{service_stats} = $self->read_service_stats();
+ $self->{node_stats} = $self->read_node_stats();
return $self;
}
diff --git a/src/PVE/HA/Sim/TestEnv.pm b/src/PVE/HA/Sim/TestEnv.pm
index 08f27c7..d5e85ad 100644
--- a/src/PVE/HA/Sim/TestEnv.pm
+++ b/src/PVE/HA/Sim/TestEnv.pm
@@ -121,11 +121,8 @@ sub get_max_workers {
sub get_node_rrd_stats {
my ($self, $node) = @_;
- my $stats = {};
- $stats->{cpu} = 0;
- $stats->{maxcpu} = 0;
- $stats->{mem} = 0;
- $stats->{maxmem} = 0;
+ my $nodestats = $self->{hardware}->{node_stats};
+ my $stats = $nodestats->{$node};
return $stats;
}
@@ -133,16 +130,28 @@ sub get_node_rrd_stats {
sub get_vm_rrd_stats {
my ($self, $vmid, $percentile) = @_;
- my $stats = {};
+ my $vmstats = $self->{hardware}->{service_stats};
+ my $stats = $vmstats->{$vmid};
- $stats->{cpu} = 0;
- $stats->{mem} = 0;
- $stats->{maxmem} = 0;
- $stats->{maxcpu} = 0;
- $stats->{cpu} = $stats->{cpu} * 100;
- $stats->{totalcpu} = $stats->{cpu} * $stats->{maxcpu};
+ $stats->{cpu} = $stats->{cpu} || 0;
+ $stats->{mem} = $stats->{mem} || 0;
+ $stats->{maxmem} = $stats->{maxmem} || 0;
+ $stats->{maxcpu} = $stats->{maxcpu} || 0;
+ $stats->{totalcpu} = $stats->{cpu} * $stats->{maxcpu} * 100;
return $stats;
}
+sub read_vm_config {
+ my ($self, $vmid) = @_;
+
+ die "not yet implemented";
+}
+
+sub read_ct_config {
+ my ($self, $vmid) = @_;
+
+ die "not yet implemented";
+}
+
1;
--
2.30.2
next prev parent reply other threads:[~2021-12-13 7:43 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-13 7:43 [pve-devel] [PATCH pve-ha-manager 0/3] POC/RFC: ressource aware HA manager Alexandre Derumier
2021-12-13 7:43 ` [pve-devel] [PATCH pve-ha-manager 1/3] add ressource awareness manager Alexandre Derumier
2021-12-13 10:04 ` Thomas Lamprecht
2021-12-13 10:58 ` DERUMIER, Alexandre
2021-12-13 11:29 ` Thomas Lamprecht
2021-12-13 7:43 ` Alexandre Derumier [this message]
2021-12-13 7:43 ` [pve-devel] [PATCH pve-ha-manager 3/3] add test-basic0 Alexandre Derumier
2021-12-13 9:02 ` [pve-devel] [PATCH pve-ha-manager 0/3] POC/RFC: ressource aware HA manager Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211213074316.2565139-3-aderumier@odiso.com \
--to=aderumier@odiso.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox