use proxmox_router::cli::*;
use proxmox_schema::api;
+use pbs_api_types::BackupNamespace;
use pbs_client::tools::key_source::get_encryption_key_password;
use pbs_client::{BackupReader, RemoteChunkReader};
use pbs_tools::crypt_config::CryptConfig;
use crate::{
complete_backup_snapshot, complete_group_or_snapshot, complete_pxar_archive_name,
complete_repository, connect, crypto_parameters, decrypt_key, dir_or_last_from_group,
- extract_repository_from_value, format_key_source, record_repository, BackupDir,
- BufferedDynamicReadAt, BufferedDynamicReader, CatalogReader, DynamicIndexReader, IndexFile,
- Shell, CATALOG_NAME, KEYFD_SCHEMA, REPO_URL_SCHEMA,
+ extract_repository_from_value, format_key_source, optional_ns_param, record_repository,
+ BackupDir, BufferedDynamicReadAt, BufferedDynamicReader, CatalogReader, DynamicIndexReader,
+ IndexFile, Shell, CATALOG_NAME, KEYFD_SCHEMA, REPO_URL_SCHEMA,
};
#[api(
schema: REPO_URL_SCHEMA,
optional: true,
},
+ ns: {
+ type: BackupNamespace,
+ optional: true,
+ },
snapshot: {
type: String,
description: "Snapshot path.",
async fn dump_catalog(param: Value) -> Result<Value, Error> {
let repo = extract_repository_from_value(¶m)?;
+ let backup_ns = optional_ns_param(¶m)?;
let path = required_string_param(¶m, "snapshot")?;
let snapshot: BackupDir = path.parse()?;
let client = connect(&repo)?;
- let client =
- BackupReader::start(client, crypt_config.clone(), repo.store(), &snapshot, true).await?;
+ let client = BackupReader::start(
+ client,
+ crypt_config.clone(),
+ repo.store(),
+ &backup_ns,
+ &snapshot,
+ true,
+ )
+ .await?;
let (manifest, _) = client.download_manifest().await?;
manifest.check_fingerprint(crypt_config.as_ref().map(Arc::as_ref))?;
#[api(
input: {
properties: {
+ ns: {
+ type: BackupNamespace,
+ optional: true,
+ },
"snapshot": {
type: String,
description: "Group/Snapshot path.",
async fn catalog_shell(param: Value) -> Result<(), Error> {
let repo = extract_repository_from_value(¶m)?;
let client = connect(&repo)?;
+ let backup_ns = optional_ns_param(¶m)?;
let path = required_string_param(¶m, "snapshot")?;
let archive_name = required_string_param(¶m, "archive-name")?;
- let backup_dir = dir_or_last_from_group(&client, &repo, &path).await?;
+ let backup_dir = dir_or_last_from_group(&client, &repo, &backup_ns, &path).await?;
let crypto = crypto_parameters(¶m)?;
client,
crypt_config.clone(),
repo.store(),
+ &backup_ns,
&backup_dir,
true,
)