From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 8A0BD1FF16B for ; Fri, 12 Sep 2025 10:39:22 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E40F0277A0; Fri, 12 Sep 2025 10:39:07 +0200 (CEST) To: "pve-devel@lists.proxmox.com" Date: Fri, 12 Sep 2025 06:34:52 +0000 X-Mailman-Approved-At: Fri, 12 Sep 2025 10:39:06 +0200 MIME-Version: 1.0 Message-ID: List-Id: Proxmox VE development discussion List-Post: From: Florian Paul Azim Hoberg via pve-devel Precedence: list Cc: Florian Paul Azim Hoberg X-Mailman-Version: 2.1.29 X-BeenThere: pve-devel@lists.proxmox.com List-Subscribe: , List-Unsubscribe: , List-Archive: Reply-To: Proxmox VE development discussion List-Help: Subject: [pve-devel] [PATCH pve-manager 1/1] close: 6799: add apt upgrade path to PVE API Content-Type: multipart/mixed; boundary="===============6823705613186289173==" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" --===============6823705613186289173== Content-Type: message/rfc822 Content-Disposition: inline Return-Path: X-Original-To: pve-devel@lists.proxmox.com Delivered-To: pve-devel@lists.proxmox.com Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 4500CD6F3C for ; Fri, 12 Sep 2025 08:51:05 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 1C6E02432F for ; Fri, 12 Sep 2025 08:50:35 +0200 (CEST) Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazlp170130007.outbound.protection.outlook.com [IPv6:2a01:111:f403:c202::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Fri, 12 Sep 2025 08:50:33 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dRYs/3m3rT0nuBOCunSnKL1TN9T75Ne0qLi+Fl8Q8B229JSSA0snX6VQcsexx/shFb/hg2FRuZqFPP1u0/IRa5pfyFLaj35R4xvx2flpxrU2PQO0GV5EFGHSsIHI3H/fPRYTwh5z68d6KpfBbKgyPOU7cKcwknBcFVUW3h6Fs+H+1ZWYuCacg2kdKVA60+Y5WQq0fbJMCOtrQFI0Bn6g/ksmtx9QlbE4qpuuXvwQATN7+F8RPpYoVHvEM2ifWlxJDJDidyZ0QldC8IUi9mQCN7+Fqpy8IJV7wIIHJl8hGMgZqQtjtEILE5h+zLbcf1BCMMVCgMrbYVbRisSsGY5iMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FG4I7GwDliG45GAMLRDu2smow7x7j8+xl/WdnSBuLzU=; b=F1B+DkRpC3SppWRGFcmHuaYAx4Axm+KTZjXicWRvi1c4QDoVNGLK2oJTE9ZULuL/a42o7H2ORtzoBVEl370OhgmW5cVTqT8esBmP2MCfdNY2HkMwknmHFuzd8QPfvMTqQTrBvQC5lKNVdnCNcNHOS98qOU7HRUFkKaZvm7b7uCgTTOpJx8awzQMYSzVuMpTdlRMh1ga4KdsP4tTHw6U52bbI+0GQevS0wa4WefUb5CyOTfoXgDB5crh6bLYGU/GpcNIQx7KUqqVIZMPiJU6OI1pVu6uINPAEqmwFuF13Ln0GqSGtis/ka1GEftzxqCIaWh6UCvJegmoI+M+XskdGtQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=credativ.de; dmarc=pass action=none header.from=credativ.de; dkim=pass header.d=credativ.de; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=credativ.de; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FG4I7GwDliG45GAMLRDu2smow7x7j8+xl/WdnSBuLzU=; b=I/khG8dWaFXsCcIa3/v61qGSRRgB+YtPgvej0D0ApqFIHzL0nG3X9RnANFMKxiW9s5NcinzZUnUdGZxQqkCgFbUcugvUT9izFgEYDd1Frx+jkgWR94nETg6ZbFtv3RZ8tvCk7r63rz/7hSxMXXn0QBzUU5r3kKiylY1hhE0bpFU= Received: from AS1P189MB1888.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:4a2::22) by AM7P189MB0932.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:173::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Fri, 12 Sep 2025 06:34:52 +0000 Received: from AS1P189MB1888.EURP189.PROD.OUTLOOK.COM ([fe80::c7c0:e244:c748:6c5f]) by AS1P189MB1888.EURP189.PROD.OUTLOOK.COM ([fe80::c7c0:e244:c748:6c5f%4]) with mapi id 15.20.9094.021; Fri, 12 Sep 2025 06:34:52 +0000 From: Florian Paul Azim Hoberg To: "pve-devel@lists.proxmox.com" Subject: [PATCH pve-manager 1/1] close: 6799: add apt upgrade path to PVE API Thread-Topic: [PATCH pve-manager 1/1] close: 6799: add apt upgrade path to PVE API Thread-Index: AQHcI69YhCmdu81EbE2VqnKzvHC8lg== Date: Fri, 12 Sep 2025 06:34:52 +0000 Message-ID: <99022DEC-C3F5-48FE-9F81-A262118D27F7@credativ.de> Accept-Language: de-DE, en-US, en-GB Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=credativ.de; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS1P189MB1888:EE_|AM7P189MB0932:EE_ x-ms-office365-filtering-correlation-id: 340c4463-4a91-45e6-363a-08ddf1c67af3 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700021; x-microsoft-antispam-message-info: =?us-ascii?Q?hY+OtEAV9ZCOsEX77EAPMx+X0Vkmrnx9D5ZFnCh407Qdy3DOEpbIBKk07ng0?= =?us-ascii?Q?rvFyQMNO15hld6JDPBUKFFxq1B0bGdFTPrqAzYvRVfu5Pg0byuDyvBK+Xcog?= =?us-ascii?Q?5c4pv5NejoTrNLAnV8BZx+UAfDOpvvzYFO/lwNQTnte7xrsHbBr053nhmj6b?= =?us-ascii?Q?vNJjW3anjSX1P4gBU0p4fLaC9p6/611RFVdBaNBcd5JDY3T+ne2IZSJQpbFd?= =?us-ascii?Q?fdiU+l3Q+K5VnjDGQ8JUakqZGtg2JMR8QSt7Y7MhzqP18ymBGvd5BhC6SdGn?= =?us-ascii?Q?Q0wDWeiJQOJKb46DKFi1WwcjllIHl24yzSM3OP9kShcXTmC3gnPrAJQlIe28?= =?us-ascii?Q?Xl+0TjKWOmDzGsEdV/Lz/7xJY3FdO6VwkPEHjfEV76jaNKSg27YOfwRxxUNx?= =?us-ascii?Q?/5FR38UvkKqEM44s15Njs1k2IWVT7fLactBYYg5mnkRF3uV2Cey7A0hIXRC3?= =?us-ascii?Q?SDFrrz6HNXBDrn9rBdgeUrpnT+6e3uF3khQzMpPU3u139Vv2Al9O15BwHbZb?= =?us-ascii?Q?ER29OHc6uvXwhxYzBQeAHc0w/Oj4kzo6pjOK1hopJDcf+JZa/8uDSHhFqqkr?= =?us-ascii?Q?B3m3+nr09gmjvYJi9vHuN8W9o1S4LadLVnWp2WdqX4N6Ld4nUFdbk4ksTl6y?= =?us-ascii?Q?QNaXyfCJ68QCk7Dq8Mi7V51Cr5i3JGK1rPZBJfQJYk9SMGmNGnKE4pGaKjvx?= =?us-ascii?Q?GbNIHnSkJ4iX2UyJH/4Qtr7137dEjbIp38gstNRjYj1PXQn9hy7C/v2pkCej?= =?us-ascii?Q?j7aHljRme56x3xYNp7qUU9/DsBIEmI8D+IHIiLXI41J+ZnyoJSl9WsFeLawD?= =?us-ascii?Q?mf6riY77csrjhdVVHx2co/MXYBkM0qjT8gbAiHGII04NCRyk3+VIxzBQAbrH?= =?us-ascii?Q?8pp2EnhngVWygK8C6TvMj4D/7bYAmrRVlIhlD0dLNrpXgKNKfaQx6nNWPzU8?= =?us-ascii?Q?Ubwy7jzXgnwGmiwmFexu2MHIZGPR7ztuCR+lTdIT//REhpiSk5JC80uNnhja?= =?us-ascii?Q?yN4kRFLL+g/t47J7dSlA+cHZ7apLwQlS2d3KsfUQIpZsVqDzI2dLOBhO/8WX?= =?us-ascii?Q?WH7T4yxt+KBrM32ORSFB/ILTjutP1vg6JSH2iM+nQ2g50CW4eignOdjguFuz?= =?us-ascii?Q?w3mpYtJwcwwX9UFNvGXGRRRGY3WCXgQrVbQNM/hrOBsw1+qY6azfBWeZ1epC?= =?us-ascii?Q?MAtaGTuyvF1APGy0T7LwuKjFNiBLjnDfMFngn4r/lok1vV+AFEH/sENPj0Ap?= =?us-ascii?Q?6a6W15InCBRP3U7mNkAlLsdantwaGCwDF55V7sF9v1UjQnUYX8eNokP7j/Jb?= =?us-ascii?Q?ER8VboUqWH1Y7vq5ct5akK/t95d/I/3+QUtpCb/ZGwzZM46y5KoOi/fuIp5x?= =?us-ascii?Q?tvPVzNk95huhNE6LP98LpnVhxGFCHo4fvySP5CqjdHy6I/2GLgIPBHRsdHyu?= =?us-ascii?Q?S1O8yMjHj1fjYNELm1A2BwMz1W9H3SnenEbFAe84hQQaGQ2kLHdY1Q=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS1P189MB1888.EURP189.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?D0juwHaRxVsiSKEYWlBES1rw7VvEKpaElNaJiK5rG/XVqy9AfOKxfaNC0zg+?= =?us-ascii?Q?BuYifVX/Kyh1NWe2D68bF0FFujYBV6HZb1raniJN0SfebWPttqtm8dOJbJ9Z?= =?us-ascii?Q?FHHaC5JBtH43HcMbTF6rMJM+e9ngqXICasahckh24KWqNTHFbi6TKfOacd3o?= =?us-ascii?Q?SzuP5vqQ0Of5U9W7n6Pw9Lg93gwCz9pGHtnI+4z2BHwIvEZeFNig4fSaDenL?= =?us-ascii?Q?7e3SOEGoobc8QNbEl4wyyR73f6cVixYTcnEs4JW/Cn6XHhjmajH+DqtBsbDG?= =?us-ascii?Q?3mqJoZ7jsoNvHI2XGDRgsYWoypFI3nnTtNdhewVmaPQMzAk7RJ466dZyVttX?= =?us-ascii?Q?xnTN2P3nSvSddW8xn8jjHTsnZiXsbqlVxiWTzsTMJUOtlKR2N/curbUGAloC?= =?us-ascii?Q?zg13yUhFxe7oJjrwEcjh8Xm7QtGFQMe19KyFRIYOquXov0kKYUvPKvwYPp35?= =?us-ascii?Q?plCvSyAum3SLaukXSUyvjJtVe1AbCXYRvINB7NfT8kUvI2up/6gfSfwkAGwG?= =?us-ascii?Q?SR2TmMWFotMcGk05X9VcyyFO4crRM1kfhtfKBOJDD0ECRCw7qk/zy4zDx8b4?= =?us-ascii?Q?JqdOlJbOh4YEHbUGZTEoMSn4z/Ezp2edVTPgSLxoI1q9Zo3j91PVfIrMo7Bm?= =?us-ascii?Q?PN2nNrPr5GxjMdXY2ckx5z3iHBIGxYZ6ENaKY0iHUEwUiLXs9b0vtxKYifqm?= =?us-ascii?Q?8X4C67mvOWtmwCfrIWgz8RgzjEygnipl/VKFw12zDFZ/n1yleqXpEQEYiVCj?= =?us-ascii?Q?+1XvvCZVIxuqcvve5r99FQ2j/8hOA7zHPYzgQDhwPkyRv2ojAHt8XI/aVd1t?= =?us-ascii?Q?IACz42t5tM/QLz1mFRmq7E5nvxLiqLRYLaxf7nSEAVCYtEKiNC3DRFwjbLIL?= =?us-ascii?Q?/35kmVdF6n7WaYrRMd/aj1uHOkvihkqNnEQ1CgWHwjjTyD1yC1oWmtgzhp5n?= =?us-ascii?Q?B9e6MT76g0dq4xVyISsEehfRu25t8lHvcIYUCfLXbwx2ZU/GWlSpTVcqeRBR?= =?us-ascii?Q?LPrO4ogNKqZKx1cvOeWQVnkYiYC/ulZyZB1BWWIsjbKxEPnUyeNNl0mwr20C?= =?us-ascii?Q?nGNeu/ZVJZMh0chG3wswow/OyX+taCBtkYOMuVATKlH2dvjf7/vnbmLO0dGe?= =?us-ascii?Q?sN5LCFiT7e6gLRy8zoyAN87yXzLZ7+xeuzXAWKbhNUhlRpgzKWYhbxkFxk2J?= =?us-ascii?Q?WvhmBWa7ZgnNLa9vILkFBpz1xqNF1Te+Wp8n65sOxbQuLpGb/aQCPiQU8oYd?= =?us-ascii?Q?gNXi27duMpkux3AGTKoAf7uy3r7/G5L/rRMSb3fekJ50gq6OoawBsd+GDhzT?= =?us-ascii?Q?/eieaumB1Ob/zrl0G+1+kRRbsWnNrr/XqNQGdX7TFULNLBeK6J3LghoKrzZB?= =?us-ascii?Q?oqRit5aazvEJaxhfPlz6iKCUST5Fv8GrE4YF6pZFYs06HV2TmLhUzMgekWJA?= =?us-ascii?Q?w6LkJVVNcdoMNu1epMZEmMwAdkDvD0r3Mt6Byntyy/KS2dQUZTtey37SDLt3?= =?us-ascii?Q?qsMXOtC6wCgmEUU4ozpiVEmBqrk4EGAUUydQyapMEHIJg9txZss2LGCQInmc?= =?us-ascii?Q?PlHQVtkbz9Mk95LkVzPv0OdZT8mFQrZ16iTtadKt8L2p9Bf3I/bzLR8lSXiD?= =?us-ascii?Q?BA=3D=3D?= Content-Type: text/plain; charset="us-ascii" Content-ID: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: credativ.de X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS1P189MB1888.EURP189.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 340c4463-4a91-45e6-363a-08ddf1c67af3 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Sep 2025 06:34:52.4706 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 2062cad9-9089-4cde-825e-26ac6f54f57e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: REMOVvXzxn9O8iHM0a4upRciIeijWo4zpiyeOo1VR9P0jGAIeU98X4WMIexh1jM3d7BUDAhFkK1O4906353bkzp89Q2YJaT8czXjwE3jv88= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7P189MB0932 X-SPAM-LEVEL: Spam detection results: 0 ARC_SIGNED 0.001 Message has a ARC signature ARC_VALID 0.001 Message has a valid ARC signature AWL -0.001 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain DMARC_PASS -0.1 DMARC pass policy SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [apt.pm,credativ.de] X-Mailman-Approved-At: Fri, 12 Sep 2025 10:39:06 +0200 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 --- 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 =3D> 'upgrade_packages', + path =3D> 'upgrade', + method =3D> 'POST', + description =3D> + "This is used to upgrade the system to the latest packages (apt-ge= t -y dist-upgrade).", + permissions =3D> { + check =3D> ['perm', '/nodes/{node}', ['Sys.Modify']], + }, + protected =3D> 1, + proxyto =3D> 'node', + parameters =3D> { + additionalProperties =3D> 0, + properties =3D> { + node =3D> get_standard_option('pve-node'), + command =3D> { + description =3D> "Specify the command.", + type =3D> 'string', + enum =3D> [qw(upgrade)], + }, + quiet =3D> { + type =3D> 'boolean', + description =3D> + "Only produces output suitable for logging, omitting p= rogress indicators.", + optional =3D> 1, + default =3D> 0, + }, + }, + }, + returns =3D> { + type =3D> 'string', + description =3D> 'The task UPID.', + }, + code =3D> sub { + my ($param) =3D @_; + + my $rpcenv =3D PVE::RPCEnvironment::get(); + my $dcconf =3D PVE::Cluster::cfs_read_file('datacenter.cfg'); + + my $authuser =3D $rpcenv->get_user(); + + my $realcmd =3D sub { + my $upid =3D shift; + + # setup proxy for apt + + my $aptconf =3D "// no proxy configured\n"; + if ($dcconf->{http_proxy}) { + $aptconf =3D "Acquire::http::Proxy \"$dcconf->{http_proxy}= \";\n"; + } + my $aptcfn =3D "/etc/apt/apt.conf.d/76pveproxy"; + PVE::Tools::file_set_contents($aptcfn, $aptconf); + + # Run apt as noninteractive + my $cmd =3D [ + 'env', 'DEBIAN_FRONTEND=3Dnoninteractive', + 'apt-get', '-q', '-y', + '-o', 'Dpkg::Options::=3D--force-confdef', + '-o', 'Dpkg::Options::=3D--force-confold', + 'dist-upgrade' + ]; + + print "starting apt-get -y dist-upgrade\n" if !$param->{quiet}= ; + + if ($param->{quiet}) { + PVE::Tools::run_command($cmd, outfunc =3D> sub { }, errfun= c =3D> sub { }); + } else { + PVE::Tools::run_command($cmd); + } + + return; + }; + + return $rpcenv->fork_worker('aptupgrade', undef, $authuser, $realc= md); + + }, +}); + __PACKAGE__->register_method({ name =3D> 'changelog', path =3D> 'changelog', -- 2.50.1= --===============6823705613186289173== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel --===============6823705613186289173==--