public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH pve-manager 1/1] close: 6799: add apt upgrade path to PVE API
@ 2025-09-12  6:34 Florian Paul Azim Hoberg via pve-devel
  0 siblings, 0 replies; 2+ messages in thread
From: Florian Paul Azim Hoberg via pve-devel @ 2025-09-12  6:34 UTC (permalink / raw)
  To: pve-devel; +Cc: Florian Paul Azim Hoberg

[-- Attachment #1: Type: message/rfc822, Size: 13856 bytes --]

From: Florian Paul Azim Hoberg <florian.hoberg@credativ.de>
To: "pve-devel@lists.proxmox.com" <pve-devel@lists.proxmox.com>
Subject: [PATCH pve-manager 1/1] close: 6799: add apt upgrade path to PVE API
Date: Fri, 12 Sep 2025 06:34:52 +0000
Message-ID: <99022DEC-C3F5-48FE-9F81-A262118D27F7@credativ.de>

Extend the PVE API by a new 'upgrade' path in the
apt path to perform 'apt-get -y dist-upgrade' on
the node in a noninteractive way to avoid blocking
the upgrade process.

Signed-off-by: Florian Paul Azim Hoberg @gyptazy <florian.hoberg@credativ.de>
---

PVE/API2/APT.pm | 78 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 78 insertions(+)

diff --git a/PVE/API2/APT.pm b/PVE/API2/APT.pm
index 0d07cf38..3f2d7807 100644
--- a/PVE/API2/APT.pm
+++ b/PVE/API2/APT.pm
@@ -417,6 +417,84 @@ __PACKAGE__->register_method({
    },
});

+__PACKAGE__->register_method({
+    name => 'upgrade_packages',
+    path => 'upgrade',
+    method => 'POST',
+    description =>
+        "This is used to upgrade the system to the latest packages (apt-get -y dist-upgrade).",
+    permissions => {
+        check => ['perm', '/nodes/{node}', ['Sys.Modify']],
+    },
+    protected => 1,
+    proxyto => 'node',
+    parameters => {
+        additionalProperties => 0,
+        properties => {
+            node => get_standard_option('pve-node'),
+            command => {
+                description => "Specify the command.",
+                type => 'string',
+                enum => [qw(upgrade)],
+            },
+            quiet => {
+                type => 'boolean',
+                description =>
+                    "Only produces output suitable for logging, omitting progress indicators.",
+                optional => 1,
+                default => 0,
+            },
+        },
+    },
+    returns => {
+        type => 'string',
+        description => 'The task UPID.',
+    },
+    code => sub {
+        my ($param) = @_;
+
+        my $rpcenv = PVE::RPCEnvironment::get();
+        my $dcconf = PVE::Cluster::cfs_read_file('datacenter.cfg');
+
+        my $authuser = $rpcenv->get_user();
+
+        my $realcmd = sub {
+            my $upid = shift;
+
+            # setup proxy for apt
+
+            my $aptconf = "// no proxy configured\n";
+            if ($dcconf->{http_proxy}) {
+                $aptconf = "Acquire::http::Proxy \"$dcconf->{http_proxy}\";\n";
+            }
+            my $aptcfn = "/etc/apt/apt.conf.d/76pveproxy";
+            PVE::Tools::file_set_contents($aptcfn, $aptconf);
+
+            # Run apt as noninteractive
+            my $cmd = [
+                'env', 'DEBIAN_FRONTEND=noninteractive',
+                'apt-get', '-q', '-y',
+                '-o', 'Dpkg::Options::=--force-confdef',
+                '-o', 'Dpkg::Options::=--force-confold',
+                'dist-upgrade'
+            ];
+
+            print "starting apt-get -y dist-upgrade\n" if !$param->{quiet};
+
+            if ($param->{quiet}) {
+                PVE::Tools::run_command($cmd, outfunc => sub { }, errfunc => sub { });
+            } else {
+                PVE::Tools::run_command($cmd);
+            }
+
+            return;
+        };
+
+        return $rpcenv->fork_worker('aptupgrade', undef, $authuser, $realcmd);
+
+    },
+});
+
__PACKAGE__->register_method({
    name => 'changelog',
    path => 'changelog',
--
2.50.1

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-09-12  9:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <99022DEC-C3F5-48FE-9F81-A262118D27F7@credativ.de>
2025-09-12  9:22 ` [pve-devel] [PATCH pve-manager 1/1] close: 6799: add apt upgrade path to PVE API Thomas Lamprecht
2025-09-12  6:34 Florian Paul Azim Hoberg via pve-devel

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