client: add completion callbacks for ns parameters
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
		@ -15,11 +15,11 @@ use pbs_tools::crypt_config::CryptConfig;
 | 
				
			|||||||
use pbs_tools::json::required_string_param;
 | 
					use pbs_tools::json::required_string_param;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::{
 | 
					use crate::{
 | 
				
			||||||
    complete_backup_snapshot, complete_group_or_snapshot, complete_pxar_archive_name,
 | 
					    complete_backup_snapshot, complete_group_or_snapshot, complete_namespace,
 | 
				
			||||||
    complete_repository, connect, crypto_parameters, decrypt_key, dir_or_last_from_group,
 | 
					    complete_pxar_archive_name, complete_repository, connect, crypto_parameters, decrypt_key,
 | 
				
			||||||
    extract_repository_from_value, format_key_source, optional_ns_param, record_repository,
 | 
					    dir_or_last_from_group, extract_repository_from_value, format_key_source, optional_ns_param,
 | 
				
			||||||
    BackupDir, BufferedDynamicReadAt, BufferedDynamicReader, CatalogReader, DynamicIndexReader,
 | 
					    record_repository, BackupDir, BufferedDynamicReadAt, BufferedDynamicReader, CatalogReader,
 | 
				
			||||||
    IndexFile, Shell, CATALOG_NAME, KEYFD_SCHEMA, REPO_URL_SCHEMA,
 | 
					    DynamicIndexReader, IndexFile, Shell, CATALOG_NAME, KEYFD_SCHEMA, REPO_URL_SCHEMA,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[api(
 | 
					#[api(
 | 
				
			||||||
@ -265,12 +265,14 @@ pub fn catalog_mgmt_cli() -> CliCommandMap {
 | 
				
			|||||||
    let catalog_shell_cmd_def = CliCommand::new(&API_METHOD_CATALOG_SHELL)
 | 
					    let catalog_shell_cmd_def = CliCommand::new(&API_METHOD_CATALOG_SHELL)
 | 
				
			||||||
        .arg_param(&["snapshot", "archive-name"])
 | 
					        .arg_param(&["snapshot", "archive-name"])
 | 
				
			||||||
        .completion_cb("repository", complete_repository)
 | 
					        .completion_cb("repository", complete_repository)
 | 
				
			||||||
 | 
					        .completion_cb("ns", complete_namespace)
 | 
				
			||||||
        .completion_cb("archive-name", complete_pxar_archive_name)
 | 
					        .completion_cb("archive-name", complete_pxar_archive_name)
 | 
				
			||||||
        .completion_cb("snapshot", complete_group_or_snapshot);
 | 
					        .completion_cb("snapshot", complete_group_or_snapshot);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let catalog_dump_cmd_def = CliCommand::new(&API_METHOD_DUMP_CATALOG)
 | 
					    let catalog_dump_cmd_def = CliCommand::new(&API_METHOD_DUMP_CATALOG)
 | 
				
			||||||
        .arg_param(&["snapshot"])
 | 
					        .arg_param(&["snapshot"])
 | 
				
			||||||
        .completion_cb("repository", complete_repository)
 | 
					        .completion_cb("repository", complete_repository)
 | 
				
			||||||
 | 
					        .completion_cb("ns", complete_namespace)
 | 
				
			||||||
        .completion_cb("snapshot", complete_backup_snapshot);
 | 
					        .completion_cb("snapshot", complete_backup_snapshot);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    CliCommandMap::new()
 | 
					    CliCommandMap::new()
 | 
				
			||||||
 | 
				
			|||||||
@ -32,8 +32,8 @@ use pbs_client::catalog_shell::Shell;
 | 
				
			|||||||
use pbs_client::tools::{
 | 
					use pbs_client::tools::{
 | 
				
			||||||
    complete_archive_name, complete_auth_id, complete_backup_group, complete_backup_snapshot,
 | 
					    complete_archive_name, complete_auth_id, complete_backup_group, complete_backup_snapshot,
 | 
				
			||||||
    complete_backup_source, complete_chunk_size, complete_group_or_snapshot,
 | 
					    complete_backup_source, complete_chunk_size, complete_group_or_snapshot,
 | 
				
			||||||
    complete_img_archive_name, complete_pxar_archive_name, complete_repository, connect,
 | 
					    complete_img_archive_name, complete_namespace, complete_pxar_archive_name, complete_repository,
 | 
				
			||||||
    connect_rate_limited, extract_repository_from_value,
 | 
					    connect, connect_rate_limited, extract_repository_from_value,
 | 
				
			||||||
    key_source::{
 | 
					    key_source::{
 | 
				
			||||||
        crypto_parameters, format_key_source, get_encryption_key_password, KEYFD_SCHEMA,
 | 
					        crypto_parameters, format_key_source, get_encryption_key_password, KEYFD_SCHEMA,
 | 
				
			||||||
        KEYFILE_SCHEMA, MASTER_PUBKEY_FD_SCHEMA, MASTER_PUBKEY_FILE_SCHEMA,
 | 
					        KEYFILE_SCHEMA, MASTER_PUBKEY_FD_SCHEMA, MASTER_PUBKEY_FILE_SCHEMA,
 | 
				
			||||||
@ -1638,6 +1638,7 @@ fn main() {
 | 
				
			|||||||
        .completion_cb("keyfile", complete_file_name);
 | 
					        .completion_cb("keyfile", complete_file_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let list_cmd_def = CliCommand::new(&API_METHOD_LIST_BACKUP_GROUPS)
 | 
					    let list_cmd_def = CliCommand::new(&API_METHOD_LIST_BACKUP_GROUPS)
 | 
				
			||||||
 | 
					        .completion_cb("ns", complete_namespace)
 | 
				
			||||||
        .completion_cb("repository", complete_repository);
 | 
					        .completion_cb("repository", complete_repository);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let garbage_collect_cmd_def = CliCommand::new(&API_METHOD_START_GARBAGE_COLLECTION)
 | 
					    let garbage_collect_cmd_def = CliCommand::new(&API_METHOD_START_GARBAGE_COLLECTION)
 | 
				
			||||||
@ -1646,12 +1647,14 @@ fn main() {
 | 
				
			|||||||
    let restore_cmd_def = CliCommand::new(&API_METHOD_RESTORE)
 | 
					    let restore_cmd_def = CliCommand::new(&API_METHOD_RESTORE)
 | 
				
			||||||
        .arg_param(&["snapshot", "archive-name", "target"])
 | 
					        .arg_param(&["snapshot", "archive-name", "target"])
 | 
				
			||||||
        .completion_cb("repository", complete_repository)
 | 
					        .completion_cb("repository", complete_repository)
 | 
				
			||||||
 | 
					        .completion_cb("ns", complete_namespace)
 | 
				
			||||||
        .completion_cb("snapshot", complete_group_or_snapshot)
 | 
					        .completion_cb("snapshot", complete_group_or_snapshot)
 | 
				
			||||||
        .completion_cb("archive-name", complete_archive_name)
 | 
					        .completion_cb("archive-name", complete_archive_name)
 | 
				
			||||||
        .completion_cb("target", complete_file_name);
 | 
					        .completion_cb("target", complete_file_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let prune_cmd_def = CliCommand::new(&API_METHOD_PRUNE)
 | 
					    let prune_cmd_def = CliCommand::new(&API_METHOD_PRUNE)
 | 
				
			||||||
        .arg_param(&["group"])
 | 
					        .arg_param(&["group"])
 | 
				
			||||||
 | 
					        .completion_cb("ns", complete_namespace)
 | 
				
			||||||
        .completion_cb("group", complete_backup_group)
 | 
					        .completion_cb("group", complete_backup_group)
 | 
				
			||||||
        .completion_cb("repository", complete_repository);
 | 
					        .completion_cb("repository", complete_repository);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1669,6 +1672,7 @@ fn main() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    let change_owner_cmd_def = CliCommand::new(&API_METHOD_CHANGE_BACKUP_OWNER)
 | 
					    let change_owner_cmd_def = CliCommand::new(&API_METHOD_CHANGE_BACKUP_OWNER)
 | 
				
			||||||
        .arg_param(&["group", "new-owner"])
 | 
					        .arg_param(&["group", "new-owner"])
 | 
				
			||||||
 | 
					        .completion_cb("ns", complete_namespace)
 | 
				
			||||||
        .completion_cb("group", complete_backup_group)
 | 
					        .completion_cb("group", complete_backup_group)
 | 
				
			||||||
        .completion_cb("new-owner", complete_auth_id)
 | 
					        .completion_cb("new-owner", complete_auth_id)
 | 
				
			||||||
        .completion_cb("repository", complete_repository);
 | 
					        .completion_cb("repository", complete_repository);
 | 
				
			||||||
 | 
				
			|||||||
@ -29,9 +29,10 @@ use pbs_tools::crypt_config::CryptConfig;
 | 
				
			|||||||
use pbs_tools::json::required_string_param;
 | 
					use pbs_tools::json::required_string_param;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::{
 | 
					use crate::{
 | 
				
			||||||
    complete_group_or_snapshot, complete_img_archive_name, complete_pxar_archive_name,
 | 
					    complete_group_or_snapshot, complete_img_archive_name, complete_namespace,
 | 
				
			||||||
    complete_repository, connect, dir_or_last_from_group, extract_repository_from_value,
 | 
					    complete_pxar_archive_name, complete_repository, connect, dir_or_last_from_group,
 | 
				
			||||||
    optional_ns_param, record_repository, BufferedDynamicReadAt, REPO_URL_SCHEMA,
 | 
					    extract_repository_from_value, optional_ns_param, record_repository, BufferedDynamicReadAt,
 | 
				
			||||||
 | 
					    REPO_URL_SCHEMA,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[sortable]
 | 
					#[sortable]
 | 
				
			||||||
@ -129,6 +130,7 @@ pub fn mount_cmd_def() -> CliCommand {
 | 
				
			|||||||
    CliCommand::new(&API_METHOD_MOUNT)
 | 
					    CliCommand::new(&API_METHOD_MOUNT)
 | 
				
			||||||
        .arg_param(&["snapshot", "archive-name", "target"])
 | 
					        .arg_param(&["snapshot", "archive-name", "target"])
 | 
				
			||||||
        .completion_cb("repository", complete_repository)
 | 
					        .completion_cb("repository", complete_repository)
 | 
				
			||||||
 | 
					        .completion_cb("ns", complete_namespace)
 | 
				
			||||||
        .completion_cb("snapshot", complete_group_or_snapshot)
 | 
					        .completion_cb("snapshot", complete_group_or_snapshot)
 | 
				
			||||||
        .completion_cb("archive-name", complete_pxar_archive_name)
 | 
					        .completion_cb("archive-name", complete_pxar_archive_name)
 | 
				
			||||||
        .completion_cb("target", complete_file_name)
 | 
					        .completion_cb("target", complete_file_name)
 | 
				
			||||||
@ -138,6 +140,7 @@ pub fn map_cmd_def() -> CliCommand {
 | 
				
			|||||||
    CliCommand::new(&API_METHOD_MAP)
 | 
					    CliCommand::new(&API_METHOD_MAP)
 | 
				
			||||||
        .arg_param(&["snapshot", "archive-name"])
 | 
					        .arg_param(&["snapshot", "archive-name"])
 | 
				
			||||||
        .completion_cb("repository", complete_repository)
 | 
					        .completion_cb("repository", complete_repository)
 | 
				
			||||||
 | 
					        .completion_cb("ns", complete_namespace)
 | 
				
			||||||
        .completion_cb("snapshot", complete_group_or_snapshot)
 | 
					        .completion_cb("snapshot", complete_group_or_snapshot)
 | 
				
			||||||
        .completion_cb("archive-name", complete_img_archive_name)
 | 
					        .completion_cb("archive-name", complete_img_archive_name)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -9,7 +9,10 @@ use proxmox_router::cli::{
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
use proxmox_schema::api;
 | 
					use proxmox_schema::api;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::{connect, extract_repository_from_value, optional_ns_param, record_repository};
 | 
					use crate::{
 | 
				
			||||||
 | 
					    complete_namespace, connect, extract_repository_from_value, optional_ns_param,
 | 
				
			||||||
 | 
					    record_repository,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[api(
 | 
					#[api(
 | 
				
			||||||
    input: {
 | 
					    input: {
 | 
				
			||||||
@ -157,14 +160,20 @@ pub fn cli_map() -> CliCommandMap {
 | 
				
			|||||||
    CliCommandMap::new()
 | 
					    CliCommandMap::new()
 | 
				
			||||||
        .insert(
 | 
					        .insert(
 | 
				
			||||||
            "list",
 | 
					            "list",
 | 
				
			||||||
            CliCommand::new(&API_METHOD_LIST_NAMESPACES).arg_param(&["ns"]),
 | 
					            CliCommand::new(&API_METHOD_LIST_NAMESPACES)
 | 
				
			||||||
 | 
					                .arg_param(&["ns"])
 | 
				
			||||||
 | 
					                .completion_cb("ns", complete_namespace),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        .insert(
 | 
					        .insert(
 | 
				
			||||||
            "create",
 | 
					            "create",
 | 
				
			||||||
            CliCommand::new(&API_METHOD_CREATE_NAMESPACE).arg_param(&["ns"]),
 | 
					            CliCommand::new(&API_METHOD_CREATE_NAMESPACE)
 | 
				
			||||||
 | 
					                .arg_param(&["ns"])
 | 
				
			||||||
 | 
					                .completion_cb("ns", complete_namespace),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        .insert(
 | 
					        .insert(
 | 
				
			||||||
            "delete",
 | 
					            "delete",
 | 
				
			||||||
            CliCommand::new(&API_METHOD_DELETE_NAMESPACE).arg_param(&["ns"]),
 | 
					            CliCommand::new(&API_METHOD_DELETE_NAMESPACE)
 | 
				
			||||||
 | 
					                .arg_param(&["ns"])
 | 
				
			||||||
 | 
					                .completion_cb("ns", complete_namespace),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -16,8 +16,9 @@ use pbs_tools::json::required_string_param;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use crate::{
 | 
					use crate::{
 | 
				
			||||||
    api_datastore_list_snapshots, complete_backup_group, complete_backup_snapshot,
 | 
					    api_datastore_list_snapshots, complete_backup_group, complete_backup_snapshot,
 | 
				
			||||||
    complete_repository, connect, crypto_parameters, extract_repository_from_value,
 | 
					    complete_namespace, complete_repository, connect, crypto_parameters,
 | 
				
			||||||
    optional_ns_param, record_repository, BackupDir, KEYFD_SCHEMA, KEYFILE_SCHEMA, REPO_URL_SCHEMA,
 | 
					    extract_repository_from_value, optional_ns_param, record_repository, BackupDir, KEYFD_SCHEMA,
 | 
				
			||||||
 | 
					    KEYFILE_SCHEMA, REPO_URL_SCHEMA,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn snapshot_args(ns: &BackupNamespace, snapshot: &BackupDir) -> Result<Value, Error> {
 | 
					fn snapshot_args(ns: &BackupNamespace, snapshot: &BackupDir) -> Result<Value, Error> {
 | 
				
			||||||
@ -480,12 +481,14 @@ fn protected_cli() -> CliCommandMap {
 | 
				
			|||||||
            "show",
 | 
					            "show",
 | 
				
			||||||
            CliCommand::new(&API_METHOD_SHOW_PROTECTION)
 | 
					            CliCommand::new(&API_METHOD_SHOW_PROTECTION)
 | 
				
			||||||
                .arg_param(&["snapshot"])
 | 
					                .arg_param(&["snapshot"])
 | 
				
			||||||
 | 
					                .completion_cb("ns", complete_namespace)
 | 
				
			||||||
                .completion_cb("snapshot", complete_backup_snapshot),
 | 
					                .completion_cb("snapshot", complete_backup_snapshot),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        .insert(
 | 
					        .insert(
 | 
				
			||||||
            "update",
 | 
					            "update",
 | 
				
			||||||
            CliCommand::new(&API_METHOD_UPDATE_PROTECTION)
 | 
					            CliCommand::new(&API_METHOD_UPDATE_PROTECTION)
 | 
				
			||||||
                .arg_param(&["snapshot", "protected"])
 | 
					                .arg_param(&["snapshot", "protected"])
 | 
				
			||||||
 | 
					                .completion_cb("ns", complete_namespace)
 | 
				
			||||||
                .completion_cb("snapshot", complete_backup_snapshot),
 | 
					                .completion_cb("snapshot", complete_backup_snapshot),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -496,12 +499,14 @@ fn notes_cli() -> CliCommandMap {
 | 
				
			|||||||
            "show",
 | 
					            "show",
 | 
				
			||||||
            CliCommand::new(&API_METHOD_SHOW_NOTES)
 | 
					            CliCommand::new(&API_METHOD_SHOW_NOTES)
 | 
				
			||||||
                .arg_param(&["snapshot"])
 | 
					                .arg_param(&["snapshot"])
 | 
				
			||||||
 | 
					                .completion_cb("ns", complete_namespace)
 | 
				
			||||||
                .completion_cb("snapshot", complete_backup_snapshot),
 | 
					                .completion_cb("snapshot", complete_backup_snapshot),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        .insert(
 | 
					        .insert(
 | 
				
			||||||
            "update",
 | 
					            "update",
 | 
				
			||||||
            CliCommand::new(&API_METHOD_UPDATE_NOTES)
 | 
					            CliCommand::new(&API_METHOD_UPDATE_NOTES)
 | 
				
			||||||
                .arg_param(&["snapshot", "notes"])
 | 
					                .arg_param(&["snapshot", "notes"])
 | 
				
			||||||
 | 
					                .completion_cb("ns", complete_namespace)
 | 
				
			||||||
                .completion_cb("snapshot", complete_backup_snapshot),
 | 
					                .completion_cb("snapshot", complete_backup_snapshot),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -514,6 +519,7 @@ pub fn snapshot_mgtm_cli() -> CliCommandMap {
 | 
				
			|||||||
            "list",
 | 
					            "list",
 | 
				
			||||||
            CliCommand::new(&API_METHOD_LIST_SNAPSHOTS)
 | 
					            CliCommand::new(&API_METHOD_LIST_SNAPSHOTS)
 | 
				
			||||||
                .arg_param(&["group"])
 | 
					                .arg_param(&["group"])
 | 
				
			||||||
 | 
					                .completion_cb("ns", complete_namespace)
 | 
				
			||||||
                .completion_cb("group", complete_backup_group)
 | 
					                .completion_cb("group", complete_backup_group)
 | 
				
			||||||
                .completion_cb("repository", complete_repository),
 | 
					                .completion_cb("repository", complete_repository),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@ -521,6 +527,7 @@ pub fn snapshot_mgtm_cli() -> CliCommandMap {
 | 
				
			|||||||
            "files",
 | 
					            "files",
 | 
				
			||||||
            CliCommand::new(&API_METHOD_LIST_SNAPSHOT_FILES)
 | 
					            CliCommand::new(&API_METHOD_LIST_SNAPSHOT_FILES)
 | 
				
			||||||
                .arg_param(&["snapshot"])
 | 
					                .arg_param(&["snapshot"])
 | 
				
			||||||
 | 
					                .completion_cb("ns", complete_namespace)
 | 
				
			||||||
                .completion_cb("repository", complete_repository)
 | 
					                .completion_cb("repository", complete_repository)
 | 
				
			||||||
                .completion_cb("snapshot", complete_backup_snapshot),
 | 
					                .completion_cb("snapshot", complete_backup_snapshot),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@ -528,6 +535,7 @@ pub fn snapshot_mgtm_cli() -> CliCommandMap {
 | 
				
			|||||||
            "forget",
 | 
					            "forget",
 | 
				
			||||||
            CliCommand::new(&API_METHOD_FORGET_SNAPSHOTS)
 | 
					            CliCommand::new(&API_METHOD_FORGET_SNAPSHOTS)
 | 
				
			||||||
                .arg_param(&["snapshot"])
 | 
					                .arg_param(&["snapshot"])
 | 
				
			||||||
 | 
					                .completion_cb("ns", complete_namespace)
 | 
				
			||||||
                .completion_cb("repository", complete_repository)
 | 
					                .completion_cb("repository", complete_repository)
 | 
				
			||||||
                .completion_cb("snapshot", complete_backup_snapshot),
 | 
					                .completion_cb("snapshot", complete_backup_snapshot),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@ -535,6 +543,7 @@ pub fn snapshot_mgtm_cli() -> CliCommandMap {
 | 
				
			|||||||
            "upload-log",
 | 
					            "upload-log",
 | 
				
			||||||
            CliCommand::new(&API_METHOD_UPLOAD_LOG)
 | 
					            CliCommand::new(&API_METHOD_UPLOAD_LOG)
 | 
				
			||||||
                .arg_param(&["snapshot", "logfile"])
 | 
					                .arg_param(&["snapshot", "logfile"])
 | 
				
			||||||
 | 
					                .completion_cb("ns", complete_namespace)
 | 
				
			||||||
                .completion_cb("snapshot", complete_backup_snapshot)
 | 
					                .completion_cb("snapshot", complete_backup_snapshot)
 | 
				
			||||||
                .completion_cb("logfile", complete_file_name)
 | 
					                .completion_cb("logfile", complete_file_name)
 | 
				
			||||||
                .completion_cb("keyfile", complete_file_name)
 | 
					                .completion_cb("keyfile", complete_file_name)
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user