public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal