From: Wolfgang Bumiller <w.bumiller@proxmox.com>
To: Hannes Laimer <h.laimer@proxmox.com>
Cc: pbs-devel@lists.proxmox.com
Subject: Re: [pbs-devel] [PATCH proxmox-backup v3 3/6] manager: add completion for opt. Remote in SyncJob
Date: Thu, 24 Aug 2023 11:24:32 +0200 [thread overview]
Message-ID: <u7moh5ccud3zjakzrym5buwacclo6pooe26l4u7eyprhoaxnny@lbl4gwpwokqy> (raw)
In-Reply-To: <20230808121344.199500-4-h.laimer@proxmox.com>
On Tue, Aug 08, 2023 at 02:13:41PM +0200, Hannes Laimer wrote:
> Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
> ---
> src/bin/proxmox-backup-manager.rs | 67 +++++++++++++++++++------------
> 1 file changed, 41 insertions(+), 26 deletions(-)
>
> diff --git a/src/bin/proxmox-backup-manager.rs b/src/bin/proxmox-backup-manager.rs
> index b4cb6cb3..eadfe547 100644
> --- a/src/bin/proxmox-backup-manager.rs
> +++ b/src/bin/proxmox-backup-manager.rs
> @@ -535,35 +535,33 @@ fn get_remote(param: &HashMap<String, String>) -> Option<String> {
> param.get("remote").map(|r| r.to_owned()).or_else(|| {
> if let Some(id) = param.get("id") {
> if let Ok(job) = get_sync_job(id) {
> - return Some(job.remote);
> + return job.remote;
^ belongs in patch 1
> }
> }
> None
> })
> }
>
> -fn get_remote_store(param: &HashMap<String, String>) -> Option<(String, String)> {
> +fn get_remote_store(param: &HashMap<String, String>) -> Option<(Option<String>, String)> {
> let mut job: Option<SyncJobConfig> = None;
>
> let remote = param.get("remote").map(|r| r.to_owned()).or_else(|| {
> if let Some(id) = param.get("id") {
> job = get_sync_job(id).ok();
> if let Some(ref job) = job {
> - return Some(job.remote.clone());
> + return job.remote.clone();
^ belongs in patch 1
> }
> }
> None
> });
>
> - if let Some(remote) = remote {
> - let store = param
> - .get("remote-store")
> - .map(|r| r.to_owned())
> - .or_else(|| job.map(|job| job.remote_store));
> + let store = param
> + .get("remote-store")
> + .map(|r| r.to_owned())
> + .or_else(|| job.map(|job| job.remote_store));
>
> - if let Some(store) = store {
> - return Some((remote, store));
> - }
> + if let Some(store) = store {
> + return Some((remote, store));
> }
>
> None
> @@ -584,7 +582,7 @@ fn get_remote_ns(param: &HashMap<String, String>) -> Option<BackupNamespace> {
> }
>
> // shell completion helper
> -pub fn complete_remote_datastore_name(_arg: &str, param: &HashMap<String, String>) -> Vec<String> {
> +pub fn complete_remote_datastore_name(arg: &str, param: &HashMap<String, String>) -> Vec<String> {
> let mut list = Vec::new();
>
> if let Some(remote) = get_remote(param) {
> @@ -595,7 +593,9 @@ pub fn complete_remote_datastore_name(_arg: &str, param: &HashMap<String, String
> list.push(item.store);
> }
> }
> - }
> + } else {
> + list = pbs_config::datastore::complete_datastore_name(arg, param);
> + };
>
> list
> }
> @@ -607,17 +607,25 @@ pub fn complete_remote_datastore_namespace(
> ) -> Vec<String> {
> let mut list = Vec::new();
>
> - if let Some((remote, remote_store)) = get_remote_store(param) {
> - if let Ok(data) = proxmox_async::runtime::block_on(async move {
> + if let Some(data) = match get_remote_store(param) {
> + Some((Some(remote), remote_store)) => proxmox_async::runtime::block_on(async move {
> crate::api2::config::remote::scan_remote_namespaces(
> remote.clone(),
> remote_store.clone(),
> )
> .await
> - }) {
> - for item in data {
> - list.push(item.ns.name());
> - }
> + .ok()
> + }),
> + Some((None, source_store)) => {
Something about "remote store" vs "source store" just bugs me here...
Pull jobs should altogether just have a 'source' instead of a 'remote'
:-/
> + let mut rpcenv = CliEnvironment::new();
> + rpcenv.set_auth_id(Some(String::from("root@pam")));
> + crate::api2::admin::namespace::list_namespaces(source_store, None, None, &mut rpcenv)
> + .ok()
> + }
> + _ => None,
> + } {
> + for item in data {
> + list.push(item.ns.name());
> }
> }
>
> @@ -662,19 +670,26 @@ pub fn complete_sync_local_datastore_namespace(
> pub fn complete_remote_datastore_group(_arg: &str, param: &HashMap<String, String>) -> Vec<String> {
> let mut list = Vec::new();
>
> - if let Some((remote, remote_store)) = get_remote_store(param) {
> - let ns = get_remote_ns(param);
> - if let Ok(data) = proxmox_async::runtime::block_on(async move {
> + let ns = get_remote_ns(param);
> + if let Some(data) = match get_remote_store(param) {
> + Some((Some(remote), remote_store)) => proxmox_async::runtime::block_on(async move {
> crate::api2::config::remote::scan_remote_groups(
> remote.clone(),
> remote_store.clone(),
> ns,
> )
> .await
> - }) {
> - for item in data {
> - list.push(format!("{}/{}", item.backup.ty, item.backup.id));
> - }
> + .ok()
> + }),
> + Some((None, source_store)) => {
> + let mut rpcenv = CliEnvironment::new();
> + rpcenv.set_auth_id(Some(String::from("root@pam")));
> + crate::api2::admin::datastore::list_groups(source_store, ns, &mut rpcenv).ok()
> + }
> + _ => None,
> + } {
> + for item in data {
> + list.push(format!("{}/{}", item.backup.ty, item.backup.id));
> }
> }
>
> --
> 2.39.2
next prev parent reply other threads:[~2023-08-24 9:25 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-08 12:13 [pbs-devel] [PATCH proxmox-backup v3 0/6] local sync-jobs Hannes Laimer
2023-08-08 12:13 ` [pbs-devel] [PATCH proxmox-backup v3 1/6] api2: make Remote for SyncJob optional Hannes Laimer
2023-08-23 11:37 ` Wolfgang Bumiller
2023-09-21 11:06 ` Lukas Wagner
2023-08-08 12:13 ` [pbs-devel] [PATCH proxmox-backup v3 2/6] ui: add support for optional Remote in SyncJob Hannes Laimer
2023-08-08 12:13 ` [pbs-devel] [PATCH proxmox-backup v3 3/6] manager: add completion for opt. " Hannes Laimer
2023-08-24 9:24 ` Wolfgang Bumiller [this message]
2023-08-08 12:13 ` [pbs-devel] [PATCH proxmox-backup v3 4/6] accept a ref to a HttpClient Hannes Laimer
2023-08-08 12:13 ` [pbs-devel] [PATCH proxmox-backup v3 5/6] pull: refactor pulling from a datastore Hannes Laimer
2023-08-24 13:09 ` Wolfgang Bumiller
2023-09-21 11:10 ` Lukas Wagner
2023-08-08 12:13 ` [pbs-devel] [PATCH proxmox-backup v3 6/6] pull: add support for pulling from local datastore Hannes Laimer
2023-09-21 10:01 ` [pbs-devel] [PATCH proxmox-backup v3 0/6] local sync-jobs Lukas Wagner
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=u7moh5ccud3zjakzrym5buwacclo6pooe26l4u7eyprhoaxnny@lbl4gwpwokqy \
--to=w.bumiller@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