From: Christian Ebner <c.ebner@proxmox.com>
To: Proxmox Backup Server development discussion
<pbs-devel@lists.proxmox.com>,
Hannes Laimer <h.laimer@proxmox.com>
Subject: Re: [pbs-devel] [PATCH proxmox-backup v3 11/24] pb-manager: add (un)mount command
Date: Tue, 16 Apr 2024 09:50:20 +0200 [thread overview]
Message-ID: <d62f6fcf-746b-443d-a20c-5c6fc3d95a33@proxmox.com> (raw)
In-Reply-To: <20240409110012.166472-12-h.laimer@proxmox.com>
one question inline
On 4/9/24 12:59, Hannes Laimer wrote:
> Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
> ---
> pbs-config/src/datastore.rs | 14 ++++
> src/bin/proxmox_backup_manager/datastore.rs | 76 ++++++++++++++++++++-
> 2 files changed, 89 insertions(+), 1 deletion(-)
>
> diff --git a/pbs-config/src/datastore.rs b/pbs-config/src/datastore.rs
> index 5844a174..a540788f 100644
> --- a/pbs-config/src/datastore.rs
> +++ b/pbs-config/src/datastore.rs
> @@ -63,6 +63,20 @@ pub fn complete_datastore_name(_arg: &str, _param: &HashMap<String, String>) ->
> }
> }
>
> +pub fn complete_removable_datastore_name(
> + _arg: &str,
> + _param: &HashMap<String, String>,
> +) -> Vec<String> {
> + match config() {
> + Ok((data, _digest)) => data
> + .sections
> + .into_iter()
> + .filter_map(|(name, (_, c))| c.get("backing-device").map(|_| name))
> + .collect(),
> + Err(_) => Vec::new(),
> + }
> +}
> +
> pub fn complete_acl_path(_arg: &str, _param: &HashMap<String, String>) -> Vec<String> {
> let mut list = vec![
> String::from("/"),
> diff --git a/src/bin/proxmox_backup_manager/datastore.rs b/src/bin/proxmox_backup_manager/datastore.rs
> index 383bcd24..f8462459 100644
> --- a/src/bin/proxmox_backup_manager/datastore.rs
> +++ b/src/bin/proxmox_backup_manager/datastore.rs
> @@ -1,4 +1,4 @@
> -use anyhow::Error;
> +use anyhow::{format_err, Error};
> use serde_json::Value;
>
> use proxmox_router::{cli::*, ApiHandler, RpcEnvironment};
> @@ -40,6 +40,34 @@ fn list_datastores(param: Value, rpcenv: &mut dyn RpcEnvironment) -> Result<Valu
> Ok(Value::Null)
> }
>
> +#[api(
> + protected: true,
> + input: {
> + properties: {
> + store: {
> + schema: DATASTORE_SCHEMA,
> + },
> + digest: {
> + optional: true,
> + schema: PROXMOX_CONFIG_DIGEST_SCHEMA,
> + },
> + },
> + },
> +)]
> +/// Mount a removable a datastore configuration.
> +async fn mount_datastore(mut param: Value, rpcenv: &mut dyn RpcEnvironment) -> Result<(), Error> {
> + param["node"] = "localhost".into();
> +
> + let info = &api2::admin::datastore::API_METHOD_MOUNT;
> + let result = match info.handler {
> + ApiHandler::Sync(handler) => (handler)(param, info, rpcenv)?,
> + _ => unreachable!(),
> + };
> +
> + crate::wait_for_local_worker(result.as_str().unwrap()).await?;
as already mentioned in the patch introducing the mount api method, is
the dedicated worker task needed for the mount? Is this expected to take
some prolonged time in some cases?
> + Ok(())
> +}
> +
> #[api(
> input: {
> properties: {
> @@ -99,6 +127,34 @@ async fn create_datastore(mut param: Value) -> Result<Value, Error> {
> Ok(Value::Null)
> }
>
> +#[api(
> + protected: true,
> + input: {
> + properties: {
> + store: {
> + schema: DATASTORE_SCHEMA,
> + },
> + digest: {
> + optional: true,
> + schema: PROXMOX_CONFIG_DIGEST_SCHEMA,
> + },
> + },
> + },
> +)]
> +/// Unmunt a removable a datastore configuration.
> +async fn unmount_datastore(mut param: Value, rpcenv: &mut dyn RpcEnvironment) -> Result<(), Error> {
> + param["node"] = "localhost".into();
> +
> + let info = &api2::admin::datastore::API_METHOD_UNMOUNT;
> + let result = match info.handler {
> + ApiHandler::Async(handler) => (handler)(param, info, rpcenv).await?,
> + _ => unreachable!(),
> + };
> +
> + crate::wait_for_local_worker(result.as_str().unwrap()).await?;
> + Ok(())
> +}
> +
> #[api(
> protected: true,
> input: {
> @@ -142,6 +198,15 @@ async fn delete_datastore(mut param: Value, rpcenv: &mut dyn RpcEnvironment) ->
> pub fn datastore_commands() -> CommandLineInterface {
> let cmd_def = CliCommandMap::new()
> .insert("list", CliCommand::new(&API_METHOD_LIST_DATASTORES))
> + .insert(
> + "mount",
> + CliCommand::new(&API_METHOD_MOUNT_DATASTORE)
> + .arg_param(&["store"])
> + .completion_cb(
> + "store",
> + pbs_config::datastore::complete_removable_datastore_name,
> + ),
> + )
> .insert(
> "show",
> CliCommand::new(&API_METHOD_SHOW_DATASTORE)
> @@ -152,6 +217,15 @@ pub fn datastore_commands() -> CommandLineInterface {
> "create",
> CliCommand::new(&API_METHOD_CREATE_DATASTORE).arg_param(&["name", "path"]),
> )
> + .insert(
> + "unmount",
> + CliCommand::new(&API_METHOD_UNMOUNT_DATASTORE)
> + .arg_param(&["store"])
> + .completion_cb(
> + "store",
> + pbs_config::datastore::complete_removable_datastore_name,
> + ),
> + )
> .insert(
> "update",
> CliCommand::new(&api2::config::datastore::API_METHOD_UPDATE_DATASTORE)
next prev parent reply other threads:[~2024-04-16 7:50 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-09 10:59 [pbs-devel] [PATCH proxmox-backup v3 00/24] add removable datastores Hannes Laimer
2024-04-09 10:59 ` [pbs-devel] [PATCH proxmox-backup v3 01/24] tools: add disks utility functions Hannes Laimer
2024-04-09 10:59 ` [pbs-devel] [PATCH proxmox-backup v3 02/24] pbs-api-types: add backing-device to DataStoreConfig Hannes Laimer
2024-04-10 8:13 ` Dietmar Maurer
2024-04-11 10:04 ` Dietmar Maurer
2024-04-15 15:17 ` Christian Ebner
2024-04-09 10:59 ` [pbs-devel] [PATCH proxmox-backup v3 03/24] maintenance: add 'Unpplugged' maintenance type Hannes Laimer
2024-04-11 7:19 ` Dietmar Maurer
2024-04-11 8:16 ` Hannes Laimer
2024-04-09 10:59 ` [pbs-devel] [PATCH proxmox-backup v3 04/24] disks: add UUID to partition info Hannes Laimer
2024-04-09 10:59 ` [pbs-devel] [PATCH proxmox-backup v3 05/24] add helper for checking if a removable datastore is available Hannes Laimer
2024-04-10 8:40 ` Dietmar Maurer
2024-04-15 15:09 ` Christian Ebner
2024-04-16 14:17 ` Hannes Laimer
2024-04-09 10:59 ` [pbs-devel] [PATCH proxmox-backup v3 06/24] api2: admin: add (un)mount endpoint for removable datastores Hannes Laimer
2024-04-10 9:02 ` Dietmar Maurer
2024-04-10 9:08 ` Hannes Laimer
2024-04-10 10:41 ` Dietmar Maurer
2024-04-10 9:12 ` Dietmar Maurer
2024-04-15 15:50 ` Christian Ebner
2024-04-16 14:25 ` Hannes Laimer
2024-04-09 10:59 ` [pbs-devel] [PATCH proxmox-backup v3 07/24] api2: removable datastore creation Hannes Laimer
2024-04-10 9:33 ` Dietmar Maurer
2024-04-15 16:02 ` Christian Ebner
2024-04-16 14:27 ` Hannes Laimer
2024-04-09 10:59 ` [pbs-devel] [PATCH proxmox-backup v3 08/24] api2: disks list: add only-unused flag Hannes Laimer
2024-04-15 16:27 ` Christian Ebner
2024-04-09 10:59 ` [pbs-devel] [PATCH proxmox-backup v3 09/24] pbs-api-types: datastore: use new proxmox_scheme::de for deserialization Hannes Laimer
2024-04-09 10:59 ` [pbs-devel] [PATCH proxmox-backup v3 10/24] pbs-api-types: add removable/is-available flag to DataStoreListItem Hannes Laimer
2024-04-16 7:37 ` Christian Ebner
2024-04-09 10:59 ` [pbs-devel] [PATCH proxmox-backup v3 11/24] pb-manager: add (un)mount command Hannes Laimer
2024-04-10 10:08 ` Dietmar Maurer
2024-04-16 7:50 ` Christian Ebner [this message]
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 12/24] add auto-mounting for removable datastores Hannes Laimer
2024-04-16 8:05 ` Christian Ebner
2024-04-16 14:39 ` Hannes Laimer
2024-04-16 8:45 ` Christian Ebner
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 13/24] api: mark removable datastores as unplugged after restart Hannes Laimer
2024-04-10 11:18 ` Dietmar Maurer
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 14/24] datastore: handle deletion of removable datastore properly Hannes Laimer
2024-04-16 8:10 ` Christian Ebner
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 15/24] docs: mention maintenance mode reset when removable datastore is unplugged Hannes Laimer
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 16/24] ui: add partition selector form Hannes Laimer
2024-04-16 8:57 ` Christian Ebner
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 17/24] ui: add removable datastore creation support Hannes Laimer
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 18/24] ui: add (un)mount button to summary Hannes Laimer
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 19/24] ui: display removable datastores in list Hannes Laimer
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 20/24] ui: utils: render unplugged maintenance mode correctly Hannes Laimer
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 21/24] ui: utils: make parseMaintenanceMode more robust Hannes Laimer
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 22/24] ui: add datastore status mask for unplugged removable datastores Hannes Laimer
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 23/24] ui: maintenance: fix disable msg field if no type is selected Hannes Laimer
2024-04-09 11:00 ` [pbs-devel] [PATCH proxmox-backup v3 24/24] ui: maintenance: disable edit if unplugged Hannes Laimer
2024-04-16 9:37 ` [pbs-devel] [PATCH proxmox-backup v3 00/24] add removable datastores Christian Ebner
2024-04-16 15:03 ` Hannes Laimer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d62f6fcf-746b-443d-a20c-5c6fc3d95a33@proxmox.com \
--to=c.ebner@proxmox.com \
--cc=h.laimer@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox