From b2362a12073bdc3725fdfd0cf6df051c9a1be4cf Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Fri, 18 Dec 2020 12:26:07 +0100 Subject: [PATCH] adaptions for proxmox 0.9 and proxmox-api-macro 0.3 Signed-off-by: Wolfgang Bumiller --- src/api2/admin/datastore.rs | 8 ++++---- src/bin/proxmox-backup-client.rs | 12 ++++++------ src/bin/proxmox-backup-manager.rs | 12 ++++++------ src/bin/proxmox-tape.rs | 4 ++-- src/bin/proxmox_backup_client/benchmark.rs | 5 +++-- src/bin/proxmox_backup_client/key.rs | 10 ++++++++-- src/bin/proxmox_backup_client/snapshot.rs | 9 +++++---- src/bin/proxmox_backup_client/task.rs | 4 ++-- src/bin/proxmox_backup_manager/acl.rs | 2 +- src/bin/proxmox_backup_manager/datastore.rs | 4 ++-- src/bin/proxmox_backup_manager/disk.rs | 8 ++++---- src/bin/proxmox_backup_manager/dns.rs | 2 +- src/bin/proxmox_backup_manager/network.rs | 2 +- src/bin/proxmox_backup_manager/remote.rs | 4 ++-- src/bin/proxmox_backup_manager/subscription.rs | 2 +- src/bin/proxmox_backup_manager/sync.rs | 4 ++-- src/bin/proxmox_backup_manager/user.rs | 4 ++-- src/bin/proxmox_tape/changer.rs | 8 ++++---- src/bin/proxmox_tape/drive.rs | 6 +++--- src/bin/proxmox_tape/media.rs | 2 +- src/bin/proxmox_tape/pool.rs | 4 ++-- src/server/rest.rs | 9 +++++---- 22 files changed, 67 insertions(+), 58 deletions(-) diff --git a/src/api2/admin/datastore.rs b/src/api2/admin/datastore.rs index 16fee943..32352e5c 100644 --- a/src/api2/admin/datastore.rs +++ b/src/api2/admin/datastore.rs @@ -15,7 +15,7 @@ use proxmox::api::{ api, ApiResponseFuture, ApiHandler, ApiMethod, Router, RpcEnvironment, RpcEnvironmentType, Permission }; -use proxmox::api::router::SubdirMap; +use proxmox::api::router::{ReturnType, SubdirMap}; use proxmox::api::schema::*; use proxmox::tools::fs::{replace_file, CreateOptions}; use proxmox::{http_err, identity, list_subdirs_api_method, sortable}; @@ -148,7 +148,7 @@ fn get_all_snapshot_files( }, )] /// List backup groups. -fn list_groups( +pub fn list_groups( store: String, rpcenv: &mut dyn RpcEnvironment, ) -> Result, Error> { @@ -772,7 +772,7 @@ pub const API_RETURN_SCHEMA_PRUNE: Schema = ArraySchema::new( &PruneListItem::API_SCHEMA ).schema(); -const API_METHOD_PRUNE: ApiMethod = ApiMethod::new( +pub const API_METHOD_PRUNE: ApiMethod = ApiMethod::new( &ApiHandler::Sync(&prune), &ObjectSchema::new( "Prune the datastore.", @@ -787,7 +787,7 @@ const API_METHOD_PRUNE: ApiMethod = ApiMethod::new( ("store", false, &DATASTORE_SCHEMA), ]) )) - .returns(&API_RETURN_SCHEMA_PRUNE) + .returns(ReturnType::new(false, &API_RETURN_SCHEMA_PRUNE)) .access(None, &Permission::Privilege( &["datastore", "{store}"], PRIV_DATASTORE_MODIFY | PRIV_DATASTORE_PRUNE, diff --git a/src/bin/proxmox-backup-client.rs b/src/bin/proxmox-backup-client.rs index 6cf81952..b8f09a4a 100644 --- a/src/bin/proxmox-backup-client.rs +++ b/src/bin/proxmox-backup-client.rs @@ -412,9 +412,9 @@ async fn list_backup_groups(param: Value) -> Result { let mut data: Value = result["data"].take(); - let info = &proxmox_backup::api2::admin::datastore::API_RETURN_SCHEMA_LIST_GROUPS; + let return_type = &proxmox_backup::api2::admin::datastore::API_METHOD_LIST_GROUPS.returns; - format_and_print_result_full(&mut data, info, &output_format, &options); + format_and_print_result_full(&mut data, return_type, &output_format, &options); Ok(Value::Null) } @@ -1458,7 +1458,7 @@ async fn prune_async(mut param: Value) -> Result { .column(ColumnConfig::new("keep").renderer(render_prune_action).header("action")) ; - let info = &proxmox_backup::api2::admin::datastore::API_RETURN_SCHEMA_PRUNE; + let return_type = &proxmox_backup::api2::admin::datastore::API_METHOD_PRUNE.returns; let mut data = result["data"].take(); @@ -1469,7 +1469,7 @@ async fn prune_async(mut param: Value) -> Result { data = list.into(); } - format_and_print_result_full(&mut data, info, &output_format, &options); + format_and_print_result_full(&mut data, return_type, &output_format, &options); Ok(Value::Null) } @@ -1522,9 +1522,9 @@ async fn status(param: Value) -> Result { .column(ColumnConfig::new("used").renderer(render_total_percentage)) .column(ColumnConfig::new("avail").renderer(render_total_percentage)); - let schema = &API_RETURN_SCHEMA_STATUS; + let return_type = &API_METHOD_STATUS.returns; - format_and_print_result_full(&mut data, schema, &output_format, &options); + format_and_print_result_full(&mut data, return_type, &output_format, &options); Ok(Value::Null) } diff --git a/src/bin/proxmox-backup-manager.rs b/src/bin/proxmox-backup-manager.rs index 8ad4c7dc..ff2a1dc1 100644 --- a/src/bin/proxmox-backup-manager.rs +++ b/src/bin/proxmox-backup-manager.rs @@ -106,11 +106,11 @@ async fn garbage_collection_status(param: Value) -> Result { let mut result = client.get(&path, None).await?; let mut data = result["data"].take(); - let schema = &api2::admin::datastore::API_RETURN_SCHEMA_GARBAGE_COLLECTION_STATUS; + let return_type = &api2::admin::datastore::API_METHOD_GARBAGE_COLLECTION_STATUS.returns; let options = default_table_format_options(); - format_and_print_result_full(&mut data, schema, &output_format, &options); + format_and_print_result_full(&mut data, return_type, &output_format, &options); Ok(Value::Null) } @@ -172,7 +172,7 @@ async fn task_list(param: Value) -> Result { let mut result = client.get("api2/json/nodes/localhost/tasks", Some(args)).await?; let mut data = result["data"].take(); - let schema = &api2::node::tasks::API_RETURN_SCHEMA_LIST_TASKS; + let return_type = &api2::node::tasks::API_METHOD_LIST_TASKS.returns; let options = default_table_format_options() .column(ColumnConfig::new("starttime").right_align(false).renderer(tools::format::render_epoch)) @@ -180,7 +180,7 @@ async fn task_list(param: Value) -> Result { .column(ColumnConfig::new("upid")) .column(ColumnConfig::new("status").renderer(tools::format::render_task_status)); - format_and_print_result_full(&mut data, schema, &output_format, &options); + format_and_print_result_full(&mut data, return_type, &output_format, &options); Ok(Value::Null) } @@ -370,9 +370,9 @@ async fn get_versions(verbose: bool, param: Value) -> Result { .column(ColumnConfig::new("Version")) .column(ColumnConfig::new("ExtraInfo").header("Extra Info")) ; - let schema = &crate::api2::node::apt::API_RETURN_SCHEMA_GET_VERSIONS; + let return_type = &crate::api2::node::apt::API_METHOD_GET_VERSIONS.returns; - format_and_print_result_full(&mut packages, schema, &output_format, &options); + format_and_print_result_full(&mut packages, return_type, &output_format, &options); Ok(Value::Null) } diff --git a/src/bin/proxmox-tape.rs b/src/bin/proxmox-tape.rs index 70d20ddf..6c138ca4 100644 --- a/src/bin/proxmox-tape.rs +++ b/src/bin/proxmox-tape.rs @@ -313,7 +313,7 @@ async fn read_label( .column(ColumnConfig::new("media-set-ctime").renderer(render_epoch)) ; - format_and_print_result_full(&mut data, info.returns, &output_format, &options); + format_and_print_result_full(&mut data, &info.returns, &output_format, &options); Ok(()) } @@ -385,7 +385,7 @@ async fn inventory( .column(ColumnConfig::new("uuid")) ; - format_and_print_result_full(&mut data, info.returns, &output_format, &options); + format_and_print_result_full(&mut data, &info.returns, &output_format, &options); Ok(()) } diff --git a/src/bin/proxmox_backup_client/benchmark.rs b/src/bin/proxmox_backup_client/benchmark.rs index e53e43ce..2ecb3dc9 100644 --- a/src/bin/proxmox_backup_client/benchmark.rs +++ b/src/bin/proxmox_backup_client/benchmark.rs @@ -15,6 +15,7 @@ use proxmox::api::{ format_and_print_result_full, default_table_format_options, }, + router::ReturnType, }; use proxmox_backup::backup::{ @@ -178,7 +179,7 @@ fn render_result( ) -> Result<(), Error> { let mut data = serde_json::to_value(benchmark_result)?; - let schema = &BenchmarkResult::API_SCHEMA; + let return_type = ReturnType::new(false, &BenchmarkResult::API_SCHEMA); let render_speed = |value: &Value, _record: &Value| -> Result { match value["speed"].as_f64() { @@ -211,7 +212,7 @@ fn render_result( .right_align(false).renderer(render_speed)); - format_and_print_result_full(&mut data, schema, output_format, &options); + format_and_print_result_full(&mut data, &return_type, output_format, &options); Ok(()) } diff --git a/src/bin/proxmox_backup_client/key.rs b/src/bin/proxmox_backup_client/key.rs index e49131c1..109f0384 100644 --- a/src/bin/proxmox_backup_client/key.rs +++ b/src/bin/proxmox_backup_client/key.rs @@ -15,6 +15,7 @@ use proxmox::api::cli::{ get_output_format, OUTPUT_FORMAT, }; +use proxmox::api::router::ReturnType; use proxmox::sys::linux::tty; use proxmox::tools::fs::{file_get_contents, replace_file, CreateOptions}; @@ -382,9 +383,14 @@ fn show_key( .column(ColumnConfig::new("modified").renderer(tools::format::render_epoch)) .column(ColumnConfig::new("fingerprint")); - let schema = &KeyInfo::API_SCHEMA; + let return_type = ReturnType::new(false, &KeyInfo::API_SCHEMA); - format_and_print_result_full(&mut serde_json::to_value(info)?, schema, &output_format, &options); + format_and_print_result_full( + &mut serde_json::to_value(info)?, + &return_type, + &output_format, + &options, + ); Ok(()) } diff --git a/src/bin/proxmox_backup_client/snapshot.rs b/src/bin/proxmox_backup_client/snapshot.rs index 7be0480f..3bdc5f33 100644 --- a/src/bin/proxmox_backup_client/snapshot.rs +++ b/src/bin/proxmox_backup_client/snapshot.rs @@ -97,9 +97,9 @@ async fn list_snapshots(param: Value) -> Result { .column(ColumnConfig::new("files").renderer(render_files)) ; - let info = &proxmox_backup::api2::admin::datastore::API_RETURN_SCHEMA_LIST_SNAPSHOTS; + let return_type = &proxmox_backup::api2::admin::datastore::API_METHOD_LIST_SNAPSHOTS.returns; - format_and_print_result_full(&mut data, info, &output_format, &options); + format_and_print_result_full(&mut data, return_type, &output_format, &options); Ok(Value::Null) } @@ -144,13 +144,14 @@ async fn list_snapshot_files(param: Value) -> Result { record_repository(&repo); - let info = &proxmox_backup::api2::admin::datastore::API_RETURN_SCHEMA_LIST_SNAPSHOT_FILES; + let return_type = + &proxmox_backup::api2::admin::datastore::API_METHOD_LIST_SNAPSHOT_FILES.returns; let mut data: Value = result["data"].take(); let options = default_table_format_options(); - format_and_print_result_full(&mut data, info, &output_format, &options); + format_and_print_result_full(&mut data, return_type, &output_format, &options); Ok(Value::Null) } diff --git a/src/bin/proxmox_backup_client/task.rs b/src/bin/proxmox_backup_client/task.rs index 6f567f22..e4adaf58 100644 --- a/src/bin/proxmox_backup_client/task.rs +++ b/src/bin/proxmox_backup_client/task.rs @@ -64,7 +64,7 @@ async fn task_list(param: Value) -> Result { let mut result = client.get("api2/json/nodes/localhost/tasks", Some(args)).await?; let mut data = result["data"].take(); - let schema = &proxmox_backup::api2::node::tasks::API_RETURN_SCHEMA_LIST_TASKS; + let return_type = &proxmox_backup::api2::node::tasks::API_METHOD_LIST_TASKS.returns; let options = default_table_format_options() .column(ColumnConfig::new("starttime").right_align(false).renderer(tools::format::render_epoch)) @@ -72,7 +72,7 @@ async fn task_list(param: Value) -> Result { .column(ColumnConfig::new("upid")) .column(ColumnConfig::new("status").renderer(tools::format::render_task_status)); - format_and_print_result_full(&mut data, schema, &output_format, &options); + format_and_print_result_full(&mut data, return_type, &output_format, &options); Ok(Value::Null) } diff --git a/src/bin/proxmox_backup_manager/acl.rs b/src/bin/proxmox_backup_manager/acl.rs index 7511c8cb..b23943ca 100644 --- a/src/bin/proxmox_backup_manager/acl.rs +++ b/src/bin/proxmox_backup_manager/acl.rs @@ -47,7 +47,7 @@ fn list_acls(param: Value, rpcenv: &mut dyn RpcEnvironment) -> Result Result Result Result Result let mut data = data["attributes"].take(); let options = default_table_format_options(); - format_and_print_result_full(&mut data, API_METHOD_SMART_ATTRIBUTES.returns, &output_format, &options); + format_and_print_result_full(&mut data, &API_METHOD_SMART_ATTRIBUTES.returns, &output_format, &options); Ok(Value::Null) } @@ -227,7 +227,7 @@ fn list_zpools(mut param: Value, rpcenv: &mut dyn RpcEnvironment) -> Result R .column(ColumnConfig::new("filesystem")) .column(ColumnConfig::new("options")); - format_and_print_result_full(&mut data, info.returns, &output_format, &options); + format_and_print_result_full(&mut data, &info.returns, &output_format, &options); Ok(Value::Null) } diff --git a/src/bin/proxmox_backup_manager/dns.rs b/src/bin/proxmox_backup_manager/dns.rs index c735b22e..9a91cb06 100644 --- a/src/bin/proxmox_backup_manager/dns.rs +++ b/src/bin/proxmox_backup_manager/dns.rs @@ -35,7 +35,7 @@ fn get_dns(mut param: Value, rpcenv: &mut dyn RpcEnvironment) -> Result Re .column(ColumnConfig::new("gateway").header("gateway").renderer(render_gateway)) .column(ColumnConfig::new("bridge_ports").header("ports/slaves").renderer(render_ports)); - format_and_print_result_full(&mut data, info.returns, &output_format, &options); + format_and_print_result_full(&mut data, &info.returns, &output_format, &options); Ok(Value::Null) } diff --git a/src/bin/proxmox_backup_manager/remote.rs b/src/bin/proxmox_backup_manager/remote.rs index 04d714ef..b1c4aa45 100644 --- a/src/bin/proxmox_backup_manager/remote.rs +++ b/src/bin/proxmox_backup_manager/remote.rs @@ -34,7 +34,7 @@ fn list_remotes(param: Value, rpcenv: &mut dyn RpcEnvironment) -> Result Result Result { }; let options = default_table_format_options(); - format_and_print_result_full(&mut data, info.returns, &output_format, &options); + format_and_print_result_full(&mut data, &info.returns, &output_format, &options); Ok(Value::Null) } diff --git a/src/bin/proxmox_backup_manager/sync.rs b/src/bin/proxmox_backup_manager/sync.rs index f21ecb5f..f05f0c8d 100644 --- a/src/bin/proxmox_backup_manager/sync.rs +++ b/src/bin/proxmox_backup_manager/sync.rs @@ -35,7 +35,7 @@ fn list_sync_jobs(param: Value, rpcenv: &mut dyn RpcEnvironment) -> Result Result Result Result> for ApiService { } fn parse_query_parameters( - param_schema: &ObjectSchema, + param_schema: ParameterSchema, form: &str, // x-www-form-urlencoded body data parts: &Parts, uri_param: &HashMap, @@ -264,7 +265,7 @@ fn parse_query_parameters( } async fn get_request_parameters( - param_schema: &ObjectSchema, + param_schema: ParameterSchema, parts: Parts, req_body: Body, uri_param: HashMap, @@ -305,7 +306,7 @@ async fn get_request_parameters( params[&k] = parse_simple_value(&v, prop_schema)?; } } - verify_json_object(¶ms, param_schema)?; + verify_json_object(¶ms, ¶m_schema)?; return Ok(params); } else { parse_query_parameters(param_schema, utf8_data, &parts, &uri_param) -- 2.39.2