diff --git a/src/api2/pull.rs b/src/api2/pull.rs index 06729000..b320daed 100644 --- a/src/api2/pull.rs +++ b/src/api2/pull.rs @@ -14,6 +14,7 @@ use proxmox::api::{ApiMethod, Router, RpcEnvironment}; use crate::server::{WorkerTask}; use crate::backup::*; use crate::client::*; +use crate::config::remotes; use crate::api2::types::*; // fixme: implement filters @@ -342,31 +343,20 @@ pub async fn pull_store( store: { schema: DATASTORE_SCHEMA, }, - "remote-host": { - description: "Remote host", // TODO: use predefined type: host or IP - type: String, + remote: { + schema: REMOTE_ID_SCHEMA, }, "remote-store": { schema: DATASTORE_SCHEMA, }, - "remote-user": { - description: "Remote user name.", // TODO: use predefined typed - type: String, - }, - "remote-password": { - description: "Remote passsword.", - type: String, - }, }, }, )] /// Sync store from other repository async fn pull ( store: String, - remote_host: String, + remote: String, remote_store: String, - remote_user: String, - remote_password: String, _info: &ApiMethod, rpcenv: &mut dyn RpcEnvironment, ) -> Result { @@ -375,12 +365,15 @@ async fn pull ( let tgt_store = DataStore::lookup_datastore(&store)?; - let client = HttpClient::new(&remote_host, &remote_user, Some(remote_password))?; + let (remote_config, _digest) = remotes::config()?; + let remote: remotes::Remote = remote_config.lookup("remote", &remote)?; + + let client = HttpClient::new(&remote.host, &remote.userid, Some(remote.password.clone()))?; let _auth_info = client.login() // make sure we can auth .await - .map_err(|err| format_err!("remote connection to '{}' failed - {}", remote_host, err))?; + .map_err(|err| format_err!("remote connection to '{}' failed - {}", remote.host, err))?; - let src_repo = BackupRepository::new(Some(remote_user), Some(remote_host), remote_store); + let src_repo = BackupRepository::new(Some(remote.userid), Some(remote.host), remote_store); // fixme: set to_stdout to false? let upid_str = WorkerTask::spawn("sync", Some(store.clone()), &username.clone(), true, move |worker| async move { diff --git a/src/bin/proxmox-backup-manager.rs b/src/bin/proxmox-backup-manager.rs index 8406b607..f7b990c5 100644 --- a/src/bin/proxmox-backup-manager.rs +++ b/src/bin/proxmox-backup-manager.rs @@ -417,15 +417,10 @@ async fn pull_datastore( let mut client = connect()?; - let (remote_config, _digest) = remotes::config()?; - let remote: Remote = remote_config.lookup("remote", &remote)?; - let args = json!({ "store": local_store, - "remote-host": remote.host, - "remote-user": remote.userid, + "remote": remote, "remote-store": remote_store, - "remote-password": remote.password, }); let result = client.post("api2/json/pull", Some(args)).await?;