[pbs-devel] [PATCH proxmox-backup] close #3777: api: Add source information to backup logs
Gabriel Goller
g.goller at proxmox.com
Fri Sep 8 16:01:22 CEST 2023
On 9/7/23 18:53, Thomas Lamprecht wrote:
> On 21/08/2023 09:40, Gabriel Goller wrote:
>> This will show the ip-address of the client creating
>> the backup in the logs. For example it will output:
>> "starting new backup on datastore 'test1' from ::ffff:192.168.1.192:
>> "host/test/2023-08-21T07:28:10Z"".
>>
>> Signed-off-by: Gabriel Goller <g.goller at proxmox.com>
>> ---
>> src/api2/backup/mod.rs | 19 +++++++++++++++----
>> 1 file changed, 15 insertions(+), 4 deletions(-)
>>
>> diff --git a/src/api2/backup/mod.rs b/src/api2/backup/mod.rs
>> index 652d5baa..0c996e62 100644
>> --- a/src/api2/backup/mod.rs
>> +++ b/src/api2/backup/mod.rs
>> @@ -214,10 +214,21 @@ fn upgrade_to_backup_protocol(
>> env.debug = debug;
>> env.last_backup = last_backup;
>>
>> - env.log(format!(
>> - "starting new {} on datastore '{}': {:?}",
>> - worker_type, store, path
>> - ));
>> + match rpcenv.get_client_ip() {
>
> could do:
>
> if let Some(ip) = rpcenv.get_client_ip().map(|addr| addr.ip()) {
>
> This all feels a bit bloated for what it does, and even if it seems like nitpicking,
> such things can add up and make maintainability harder in the long run.
>
> You could get the actual IP via a .map and work on that, i.e., I'd to something like
> either:
>
> let msg = if let Some(ip) = rpcenv.get_client_ip().map(|addr| addr.ip()) {
> format!("starting new {worker_type} on datastore '{store}' from {ip}: {path:?}")
> } else {
> format!("starting new {worker_type} on datastore '{store}': {path:?}")
> };
> env.log(msg);
>
>
> or:
>
> let origin = match rpcenv.get_client_ip().map(|addr| addr.ip()) {
> Some(ip) => format!(" from {ip}"),
> None => "".into(),
> };
> env.log(format!("starting new {worker_type} on datastore '{store}'{origin}: {path:?}"));
>
>
> Where the latter reads slightly nicer IMO but has two allocation, maybe you got a better
> idea.
Second one looks better I think.
> Oh, and for quite a few users the IPv4 mapped as IPv6 notation looks odd, so dropping the
> ::ffff: prefix might be worth it, but no hard feelings, we can always change that if there
> are complaints..
Noticed that too, but IMO staying 'correct' is more important than
making the output pretty.
But we can always change it later...
>> + Some(address) => {
>> + env.log(format!(
>> + "starting new {} on datastore '{}' from {}: {:?}",
>> + worker_type, store, address.ip(), path
>> + ));
>> + },
>> + None => {
>> + env.log(format!(
>> + "starting new {} on datastore '{}': {:?}",
>> + worker_type, store, path
>> + ));
>> +
> extra empty line here..
>> + }
>> + }
>>
>> let service =
>> H2Service::new(env.clone(), worker.clone(), &BACKUP_API_ROUTER, debug);
>>
Submitted a new patch.
More information about the pbs-devel
mailing list