From: "Fabian Grünbichler" <f.gruenbichler@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [RFC manager 5/6] subscription: adapt to multiple server ID variants
Date: Fri, 10 Apr 2026 12:02:22 +0200 [thread overview]
Message-ID: <20260410100326.3199377-6-f.gruenbichler@proxmox.com> (raw)
In-Reply-To: <20260410100326.3199377-1-f.gruenbichler@proxmox.com>
if there already is a subscription info with ID, reuse it. if not, use the
first candidate.
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
Notes:
requires bumped libpve-rs-perl
PVE/API2/Subscription.pm | 26 ++++++++++++++++++++------
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/PVE/API2/Subscription.pm b/PVE/API2/Subscription.pm
index 59e7fe747..0a9e59810 100644
--- a/PVE/API2/Subscription.pm
+++ b/PVE/API2/Subscription.pm
@@ -58,7 +58,7 @@ sub check_key {
sub read_etc_subscription {
my $req_sockets = get_sockets();
- my $server_id = PVE::API2Tools::get_hwaddress();
+ my $server_id_candidates = Proxmox::RS::Subscription::get_hardware_address_candidates();
my $info = Proxmox::RS::Subscription::read_subscription($filename);
@@ -89,7 +89,7 @@ my sub cache_is_valid {
sub write_etc_subscription {
my ($info) = @_;
- my $server_id = PVE::API2Tools::get_hwaddress();
+ my $server_id_candidates = Proxmox::RS::Subscription::get_hardware_address_candidates();
mkdir "/etc/apt/auth.conf.d";
Proxmox::RS::Subscription::write_subscription(
$filename,
@@ -205,7 +205,8 @@ __PACKAGE__->register_method({
my $authuser = $rpcenv->get_user();
my $has_permission = $rpcenv->check($authuser, "/nodes/$node", ['Sys.Audit'], 1);
- my $server_id = PVE::API2Tools::get_hwaddress();
+ my $server_id_candidates = Proxmox::RS::Subscription::get_hardware_address_candidates();
+ my $server_id = $server_id_candidates->[0]->[1];
my $url = "https://www.proxmox.com/en/proxmox-virtual-environment/pricing";
my $info = read_etc_subscription();
@@ -227,7 +228,13 @@ __PACKAGE__->register_method({
};
}
- $info->{serverid} = $server_id;
+ # none set yet
+ $info->{serverid} = $server_id if !defined($info->{serverid});
+
+ if ((grep { my $id = $_->[1]; $id eq $info->{serverid} } $server_id_candidates->@*) < 1) {
+ # mismatch, reset
+ $info->{serverid} = $server_id;
+ }
$info->{sockets} = get_sockets();
$info->{url} = $url;
@@ -264,8 +271,12 @@ __PACKAGE__->register_method({
my $info = read_etc_subscription();
return undef if !$info;
- my $server_id = PVE::API2Tools::get_hwaddress();
+ my $server_id_candidates = Proxmox::RS::Subscription::get_hardware_address_candidates();
my $key = $info->{key};
+ my $server_id = $info->{serverid} // $server_id_candidates->[0]->[1];
+ if ((grep { my $id = $_->[1]; $id eq $server_id } $server_id_candidates->@*) < 1) {
+ die "no matching server ID found\n";
+ }
die
"Updating offline key not possible - please remove and re-add subscription key to switch to online key.\n"
@@ -324,7 +335,10 @@ __PACKAGE__->register_method({
};
my $req_sockets = get_sockets();
- my $server_id = PVE::API2Tools::get_hwaddress();
+ my $server_id_candidates = Proxmox::RS::Subscription::get_hardware_address_candidates();
+ my $server_id = $server_id_candidates->[0]->[1];
+
+ die "Failed to generate server ID\n" if !$server_id;
check_key($key, $req_sockets);
--
2.47.3
next prev parent reply other threads:[~2026-04-10 10:03 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-10 10:02 [RFC manager/proxmox{,-backup,-perl-rs} 0/6] adapt subscription handling to alternative server IDs Fabian Grünbichler
2026-04-10 10:02 ` [PATCH proxmox 1/6] systemd: add support for machine-id generation Fabian Grünbichler
2026-04-10 10:02 ` [RFC proxmox 2/6] proxmox-subscription: add new machine-id based serverid Fabian Grünbichler
2026-04-10 10:02 ` [RFC proxmox-backup 3/6] subscription: adapt to multiple server ID variants Fabian Grünbichler
2026-04-10 10:02 ` [RFC proxmox-perl-rs 4/6] common: subscription: expose server ID candidates Fabian Grünbichler
2026-04-10 10:02 ` Fabian Grünbichler [this message]
2026-04-10 10:02 ` [RFC manager 6/6] api2tools: remove unused get_hwaddress Fabian Grünbichler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260410100326.3199377-6-f.gruenbichler@proxmox.com \
--to=f.gruenbichler@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox