all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup] client: properly complete new-owner
@ 2020-11-06 13:44 Fabian Grünbichler
  2020-11-06 13:58 ` [pbs-devel] applied: " Wolfgang Bumiller
  0 siblings, 1 reply; 2+ messages in thread
From: Fabian Grünbichler @ 2020-11-06 13:44 UTC (permalink / raw)
  To: pbs-devel

with remote Authids, not local Userids.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
 src/api2/access/user.rs          |  1 +
 src/bin/proxmox-backup-client.rs | 31 +++++++++++++++++++++++++++++--
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/src/api2/access/user.rs b/src/api2/access/user.rs
index c0daf3ce..8be512c4 100644
--- a/src/api2/access/user.rs
+++ b/src/api2/access/user.rs
@@ -76,6 +76,7 @@ pub struct UserWithTokens {
     #[serde(skip_serializing_if="Option::is_none")]
     pub email: Option<String>,
     #[serde(skip_serializing_if="Vec::is_empty")]
+    #[serde(default="Vec::new")]
     pub tokens: Vec<user::ApiToken>,
 }
 
diff --git a/src/bin/proxmox-backup-client.rs b/src/bin/proxmox-backup-client.rs
index ec60b3a9..760e59df 100644
--- a/src/bin/proxmox-backup-client.rs
+++ b/src/bin/proxmox-backup-client.rs
@@ -32,11 +32,11 @@ use proxmox::{
 use pxar::accessor::{MaybeReady, ReadAt, ReadAtOperation};
 
 use proxmox_backup::tools;
+use proxmox_backup::api2::access::user::UserWithTokens;
 use proxmox_backup::api2::types::*;
 use proxmox_backup::api2::version;
 use proxmox_backup::client::*;
 use proxmox_backup::pxar::catalog::*;
-use proxmox_backup::config::user::complete_userid;
 use proxmox_backup::backup::{
     archive_type,
     decrypt_key,
@@ -1904,6 +1904,33 @@ fn complete_chunk_size(_arg: &str, _param: &HashMap<String, String>) -> Vec<Stri
     result
 }
 
+fn complete_auth_id(_arg: &str, param: &HashMap<String, String>) -> Vec<String> {
+    proxmox_backup::tools::runtime::main(async { complete_auth_id_do(param).await })
+}
+
+async fn complete_auth_id_do(param: &HashMap<String, String>) -> Vec<String> {
+
+    let mut result = vec![];
+
+    let repo = match extract_repository_from_map(param) {
+        Some(v) => v,
+        _ => return result,
+    };
+
+    let data = try_get(&repo, "api2/json/access/users?include_tokens=true").await;
+
+    if let Ok(parsed) = serde_json::from_value::<Vec<UserWithTokens>>(data) {
+        for user in parsed {
+            result.push(user.userid.to_string());
+            for token in user.tokens {
+                result.push(token.tokenid.to_string());
+            }
+        }
+    };
+
+    result
+}
+
 use proxmox_backup::client::RemoteChunkReader;
 /// This is a workaround until we have cleaned up the chunk/reader/... infrastructure for better
 /// async use!
@@ -2013,7 +2040,7 @@ fn main() {
     let change_owner_cmd_def = CliCommand::new(&API_METHOD_CHANGE_BACKUP_OWNER)
         .arg_param(&["group", "new-owner"])
         .completion_cb("group", complete_backup_group)
-        .completion_cb("new-owner",  complete_userid)
+        .completion_cb("new-owner",  complete_auth_id)
         .completion_cb("repository", complete_repository);
 
     let cmd_def = CliCommandMap::new()
-- 
2.20.1





^ permalink raw reply	[flat|nested] 2+ messages in thread

* [pbs-devel] applied: [PATCH proxmox-backup] client: properly complete new-owner
  2020-11-06 13:44 [pbs-devel] [PATCH proxmox-backup] client: properly complete new-owner Fabian Grünbichler
@ 2020-11-06 13:58 ` Wolfgang Bumiller
  0 siblings, 0 replies; 2+ messages in thread
From: Wolfgang Bumiller @ 2020-11-06 13:58 UTC (permalink / raw)
  To: Fabian Grünbichler; +Cc: pbs-devel

applied

On Fri, Nov 06, 2020 at 02:44:44PM +0100, Fabian Grünbichler wrote:
> with remote Authids, not local Userids.
> 
> Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
> ---
>  src/api2/access/user.rs          |  1 +
>  src/bin/proxmox-backup-client.rs | 31 +++++++++++++++++++++++++++++--
>  2 files changed, 30 insertions(+), 2 deletions(-)
> 
> diff --git a/src/api2/access/user.rs b/src/api2/access/user.rs
> index c0daf3ce..8be512c4 100644
> --- a/src/api2/access/user.rs
> +++ b/src/api2/access/user.rs
> @@ -76,6 +76,7 @@ pub struct UserWithTokens {
>      #[serde(skip_serializing_if="Option::is_none")]
>      pub email: Option<String>,
>      #[serde(skip_serializing_if="Vec::is_empty")]
> +    #[serde(default="Vec::new")]
>      pub tokens: Vec<user::ApiToken>,
>  }
>  
> diff --git a/src/bin/proxmox-backup-client.rs b/src/bin/proxmox-backup-client.rs
> index ec60b3a9..760e59df 100644
> --- a/src/bin/proxmox-backup-client.rs
> +++ b/src/bin/proxmox-backup-client.rs
> @@ -32,11 +32,11 @@ use proxmox::{
>  use pxar::accessor::{MaybeReady, ReadAt, ReadAtOperation};
>  
>  use proxmox_backup::tools;
> +use proxmox_backup::api2::access::user::UserWithTokens;
>  use proxmox_backup::api2::types::*;
>  use proxmox_backup::api2::version;
>  use proxmox_backup::client::*;
>  use proxmox_backup::pxar::catalog::*;
> -use proxmox_backup::config::user::complete_userid;
>  use proxmox_backup::backup::{
>      archive_type,
>      decrypt_key,
> @@ -1904,6 +1904,33 @@ fn complete_chunk_size(_arg: &str, _param: &HashMap<String, String>) -> Vec<Stri
>      result
>  }
>  
> +fn complete_auth_id(_arg: &str, param: &HashMap<String, String>) -> Vec<String> {
> +    proxmox_backup::tools::runtime::main(async { complete_auth_id_do(param).await })
> +}
> +
> +async fn complete_auth_id_do(param: &HashMap<String, String>) -> Vec<String> {
> +
> +    let mut result = vec![];
> +
> +    let repo = match extract_repository_from_map(param) {
> +        Some(v) => v,
> +        _ => return result,
> +    };
> +
> +    let data = try_get(&repo, "api2/json/access/users?include_tokens=true").await;
> +
> +    if let Ok(parsed) = serde_json::from_value::<Vec<UserWithTokens>>(data) {
> +        for user in parsed {
> +            result.push(user.userid.to_string());
> +            for token in user.tokens {
> +                result.push(token.tokenid.to_string());
> +            }
> +        }
> +    };
> +
> +    result
> +}
> +
>  use proxmox_backup::client::RemoteChunkReader;
>  /// This is a workaround until we have cleaned up the chunk/reader/... infrastructure for better
>  /// async use!
> @@ -2013,7 +2040,7 @@ fn main() {
>      let change_owner_cmd_def = CliCommand::new(&API_METHOD_CHANGE_BACKUP_OWNER)
>          .arg_param(&["group", "new-owner"])
>          .completion_cb("group", complete_backup_group)
> -        .completion_cb("new-owner",  complete_userid)
> +        .completion_cb("new-owner",  complete_auth_id)
>          .completion_cb("repository", complete_repository);
>  
>      let cmd_def = CliCommandMap::new()
> -- 
> 2.20.1




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-11-06 13:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-06 13:44 [pbs-devel] [PATCH proxmox-backup] client: properly complete new-owner Fabian Grünbichler
2020-11-06 13:58 ` [pbs-devel] applied: " Wolfgang Bumiller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal