]> git.proxmox.com Git - proxmox-backup.git/commitdiff
src/bin/proxmox-backup-client.rs: impl. catalog sub command
authorDietmar Maurer <dietmar@proxmox.com>
Mon, 9 Dec 2019 12:07:25 +0000 (13:07 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Mon, 9 Dec 2019 12:07:25 +0000 (13:07 +0100)
catalog dump
catalog shell

src/bin/proxmox-backup-client.rs

index ef2c976c69c34a56c6670166d7c3ea308035d4c2..8a01de2b54ba898ac6f2408dc0cd99f62d23ac8b 100644 (file)
@@ -1761,15 +1761,15 @@ async fn mount_do(param: Value, pipe: Option<RawFd>) -> Result<Value, Error> {
     Ok(Value::Null)
 }
 
-fn shell(
+fn catalog_shell(
     param: Value,
     _info: &ApiMethod,
     _rpcenv: &mut dyn RpcEnvironment,
 ) -> Result<Value, Error> {
-    async_main(catalog_shell(param))
+    async_main(catalog_shell_async(param))
 }
 
-async fn catalog_shell(param: Value) -> Result<Value, Error> {
+async fn catalog_shell_async(param: Value) -> Result<Value, Error> {
     let repo = extract_repository_from_value(&param)?;
     let client = HttpClient::new(repo.host(), repo.user(), None)?;
     let path = tools::required_string_param(&param, "snapshot")?;
@@ -1876,6 +1876,51 @@ async fn catalog_shell(param: Value) -> Result<Value, Error> {
     Ok(Value::Null)
 }
 
+fn catalog_mgmt_cli() -> CliCommandMap {
+
+    #[sortable]
+    const API_METHOD_SHELL: ApiMethod = ApiMethod::new(
+        &ApiHandler::Sync(&catalog_shell),
+        &ObjectSchema::new(
+            "Shell to interactively inspect and restore snapshots.",
+            &sorted!([
+                ("snapshot", false, &StringSchema::new("Group/Snapshot path.").schema()),
+                ("archive-name", false, &StringSchema::new("Backup archive name.").schema()),
+                ("repository", true, &REPO_URL_SCHEMA),
+                ("keyfile", true, &StringSchema::new("Path to encryption key.").schema()),
+            ]),
+        )
+    );
+
+    let catalog_shell_cmd_def = CliCommand::new(&API_METHOD_SHELL)
+        .arg_param(&["snapshot", "archive-name"])
+        .completion_cb("repository", complete_repository)
+        .completion_cb("archive-name", complete_archive_name)
+        .completion_cb("snapshot", complete_group_or_snapshot);
+
+    #[sortable]
+    const API_METHOD_DUMP_CATALOG: ApiMethod = ApiMethod::new(
+        &ApiHandler::Sync(&dump_catalog),
+        &ObjectSchema::new(
+            "Dump catalog.",
+            &sorted!([
+                ("snapshot", false, &StringSchema::new("Snapshot path.").schema()),
+                ("repository", true, &REPO_URL_SCHEMA),
+            ]),
+        )
+    );
+
+    let catalog_dump_cmd_def = CliCommand::new(&API_METHOD_DUMP_CATALOG)
+        .arg_param(&["snapshot"])
+        .completion_cb("repository", complete_repository)
+        .completion_cb("snapshot", complete_backup_snapshot);
+
+    CliCommandMap::new()
+        .insert("dump".to_owned(), catalog_dump_cmd_def.into())
+        .insert("shell".to_owned(), catalog_shell_cmd_def.into())
+}
+
+
 fn main() {
 
     const BACKUP_SOURCE_SCHEMA: Schema = StringSchema::new("Backup source specification ([<label>:<path>]).")
@@ -2126,23 +2171,6 @@ We do not extraxt '.pxar' archives when writing to stdandard output.
         .completion_cb("repository", complete_repository)
         .completion_cb("snapshot", complete_backup_snapshot);
 
-    #[sortable]
-    const API_METHOD_DUMP_CATALOG: ApiMethod = ApiMethod::new(
-        &ApiHandler::Sync(&dump_catalog),
-        &ObjectSchema::new(
-            "Dump catalog.",
-            &sorted!([
-                ("snapshot", false, &StringSchema::new("Snapshot path.").schema()),
-                ("repository", true, &REPO_URL_SCHEMA),
-            ]),
-        )
-    );
-
-    let catalog_cmd_def = CliCommand::new(&API_METHOD_DUMP_CATALOG)
-        .arg_param(&["snapshot"])
-        .completion_cb("repository", complete_repository)
-        .completion_cb("snapshot", complete_backup_snapshot);
-
     const API_METHOD_PRUNE: ApiMethod = ApiMethod::new(
         &ApiHandler::Sync(&prune),
         &ObjectSchema::new(
@@ -2226,31 +2254,11 @@ We do not extraxt '.pxar' archives when writing to stdandard output.
         .completion_cb("archive-name", complete_archive_name)
         .completion_cb("target", tools::complete_file_name);
 
-    #[sortable]
-    const API_METHOD_SHELL: ApiMethod = ApiMethod::new(
-        &ApiHandler::Sync(&shell),
-        &ObjectSchema::new(
-            "Shell to interactively inspect and restore snapshots.",
-            &sorted!([
-                ("snapshot", false, &StringSchema::new("Group/Snapshot path.").schema()),
-                ("archive-name", false, &StringSchema::new("Backup archive name.").schema()),
-                ("repository", true, &REPO_URL_SCHEMA),
-                ("keyfile", true, &StringSchema::new("Path to encryption key.").schema()),
-            ]),
-        )
-    );
-
-    let shell_cmd_def = CliCommand::new(&API_METHOD_SHELL)
-        .arg_param(&["snapshot", "archive-name"])
-        .completion_cb("repository", complete_repository)
-        .completion_cb("archive-name", complete_archive_name)
-        .completion_cb("snapshot", complete_group_or_snapshot);
 
     let cmd_def = CliCommandMap::new()
         .insert("backup".to_owned(), backup_cmd_def.into())
         .insert("upload-log".to_owned(), upload_log_cmd_def.into())
         .insert("forget".to_owned(), forget_cmd_def.into())
-        .insert("catalog".to_owned(), catalog_cmd_def.into())
         .insert("garbage-collect".to_owned(), garbage_collect_cmd_def.into())
         .insert("list".to_owned(), list_cmd_def.into())
         .insert("login".to_owned(), login_cmd_def.into())
@@ -2262,7 +2270,7 @@ We do not extraxt '.pxar' archives when writing to stdandard output.
         .insert("status".to_owned(), status_cmd_def.into())
         .insert("key".to_owned(), key_mgmt_cli().into())
         .insert("mount".to_owned(), mount_cmd_def.into())
-        .insert("shell".to_owned(), shell_cmd_def.into());
+        .insert("catalog".to_owned(), catalog_mgmt_cli().into());
 
     run_cli_command(cmd_def.into());
 }