public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH container/ha-manager/qemu-server 0/5] Small HA-on-create improvements
@ 2025-11-10 14:36 Daniel Kral
  2025-11-10 14:36 ` [pve-devel] [PATCH ha-manager 1/1] api: resources: fix uninitialized value in check_service_state Daniel Kral
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Daniel Kral @ 2025-11-10 14:36 UTC (permalink / raw)
  To: pve-devel

Some small fixes and improvements while playing around with the
HA-on-create feature related mainly to the CLI usage. Two qemu-server
patches only enhance the usage by allowing --ha-managed and --start
parameters for qmrestore.

pve-ha-manager.git:

Daniel Kral (1):
  api: resources: fix uninitialized value in check_service_state

 src/PVE/API2/HA/Resources.pm | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)


qemu-server.git:

Daniel Kral (3):
  api: create_vm: use ha-manager command to add VM as an HA resource
  qmrestore: allow starting a VM after it was restored successfully
  qmrestore: allow adding a VM as an HA resource after it was restored

 src/PVE/API2/Qemu.pm     | 10 ++++------
 src/PVE/CLI/qmrestore.pm | 12 ++++++++++++
 2 files changed, 16 insertions(+), 6 deletions(-)


pve-container.git:

Daniel Kral (1):
  api: create_vm: use ha-manager command to add container as an HA
    resource

 src/PVE/API2/LXC.pm | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)


Summary over all repositories:
  4 files changed, 22 insertions(+), 10 deletions(-)

-- 
Generated by git-murpp 0.8.0


_______________________________________________
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/1] api: resources: fix uninitialized value in check_service_state
  2025-11-10 14:36 [pve-devel] [PATCH container/ha-manager/qemu-server 0/5] Small HA-on-create improvements Daniel Kral
@ 2025-11-10 14:36 ` Daniel Kral
  2025-11-10 14:36 ` [pve-devel] [PATCH qemu-server 1/3] api: create_vm: use ha-manager command to add VM as an HA resource Daniel Kral
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Daniel Kral @ 2025-11-10 14:36 UTC (permalink / raw)
  To: pve-devel

check_service_state(...) calls get_service_status(...), which assumes
that a configured HA resource is already present in the manager status.

If a HA resource is added to the configuration file and interacted with
such that check_service_state(...) is called before the HA Manager loads
the new HA resource in its state, then $service_status->{state} will be
undefined.

Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
 src/PVE/API2/HA/Resources.pm | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/PVE/API2/HA/Resources.pm b/src/PVE/API2/HA/Resources.pm
index acdd4992..9d3460e5 100644
--- a/src/PVE/API2/HA/Resources.pm
+++ b/src/PVE/API2/HA/Resources.pm
@@ -38,7 +38,11 @@ sub check_service_state {
     my ($sid, $req_state) = @_;
 
     my $service_status = PVE::HA::Config::get_service_status($sid);
-    if ($service_status->{managed} && $service_status->{state} eq 'error') {
+    if (
+        $service_status->{managed}
+        && $service_status->{state}
+        && $service_status->{state} eq 'error'
+    ) {
         # service in error state, must get disabled before new state request
         # can be executed
         return if defined($req_state) && $req_state eq 'disabled';
-- 
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 qemu-server 1/3] api: create_vm: use ha-manager command to add VM as an HA resource
  2025-11-10 14:36 [pve-devel] [PATCH container/ha-manager/qemu-server 0/5] Small HA-on-create improvements Daniel Kral
  2025-11-10 14:36 ` [pve-devel] [PATCH ha-manager 1/1] api: resources: fix uninitialized value in check_service_state Daniel Kral
@ 2025-11-10 14:36 ` Daniel Kral
  2025-11-10 14:36 ` [pve-devel] [PATCH qemu-server 2/3] qmrestore: allow starting a VM after it was restored successfully Daniel Kral
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Daniel Kral @ 2025-11-10 14:36 UTC (permalink / raw)
  To: pve-devel

PVE::API2::HA::Resources is not imported through a use statement here,
so `qm create ... --ha-managed 1` will not add the VM as an HA resource.

Replace the direct API call with a 'ha-manager' invocation as we don't
seem to import API modules from other packages except in pve-manager and
use the 'ha-manager' command at other call sites already.

Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
 src/PVE/API2/Qemu.pm | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/PVE/API2/Qemu.pm b/src/PVE/API2/Qemu.pm
index 71bedc1e..d7455275 100644
--- a/src/PVE/API2/Qemu.pm
+++ b/src/PVE/API2/Qemu.pm
@@ -1391,9 +1391,8 @@ __PACKAGE__->register_method({
             if ($ha_managed) {
                 print "Add as HA resource\n";
                 my $state = $start_after_create ? 'started' : 'stopped';
-                eval {
-                    PVE::API2::HA::Resources->create({ sid => "vm:$vmid", state => $state });
-                };
+                my $cmd = ['ha-manager', 'add', "vm:$vmid", '--state', $state];
+                eval { PVE::Tools::run_command($cmd); };
                 warn $@ if $@;
             }
         };
@@ -1482,9 +1481,8 @@ __PACKAGE__->register_method({
             if ($ha_managed) {
                 print "Add as HA resource\n";
                 my $state = $start_after_create ? 'started' : 'stopped';
-                eval {
-                    PVE::API2::HA::Resources->create({ sid => "vm:$vmid", state => $state });
-                };
+                my $cmd = ['ha-manager', 'add', "vm:$vmid", '--state', $state];
+                eval { PVE::Tools::run_command($cmd); };
                 warn $@ if $@;
             }
 
-- 
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 qemu-server 2/3] qmrestore: allow starting a VM after it was restored successfully
  2025-11-10 14:36 [pve-devel] [PATCH container/ha-manager/qemu-server 0/5] Small HA-on-create improvements Daniel Kral
  2025-11-10 14:36 ` [pve-devel] [PATCH ha-manager 1/1] api: resources: fix uninitialized value in check_service_state Daniel Kral
  2025-11-10 14:36 ` [pve-devel] [PATCH qemu-server 1/3] api: create_vm: use ha-manager command to add VM as an HA resource Daniel Kral
@ 2025-11-10 14:36 ` Daniel Kral
  2025-11-10 14:36 ` [pve-devel] [PATCH qemu-server 3/3] qmrestore: allow adding a VM as an HA resource after it was restored Daniel Kral
  2025-11-10 14:36 ` [pve-devel] [PATCH container 1/1] api: create_vm: use ha-manager command to add container as an HA resource Daniel Kral
  4 siblings, 0 replies; 6+ messages in thread
From: Daniel Kral @ 2025-11-10 14:36 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
 src/PVE/CLI/qmrestore.pm | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/PVE/CLI/qmrestore.pm b/src/PVE/CLI/qmrestore.pm
index 0153db57..ebe6665d 100755
--- a/src/PVE/CLI/qmrestore.pm
+++ b/src/PVE/CLI/qmrestore.pm
@@ -72,6 +72,12 @@ __PACKAGE__->register_method({
                 description =>
                     "Start the VM immediately from the backup and restore in background. PBS only.",
             },
+            start => {
+                optional => 1,
+                type => 'boolean',
+                default => 0,
+                description => "Start VM after it was restored successfully.",
+            },
         },
     },
     returns => {
-- 
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 qemu-server 3/3] qmrestore: allow adding a VM as an HA resource after it was restored
  2025-11-10 14:36 [pve-devel] [PATCH container/ha-manager/qemu-server 0/5] Small HA-on-create improvements Daniel Kral
                   ` (2 preceding siblings ...)
  2025-11-10 14:36 ` [pve-devel] [PATCH qemu-server 2/3] qmrestore: allow starting a VM after it was restored successfully Daniel Kral
@ 2025-11-10 14:36 ` Daniel Kral
  2025-11-10 14:36 ` [pve-devel] [PATCH container 1/1] api: create_vm: use ha-manager command to add container as an HA resource Daniel Kral
  4 siblings, 0 replies; 6+ messages in thread
From: Daniel Kral @ 2025-11-10 14:36 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
 src/PVE/CLI/qmrestore.pm | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/PVE/CLI/qmrestore.pm b/src/PVE/CLI/qmrestore.pm
index ebe6665d..abfa2de7 100755
--- a/src/PVE/CLI/qmrestore.pm
+++ b/src/PVE/CLI/qmrestore.pm
@@ -78,6 +78,12 @@ __PACKAGE__->register_method({
                 default => 0,
                 description => "Start VM after it was restored successfully.",
             },
+            'ha-managed' => {
+                optional => 1,
+                type => 'boolean',
+                default => 0,
+                description => "Add the VM as a HA resource after it was restored.",
+            },
         },
     },
     returns => {
-- 
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 container 1/1] api: create_vm: use ha-manager command to add container as an HA resource
  2025-11-10 14:36 [pve-devel] [PATCH container/ha-manager/qemu-server 0/5] Small HA-on-create improvements Daniel Kral
                   ` (3 preceding siblings ...)
  2025-11-10 14:36 ` [pve-devel] [PATCH qemu-server 3/3] qmrestore: allow adding a VM as an HA resource after it was restored Daniel Kral
@ 2025-11-10 14:36 ` Daniel Kral
  4 siblings, 0 replies; 6+ messages in thread
From: Daniel Kral @ 2025-11-10 14:36 UTC (permalink / raw)
  To: pve-devel

PVE::API2::HA::Resources is not imported through a use statement here,
so `pct create ... --ha-managed 1` will not add the container as an HA
resource.

Replace the direct API call with a 'ha-manager' invocation as we don't
seem to import API modules from other packages except in pve-manager and
use the 'ha-manager' command at other call sites already.

Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
 src/PVE/API2/LXC.pm | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
index e53b388..b792930 100644
--- a/src/PVE/API2/LXC.pm
+++ b/src/PVE/API2/LXC.pm
@@ -627,9 +627,7 @@ __PACKAGE__->register_method({
             if ($ha_managed) {
                 print "Add as HA resource\n";
                 my $state = $start_after_create ? 'started' : 'stopped';
-                eval {
-                    PVE::API2::HA::Resources->create({ sid => "ct:$vmid", state => $state });
-                };
+                eval { run_command(['ha-manager', 'add', "ct:$vmid", '--state', $state]); };
                 warn $@ if $@;
             }
         };
-- 
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-11-10 14:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-10 14:36 [pve-devel] [PATCH container/ha-manager/qemu-server 0/5] Small HA-on-create improvements Daniel Kral
2025-11-10 14:36 ` [pve-devel] [PATCH ha-manager 1/1] api: resources: fix uninitialized value in check_service_state Daniel Kral
2025-11-10 14:36 ` [pve-devel] [PATCH qemu-server 1/3] api: create_vm: use ha-manager command to add VM as an HA resource Daniel Kral
2025-11-10 14:36 ` [pve-devel] [PATCH qemu-server 2/3] qmrestore: allow starting a VM after it was restored successfully Daniel Kral
2025-11-10 14:36 ` [pve-devel] [PATCH qemu-server 3/3] qmrestore: allow adding a VM as an HA resource after it was restored Daniel Kral
2025-11-10 14:36 ` [pve-devel] [PATCH container 1/1] api: create_vm: use ha-manager command to add container as an HA resource Daniel Kral

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