client: add completion callbacks for ns parameters

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
Wolfgang Bumiller 2022-05-16 11:13:37 +02:00
parent fb840eda4d
commit 4adb574d74
5 changed files with 43 additions and 16 deletions

View File

@ -15,11 +15,11 @@ use pbs_tools::crypt_config::CryptConfig;
use pbs_tools::json::required_string_param;
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, optional_ns_param, record_repository,
BackupDir, BufferedDynamicReadAt, BufferedDynamicReader, CatalogReader, DynamicIndexReader,
IndexFile, Shell, CATALOG_NAME, KEYFD_SCHEMA, REPO_URL_SCHEMA,
complete_backup_snapshot, complete_group_or_snapshot, complete_namespace,
complete_pxar_archive_name, complete_repository, connect, crypto_parameters, decrypt_key,
dir_or_last_from_group, 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(
@ -265,12 +265,14 @@ pub fn catalog_mgmt_cli() -> CliCommandMap {
let catalog_shell_cmd_def = CliCommand::new(&API_METHOD_CATALOG_SHELL)
.arg_param(&["snapshot", "archive-name"])
.completion_cb("repository", complete_repository)
.completion_cb("ns", complete_namespace)
.completion_cb("archive-name", complete_pxar_archive_name)
.completion_cb("snapshot", complete_group_or_snapshot);
let catalog_dump_cmd_def = CliCommand::new(&API_METHOD_DUMP_CATALOG)
.arg_param(&["snapshot"])
.completion_cb("repository", complete_repository)
.completion_cb("ns", complete_namespace)
.completion_cb("snapshot", complete_backup_snapshot);
CliCommandMap::new()

View File

@ -32,8 +32,8 @@ use pbs_client::catalog_shell::Shell;
use pbs_client::tools::{
complete_archive_name, complete_auth_id, complete_backup_group, complete_backup_snapshot,
complete_backup_source, complete_chunk_size, complete_group_or_snapshot,
complete_img_archive_name, complete_pxar_archive_name, complete_repository, connect,
connect_rate_limited, extract_repository_from_value,
complete_img_archive_name, complete_namespace, complete_pxar_archive_name, complete_repository,
connect, connect_rate_limited, extract_repository_from_value,
key_source::{
crypto_parameters, format_key_source, get_encryption_key_password, KEYFD_SCHEMA,
KEYFILE_SCHEMA, MASTER_PUBKEY_FD_SCHEMA, MASTER_PUBKEY_FILE_SCHEMA,
@ -1638,6 +1638,7 @@ fn main() {
.completion_cb("keyfile", complete_file_name);
let list_cmd_def = CliCommand::new(&API_METHOD_LIST_BACKUP_GROUPS)
.completion_cb("ns", complete_namespace)
.completion_cb("repository", complete_repository);
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)
.arg_param(&["snapshot", "archive-name", "target"])
.completion_cb("repository", complete_repository)
.completion_cb("ns", complete_namespace)
.completion_cb("snapshot", complete_group_or_snapshot)
.completion_cb("archive-name", complete_archive_name)
.completion_cb("target", complete_file_name);
let prune_cmd_def = CliCommand::new(&API_METHOD_PRUNE)
.arg_param(&["group"])
.completion_cb("ns", complete_namespace)
.completion_cb("group", complete_backup_group)
.completion_cb("repository", complete_repository);
@ -1669,6 +1672,7 @@ fn main() {
let change_owner_cmd_def = CliCommand::new(&API_METHOD_CHANGE_BACKUP_OWNER)
.arg_param(&["group", "new-owner"])
.completion_cb("ns", complete_namespace)
.completion_cb("group", complete_backup_group)
.completion_cb("new-owner", complete_auth_id)
.completion_cb("repository", complete_repository);

View File

@ -29,9 +29,10 @@ use pbs_tools::crypt_config::CryptConfig;
use pbs_tools::json::required_string_param;
use crate::{
complete_group_or_snapshot, complete_img_archive_name, complete_pxar_archive_name,
complete_repository, connect, dir_or_last_from_group, extract_repository_from_value,
optional_ns_param, record_repository, BufferedDynamicReadAt, REPO_URL_SCHEMA,
complete_group_or_snapshot, complete_img_archive_name, complete_namespace,
complete_pxar_archive_name, complete_repository, connect, dir_or_last_from_group,
extract_repository_from_value, optional_ns_param, record_repository, BufferedDynamicReadAt,
REPO_URL_SCHEMA,
};
#[sortable]
@ -129,6 +130,7 @@ pub fn mount_cmd_def() -> CliCommand {
CliCommand::new(&API_METHOD_MOUNT)
.arg_param(&["snapshot", "archive-name", "target"])
.completion_cb("repository", complete_repository)
.completion_cb("ns", complete_namespace)
.completion_cb("snapshot", complete_group_or_snapshot)
.completion_cb("archive-name", complete_pxar_archive_name)
.completion_cb("target", complete_file_name)
@ -138,6 +140,7 @@ pub fn map_cmd_def() -> CliCommand {
CliCommand::new(&API_METHOD_MAP)
.arg_param(&["snapshot", "archive-name"])
.completion_cb("repository", complete_repository)
.completion_cb("ns", complete_namespace)
.completion_cb("snapshot", complete_group_or_snapshot)
.completion_cb("archive-name", complete_img_archive_name)
}

View File

@ -9,7 +9,10 @@ use proxmox_router::cli::{
};
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(
input: {
@ -157,14 +160,20 @@ pub fn cli_map() -> CliCommandMap {
CliCommandMap::new()
.insert(
"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(
"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(
"delete",
CliCommand::new(&API_METHOD_DELETE_NAMESPACE).arg_param(&["ns"]),
CliCommand::new(&API_METHOD_DELETE_NAMESPACE)
.arg_param(&["ns"])
.completion_cb("ns", complete_namespace),
)
}

View File

@ -16,8 +16,9 @@ use pbs_tools::json::required_string_param;
use crate::{
api_datastore_list_snapshots, complete_backup_group, complete_backup_snapshot,
complete_repository, connect, crypto_parameters, extract_repository_from_value,
optional_ns_param, record_repository, BackupDir, KEYFD_SCHEMA, KEYFILE_SCHEMA, REPO_URL_SCHEMA,
complete_namespace, complete_repository, connect, crypto_parameters,
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> {
@ -480,12 +481,14 @@ fn protected_cli() -> CliCommandMap {
"show",
CliCommand::new(&API_METHOD_SHOW_PROTECTION)
.arg_param(&["snapshot"])
.completion_cb("ns", complete_namespace)
.completion_cb("snapshot", complete_backup_snapshot),
)
.insert(
"update",
CliCommand::new(&API_METHOD_UPDATE_PROTECTION)
.arg_param(&["snapshot", "protected"])
.completion_cb("ns", complete_namespace)
.completion_cb("snapshot", complete_backup_snapshot),
)
}
@ -496,12 +499,14 @@ fn notes_cli() -> CliCommandMap {
"show",
CliCommand::new(&API_METHOD_SHOW_NOTES)
.arg_param(&["snapshot"])
.completion_cb("ns", complete_namespace)
.completion_cb("snapshot", complete_backup_snapshot),
)
.insert(
"update",
CliCommand::new(&API_METHOD_UPDATE_NOTES)
.arg_param(&["snapshot", "notes"])
.completion_cb("ns", complete_namespace)
.completion_cb("snapshot", complete_backup_snapshot),
)
}
@ -514,6 +519,7 @@ pub fn snapshot_mgtm_cli() -> CliCommandMap {
"list",
CliCommand::new(&API_METHOD_LIST_SNAPSHOTS)
.arg_param(&["group"])
.completion_cb("ns", complete_namespace)
.completion_cb("group", complete_backup_group)
.completion_cb("repository", complete_repository),
)
@ -521,6 +527,7 @@ pub fn snapshot_mgtm_cli() -> CliCommandMap {
"files",
CliCommand::new(&API_METHOD_LIST_SNAPSHOT_FILES)
.arg_param(&["snapshot"])
.completion_cb("ns", complete_namespace)
.completion_cb("repository", complete_repository)
.completion_cb("snapshot", complete_backup_snapshot),
)
@ -528,6 +535,7 @@ pub fn snapshot_mgtm_cli() -> CliCommandMap {
"forget",
CliCommand::new(&API_METHOD_FORGET_SNAPSHOTS)
.arg_param(&["snapshot"])
.completion_cb("ns", complete_namespace)
.completion_cb("repository", complete_repository)
.completion_cb("snapshot", complete_backup_snapshot),
)
@ -535,6 +543,7 @@ pub fn snapshot_mgtm_cli() -> CliCommandMap {
"upload-log",
CliCommand::new(&API_METHOD_UPLOAD_LOG)
.arg_param(&["snapshot", "logfile"])
.completion_cb("ns", complete_namespace)
.completion_cb("snapshot", complete_backup_snapshot)
.completion_cb("logfile", complete_file_name)
.completion_cb("keyfile", complete_file_name)