* [pve-devel] [RFC ha-manager 0/5] make simulator standalone again
@ 2025-09-22 12:04 Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 1/5] fix #6839: move PVE::Notify usage to "real" Env Fabian Grünbichler
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Fabian Grünbichler @ 2025-09-22 12:04 UTC (permalink / raw)
To: pve-devel
by moving PVE::Notify to the actual site where it is used, and adapting
the build parts to install PVE::HA::Usage::Basic and PVE::HA::Rules::*
in the simulator as well.
CRS is not supported for now, as that would require pulling in a lot
more parts of PVE into the dependency tree of the simulator..
Fabian Grünbichler (5):
fix #6839: move PVE::Notify usage to "real" Env
build: install PVE::HA::Rules::* in simulator as well
scheduling: make static scheduling optional
build: install PVE::HA::Usage::Basic in simulator as well
sim: add Cluster.pm stub with completion stub
src/PVE/HA/Env/PVE2.pm | 5 +++++
src/PVE/HA/Makefile | 2 ++
src/PVE/HA/Manager.pm | 21 +++++++++++++++------
src/PVE/HA/NodeStatus.pm | 4 +---
src/PVE/HA/Rules/Makefile | 8 +++++++-
src/PVE/HA/Sim/Cluster.pm | 11 +++++++++++
src/PVE/HA/Sim/Makefile | 2 ++
src/PVE/HA/Usage/Makefile | 8 +++++++-
8 files changed, 50 insertions(+), 11 deletions(-)
create mode 100644 src/PVE/HA/Sim/Cluster.pm
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
* [pve-devel] [PATCH ha-manager 1/5] fix #6839: move PVE::Notify usage to "real" Env
2025-09-22 12:04 [pve-devel] [RFC ha-manager 0/5] make simulator standalone again Fabian Grünbichler
@ 2025-09-22 12:04 ` Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 2/5] build: install PVE::HA::Rules::* in simulator as well Fabian Grünbichler
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Fabian Grünbichler @ 2025-09-22 12:04 UTC (permalink / raw)
To: pve-devel
instead of doing it in PVE::NodeStatus, which is also pulled into the
simulator.
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
alternatively, we could also use the $have_.. / require hack here?
src/PVE/HA/Env/PVE2.pm | 5 +++++
src/PVE/HA/NodeStatus.pm | 4 +---
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/PVE/HA/Env/PVE2.pm b/src/PVE/HA/Env/PVE2.pm
index e76e86b..2cec6f2 100644
--- a/src/PVE/HA/Env/PVE2.pm
+++ b/src/PVE/HA/Env/PVE2.pm
@@ -261,6 +261,11 @@ sub log {
sub send_notification {
my ($self, $template_name, $template_data, $metadata_fields) = @_;
+ # set here to avoid pulling in notification stack in simulator
+ my $common_data = PVE::Notify::common_template_data();
+ for my $key (keys $common_data->%*) {
+ $template_data->{$key} = $common_data->{$key} if !$template_data->{$key};
+ }
eval { PVE::Notify::error($template_name, $template_data, $metadata_fields); };
$self->log("warning", "could not notify: $@") if $@;
diff --git a/src/PVE/HA/NodeStatus.pm b/src/PVE/HA/NodeStatus.pm
index 0d04cd5..1512ae2 100644
--- a/src/PVE/HA/NodeStatus.pm
+++ b/src/PVE/HA/NodeStatus.pm
@@ -3,8 +3,6 @@ package PVE::HA::NodeStatus;
use strict;
use warnings;
-use PVE::Notify;
-
use JSON;
my $fence_delay = 60;
@@ -195,7 +193,7 @@ my $send_fence_state_email = sub {
my $haenv = $self->{haenv};
my $status = $haenv->read_manager_status();
- my $template_data = PVE::Notify::common_template_data();
+ my $template_data = {};
# Those two are needed for the expected output for test cases,
# see src/PVE/HA/Sim/Env.pm
$template_data->{"fence-status"} = $subject;
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
* [pve-devel] [PATCH ha-manager 2/5] build: install PVE::HA::Rules::* in simulator as well
2025-09-22 12:04 [pve-devel] [RFC ha-manager 0/5] make simulator standalone again Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 1/5] fix #6839: move PVE::Notify usage to "real" Env Fabian Grünbichler
@ 2025-09-22 12:04 ` Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 3/5] scheduling: make static scheduling optional Fabian Grünbichler
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Fabian Grünbichler @ 2025-09-22 12:04 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
src/PVE/HA/Makefile | 1 +
src/PVE/HA/Rules/Makefile | 8 +++++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/PVE/HA/Makefile b/src/PVE/HA/Makefile
index 8862907..f3f09a8 100644
--- a/src/PVE/HA/Makefile
+++ b/src/PVE/HA/Makefile
@@ -17,3 +17,4 @@ installsim:
install -d -m 0755 ${DESTDIR}${PERLDIR}/PVE/HA
for i in ${SIM_SOURCES}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/HA/$$i; done
make -C Sim install
+ make -C Rules installsim
diff --git a/src/PVE/HA/Rules/Makefile b/src/PVE/HA/Rules/Makefile
index 6411925..1cbde5b 100644
--- a/src/PVE/HA/Rules/Makefile
+++ b/src/PVE/HA/Rules/Makefile
@@ -1,6 +1,12 @@
-SOURCES=NodeAffinity.pm ResourceAffinity.pm
+SIM_SOURCES=NodeAffinity.pm ResourceAffinity.pm
+SOURCES=${SIM_SOURCES}
.PHONY: install
install:
install -d -m 0755 ${DESTDIR}${PERLDIR}/PVE/HA/Rules
for i in ${SOURCES}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/HA/Rules/$$i; done
+
+.PHONY: installsim
+installsim:
+ install -d -m 0755 ${DESTDIR}${PERLDIR}/PVE/HA/Rules
+ for i in ${SIM_SOURCES}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/HA/Rules/$$i; done
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
* [pve-devel] [PATCH ha-manager 3/5] scheduling: make static scheduling optional
2025-09-22 12:04 [pve-devel] [RFC ha-manager 0/5] make simulator standalone again Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 1/5] fix #6839: move PVE::Notify usage to "real" Env Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 2/5] build: install PVE::HA::Rules::* in simulator as well Fabian Grünbichler
@ 2025-09-22 12:04 ` Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 4/5] build: install PVE::HA::Usage::Basic in simulator as well Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 5/5] sim: add Cluster.pm stub with completion stub Fabian Grünbichler
4 siblings, 0 replies; 6+ messages in thread
From: Fabian Grünbichler @ 2025-09-22 12:04 UTC (permalink / raw)
To: pve-devel
it's not available in the simulator
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
src/PVE/HA/Manager.pm | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/src/PVE/HA/Manager.pm b/src/PVE/HA/Manager.pm
index ba59f64..cfd509a 100644
--- a/src/PVE/HA/Manager.pm
+++ b/src/PVE/HA/Manager.pm
@@ -14,7 +14,12 @@ use PVE::HA::Rules::NodeAffinity qw(get_node_affinity);
use PVE::HA::Rules::ResourceAffinity
qw(get_affinitive_resources get_resource_affinity apply_positive_resource_affinity apply_negative_resource_affinity);
use PVE::HA::Usage::Basic;
-use PVE::HA::Usage::Static;
+
+my $have_static_scheduling;
+eval {
+ require PVE::HA::Usage::Static;
+ $have_static_scheduling = 1;
+};
## Variable Name & Abbreviations Convention
#
@@ -244,11 +249,15 @@ sub recompute_online_node_usage {
if (my $mode = $self->{crs}->{scheduler}) {
if ($mode eq 'static') {
- $online_node_usage = eval {
- my $scheduler = PVE::HA::Usage::Static->new($haenv);
- $scheduler->add_node($_) for $online_nodes->@*;
- return $scheduler;
- };
+ if ($have_static_scheduling) {
+ $online_node_usage = eval {
+ my $scheduler = PVE::HA::Usage::Static->new($haenv);
+ $scheduler->add_node($_) for $online_nodes->@*;
+ return $scheduler;
+ };
+ } else {
+ $@ = "static scheduling not available\n";
+ }
$haenv->log(
'warning',
"fallback to 'basic' scheduler mode, init for 'static' failed - $@",
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
* [pve-devel] [PATCH ha-manager 4/5] build: install PVE::HA::Usage::Basic in simulator as well
2025-09-22 12:04 [pve-devel] [RFC ha-manager 0/5] make simulator standalone again Fabian Grünbichler
` (2 preceding siblings ...)
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 3/5] scheduling: make static scheduling optional Fabian Grünbichler
@ 2025-09-22 12:04 ` Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 5/5] sim: add Cluster.pm stub with completion stub Fabian Grünbichler
4 siblings, 0 replies; 6+ messages in thread
From: Fabian Grünbichler @ 2025-09-22 12:04 UTC (permalink / raw)
To: pve-devel
only install Basic module, as the Static one has additional dependencies
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
src/PVE/HA/Makefile | 1 +
src/PVE/HA/Usage/Makefile | 8 +++++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/PVE/HA/Makefile b/src/PVE/HA/Makefile
index f3f09a8..0b240e1 100644
--- a/src/PVE/HA/Makefile
+++ b/src/PVE/HA/Makefile
@@ -18,3 +18,4 @@ installsim:
for i in ${SIM_SOURCES}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/HA/$$i; done
make -C Sim install
make -C Rules installsim
+ make -C Usage installsim
diff --git a/src/PVE/HA/Usage/Makefile b/src/PVE/HA/Usage/Makefile
index 5a51359..befdda6 100644
--- a/src/PVE/HA/Usage/Makefile
+++ b/src/PVE/HA/Usage/Makefile
@@ -1,6 +1,12 @@
-SOURCES=Basic.pm Static.pm
+SIM_SOURCES=Basic.pm
+SOURCES=${SIM_SOURCES} Static.pm
.PHONY: install
install:
install -d -m 0755 ${DESTDIR}${PERLDIR}/PVE/HA/Usage
for i in ${SOURCES}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/HA/Usage/$$i; done
+
+.PHONY: installsim
+installsim:
+ install -d -m 0755 ${DESTDIR}${PERLDIR}/PVE/HA/Usage
+ for i in ${SIM_SOURCES}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/HA/Usage/$$i; done
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
* [pve-devel] [PATCH ha-manager 5/5] sim: add Cluster.pm stub with completion stub
2025-09-22 12:04 [pve-devel] [RFC ha-manager 0/5] make simulator standalone again Fabian Grünbichler
` (3 preceding siblings ...)
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 4/5] build: install PVE::HA::Usage::Basic in simulator as well Fabian Grünbichler
@ 2025-09-22 12:04 ` Fabian Grünbichler
4 siblings, 0 replies; 6+ messages in thread
From: Fabian Grünbichler @ 2025-09-22 12:04 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
the same applies here - instead of the stub, we could also conditionally
require PVE::Cluster in NodeAffinity.pm ..
src/PVE/HA/Sim/Cluster.pm | 11 +++++++++++
src/PVE/HA/Sim/Makefile | 2 ++
2 files changed, 13 insertions(+)
create mode 100644 src/PVE/HA/Sim/Cluster.pm
diff --git a/src/PVE/HA/Sim/Cluster.pm b/src/PVE/HA/Sim/Cluster.pm
new file mode 100644
index 0000000..a59be04
--- /dev/null
+++ b/src/PVE/HA/Sim/Cluster.pm
@@ -0,0 +1,11 @@
+package PVE::Cluster;
+
+use strict;
+use warnings;
+
+# used as completion helper by PVE::HA::Rules::NodeAffinity
+sub get_nodelist {
+ return;
+}
+
+1;
diff --git a/src/PVE/HA/Sim/Makefile b/src/PVE/HA/Sim/Makefile
index cb8feff..cd889db 100644
--- a/src/PVE/HA/Sim/Makefile
+++ b/src/PVE/HA/Sim/Makefile
@@ -1,7 +1,9 @@
SOURCES=Env.pm Hardware.pm TestEnv.pm TestHardware.pm RTEnv.pm RTHardware.pm Resources.pm
+STUBS=Cluster.pm
.PHONY: install
install:
install -d -m 0755 ${DESTDIR}${PERLDIR}/PVE/HA/Sim
for i in ${SOURCES}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/HA/Sim/$$i; done
+ for i in ${STUBS}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/$$i; done
make -C Resources install
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-09-22 12:06 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-09-22 12:04 [pve-devel] [RFC ha-manager 0/5] make simulator standalone again Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 1/5] fix #6839: move PVE::Notify usage to "real" Env Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 2/5] build: install PVE::HA::Rules::* in simulator as well Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 3/5] scheduling: make static scheduling optional Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 4/5] build: install PVE::HA::Usage::Basic in simulator as well Fabian Grünbichler
2025-09-22 12:04 ` [pve-devel] [PATCH ha-manager 5/5] sim: add Cluster.pm stub with completion stub Fabian Grünbichler
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.