From b5ddc105852b63651916f322ce855baf61d129d0 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Wed, 18 Nov 2020 08:47:37 +0200 Subject: feat! change client config to take a base URL instead of host, port --- client.yaml | 3 +-- src/client.rs | 11 ++++++----- src/cmd/backup.rs | 2 +- src/cmd/list.rs | 2 +- src/cmd/restore.rs | 5 ++--- subplot/client.py | 6 ++---- subplot/server.py | 12 +++++------- 7 files changed, 18 insertions(+), 23 deletions(-) diff --git a/client.yaml b/client.yaml index 42d2d3d..fbe0b54 100644 --- a/client.yaml +++ b/client.yaml @@ -1,4 +1,3 @@ -server_name: localhost -server_port: 8888 +server_url: http://localhost:8888/chunks root: /home/liw/pers/debian-ansible dbname: foo.db diff --git a/src/client.rs b/src/client.rs index ecfc42c..d7dca36 100644 --- a/src/client.rs +++ b/src/client.rs @@ -13,8 +13,7 @@ use std::path::{Path, PathBuf}; #[derive(Debug, Deserialize, Clone)] pub struct ClientConfig { - pub server_name: String, - pub server_port: u16, + pub server_url: String, pub dbname: PathBuf, pub root: PathBuf, } @@ -46,12 +45,14 @@ pub struct BackupClient { } impl BackupClient { - pub fn new(host: &str, port: u16) -> anyhow::Result { + pub fn new(base_url: &str) -> anyhow::Result { let client = Client::builder() .danger_accept_invalid_certs(true) .build()?; - let base_url = format!("http://{}:{}/chunks", host, port,); - Ok(Self { client, base_url }) + Ok(Self { + client, + base_url: base_url.to_string(), + }) } pub fn upload_filesystem_entry( diff --git a/src/cmd/backup.rs b/src/cmd/backup.rs index 308eafb..71f5aac 100644 --- a/src/cmd/backup.rs +++ b/src/cmd/backup.rs @@ -5,7 +5,7 @@ use std::path::Path; pub fn backup(config: &Path, buffer_size: usize) -> anyhow::Result<()> { let config = ClientConfig::read_config(config)?; - let client = BackupClient::new(&config.server_name, config.server_port)?; + let client = BackupClient::new(&config.server_url)?; { let mut gen = Generation::create(&config.dbname)?; diff --git a/src/cmd/list.rs b/src/cmd/list.rs index 1972144..1741bce 100644 --- a/src/cmd/list.rs +++ b/src/cmd/list.rs @@ -3,7 +3,7 @@ use std::path::Path; pub fn list(config: &Path) -> anyhow::Result<()> { let config = ClientConfig::read_config(&config)?; - let client = BackupClient::new(&config.server_name, config.server_port)?; + let client = BackupClient::new(&config.server_url)?; for gen_id in client.list_generations()? { println!("{}", gen_id); diff --git a/src/cmd/restore.rs b/src/cmd/restore.rs index 6e2690c..8aa0345 100644 --- a/src/cmd/restore.rs +++ b/src/cmd/restore.rs @@ -12,7 +12,7 @@ use structopt::StructOpt; pub fn restore(config: &Path, gen_id: &str, dbname: &Path, to: &Path) -> anyhow::Result<()> { let config = Config::read_config(&config).unwrap(); - let client = BackupClient::new(&config.server_name, config.server_port)?; + let client = BackupClient::new(&config.server_url)?; let gen_chunk = client.fetch_generation(&gen_id)?; debug!("gen: {:?}", gen_chunk); { @@ -50,8 +50,7 @@ struct Opt { #[derive(Debug, Deserialize, Clone)] pub struct Config { - pub server_name: String, - pub server_port: u16, + pub server_url: String, } impl Config { diff --git a/subplot/client.py b/subplot/client.py index f159e74..7556986 100644 --- a/subplot/client.py +++ b/subplot/client.py @@ -14,13 +14,11 @@ def install_obnam(ctx): def configure_client(ctx, filename=None): get_file = globals()["get_file"] - assert ctx.get("server_name") is not None - assert ctx.get("server_port") is not None + assert ctx.get("server_url") is not None config = get_file(filename) config = yaml.safe_load(config) - config["server_name"] = ctx["server_name"] - config["server_port"] = ctx["server_port"] + config["server_url"] = ctx["server_url"] with open(filename, "w") as f: yaml.safe_dump(config, stream=f) diff --git a/subplot/server.py b/subplot/server.py index c159798..5952cb2 100644 --- a/subplot/server.py +++ b/subplot/server.py @@ -33,9 +33,7 @@ def start_chunk_server(ctx): logging.debug(f"Picked randomly port for obnam-server: {config['port']}") ctx["config"] = config - ctx["server_name"] = "localhost" - ctx["server_port"] = port - ctx["url"] = f"http://localhost:{port}" + ctx["server_url"] = f"http://localhost:{port}/chunks" start_daemon( ctx, @@ -55,7 +53,7 @@ def stop_chunk_server(ctx): def post_file(ctx, filename=None, path=None, header=None, json=None): - url = f"{ctx['url']}/chunks" + url = f"{ctx['server_url']}" headers = {header: json} data = open(filename, "rb").read() _request(ctx, requests.post, url, headers=headers, data=data) @@ -67,12 +65,12 @@ def get_chunk_via_var(ctx, var=None): def get_chunk_by_id(ctx, chunk_id=None): - url = f"{ctx['url']}/chunks/{chunk_id}" + url = f"{ctx['server_url']}/{chunk_id}" _request(ctx, requests.get, url) def find_chunks_with_sha(ctx, sha=None): - url = f"{ctx['url']}/chunks?sha256={sha}" + url = f"{ctx['server_url']}?sha256={sha}" _request(ctx, requests.get, url) @@ -82,7 +80,7 @@ def delete_chunk_via_var(ctx, var=None): def delete_chunk_by_id(ctx, chunk_id=None): - url = f"{ctx['url']}/chunks/{chunk_id}" + url = f"{ctx['server_url']}/{chunk_id}" _request(ctx, requests.delete, url) -- cgit v1.2.1