public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
To: Proxmox Backup Server development discussion
	<pbs-devel@lists.proxmox.com>,
	Gabriel Goller <g.goller@proxmox.com>
Subject: Re: [pbs-devel] [PATCH v2 proxmox-backup 2/2] status: use Option on avail/used datastore attrs
Date: Thu, 14 Dec 2023 08:55:47 +0100	[thread overview]
Message-ID: <7319fa0e-46e9-4c9b-bcdf-6bc43876d61e@proxmox.com> (raw)
In-Reply-To: <20231211085902.20747-3-g.goller@proxmox.com>

Am 11/12/2023 um 09:59 schrieb Gabriel Goller:
> Instead of returning -1 if we can't get the attributes, we use an
> Option which will not be serialized on `None`.
> 
> Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
> ---
>  pbs-api-types/src/datastore.rs | 19 +++++++++++--------
>  src/api2/status.rs             |  6 +++---
>  2 files changed, 14 insertions(+), 11 deletions(-)
> 
> diff --git a/pbs-api-types/src/datastore.rs b/pbs-api-types/src/datastore.rs
> index d4ead1d1..74f610d1 100644
> --- a/pbs-api-types/src/datastore.rs
> +++ b/pbs-api-types/src/datastore.rs
> @@ -1302,12 +1302,15 @@ pub struct DataStoreStatus {
>  /// Status of a Datastore
>  pub struct DataStoreStatusListItem {
>      pub store: String,
> -    /// The Size of the underlying storage in bytes. (-1 on error)
> -    pub total: i64,
> -    /// The used bytes of the underlying storage. (-1 on error)
> -    pub used: i64,
> +    /// The Size of the underlying storage in bytes.
> +    #[serde(skip_serializing_if = "Option::is_none")]
> +    pub total: Option<u64>,
> +    /// The used bytes of the underlying storage.
> +    #[serde(skip_serializing_if = "Option::is_none")]
> +    pub used: Option<u64>,
>      /// The available bytes of the underlying storage. (-1 on error)
> -    pub avail: i64,
> +    #[serde(skip_serializing_if = "Option::is_none")]
> +    pub avail: Option<u64>,
>      /// A list of usages of the past (last Month).
>      #[serde(skip_serializing_if = "Option::is_none")]
>      pub history: Option<Vec<Option<f64>>>,

Talked a bit with Dietmar off-list and checked this out a bit closer, having
to check each property separately seems like slightly annoying extra work we
might be able to avoid while not loosing anything.

I.e., what about keeping this as is and instead add a new usage property that
is an option of a struct with all three values as u64?

We get this info from file-system level, so if we cannot get all at once it'd
be rather wrong anyway (from both our access control system and how we gather
those data from the kernel), so I think this is an all or nothing.

We could then can mark the other three i64 properties as deprecated and remove
them with the next major version, thus having a clean compatibility cut and a
easier to use API.


Not directly related, but while at it we could also improve how such things are
marked as "to be removed at version X).
In PVE we use FIXME comments with a (roughly) common style, but that is naturally
error-prone, but here we have a full compilation step, so we could add a warning
that is only emitted if the crate version is >= next-major version (and possibly
some "future-deprecation feature to more easily check for them manually), and thus
find all of those occurrences easily.




  reply	other threads:[~2023-12-14  7:55 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-11  8:59 [pbs-devel] [PATCH v2 proxmox-backup 0/2] Fix DatastoreListSummary on limited permissions Gabriel Goller
2023-12-11  8:59 ` [pbs-devel] [PATCH v2 proxmox-backup 1/2] ui: datastore summary handle non-existent values Gabriel Goller
2023-12-11  8:59 ` [pbs-devel] [PATCH v2 proxmox-backup 2/2] status: use Option on avail/used datastore attrs Gabriel Goller
2023-12-14  7:55   ` Thomas Lamprecht [this message]
2023-12-14 13:44     ` Gabriel Goller
2024-01-10 15:10     ` Gabriel Goller
2023-12-11 12:13 ` [pbs-devel] applied: [PATCH v2 proxmox-backup 0/2] Fix DatastoreListSummary on limited permissions Dietmar Maurer

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=7319fa0e-46e9-4c9b-bcdf-6bc43876d61e@proxmox.com \
    --to=t.lamprecht@proxmox.com \
    --cc=g.goller@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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal