From: Lukas Wagner <l.wagner@proxmox.com>
To: pbs-devel@lists.proxmox.com, pve-devel@lists.proxmox.com
Subject: [PATCH pve-storage 7/7] api: add /nodes/<node>/storage/<storage>/identity route
Date: Wed, 15 Apr 2026 13:58:17 +0200 [thread overview]
Message-ID: <20260415115817.348947-8-l.wagner@proxmox.com> (raw)
In-Reply-To: <20260415115817.348947-1-l.wagner@proxmox.com>
This API allows us to retrieve the instance ID of PBS storages. This is
useful to establish a mapping between PBS storage and PBS remotes in
PDM.
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
---
Notes:
Also could make sense to cache the response.
Changes since RFC v1:
- Change endpoint path from 'instance-id' to 'identity', as this is
more generic and could make more sense for other storages, if they
ever need such a thing
- Remove unused RpcEnv code
- Adapt PBSClient call to 'get_server_identity'
src/PVE/API2/Storage/Status.pm | 48 +++++++++++++++++++++++++++++++++-
1 file changed, 47 insertions(+), 1 deletion(-)
diff --git a/src/PVE/API2/Storage/Status.pm b/src/PVE/API2/Storage/Status.pm
index 8225c3a..62b5508 100644
--- a/src/PVE/API2/Storage/Status.pm
+++ b/src/PVE/API2/Storage/Status.pm
@@ -14,7 +14,7 @@ use PVE::JSONSchema qw(get_standard_option);
use PVE::RESTHandler;
use PVE::RPCEnvironment;
use PVE::RRD;
-use PVE::Tools qw(run_command);
+use PVE::Tools qw(run_command extract_param);
use PVE::API2::Storage::Content;
use PVE::API2::Storage::FileRestore;
@@ -308,6 +308,7 @@ __PACKAGE__->register_method({
{ subdir => 'download-url' },
{ subdir => 'file-restore' },
{ subdir => 'import-metadata' },
+ { subdir => 'identity' },
{ subdir => 'oci-registry-pull' },
{ subdir => 'prunebackups' },
{ subdir => 'rrd' },
@@ -1118,4 +1119,49 @@ __PACKAGE__->register_method({
},
});
+__PACKAGE__->register_method({
+ name => 'identity',
+ path => '{storage}/identity',
+ method => 'GET',
+ description => "Return identity information for this storage (PBS only at the moment)",
+ permissions => {
+ check => ['perm', '/storage/{storage}', ['Datastore.Audit']],
+ },
+ protected => 1,
+ proxyto => 'node',
+ parameters => {
+ additionalProperties => 0,
+ properties => {
+ node => get_standard_option('pve-node'),
+ storage => get_standard_option('pve-storage-id'),
+ },
+ },
+ returns => {
+ type => "object",
+ properties => {
+ 'pbs-instance-id' => {
+ type => 'string',
+ description => 'Unique instance ID for PBS nodes',
+ optional => 1,
+ },
+ },
+ },
+ code => sub {
+ my ($param) = @_;
+
+ my $storeid = extract_param($param, 'storage');
+
+ my $cfg = PVE::Storage::config();
+ my $scfg = PVE::Storage::storage_config($cfg, $storeid);
+
+ raise_param_exc({ 'storage' => "Only PBS storages supported." })
+ if $scfg->{type} ne 'pbs';
+
+ my $client = PVE::PBSClient->new($scfg, $storeid);
+ my $ret = $client->get_server_identity();
+
+ return $ret;
+ },
+});
+
1;
--
2.47.3
prev parent reply other threads:[~2026-04-15 11:59 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-15 11:58 [PATCH common/proxmox{,-backup}/storage 0/7] establish unique instance-id for PBS nodes Lukas Wagner
2026-04-15 11:58 ` [PATCH proxmox 1/7] pbs-api-types: add ServerIdentity response type Lukas Wagner
2026-04-15 11:58 ` [PATCH proxmox 2/7] systemd: add support for machine-id generation Lukas Wagner
2026-04-15 11:58 ` [PATCH proxmox-backup 3/7] api: add /nodes/localhost/server-identity Lukas Wagner
2026-04-15 11:58 ` [PATCH proxmox-backup 4/7] client: add 'server-identity' sub-command Lukas Wagner
2026-04-15 11:58 ` [PATCH proxmox-backup 5/7] manager: add 'server-identity' subcommand Lukas Wagner
2026-04-15 11:58 ` [PATCH common 6/7] pbs-client: add support for the 'server-identity' command Lukas Wagner
2026-04-15 11:58 ` Lukas Wagner [this message]
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=20260415115817.348947-8-l.wagner@proxmox.com \
--to=l.wagner@proxmox.com \
--cc=pbs-devel@lists.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.