all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Lorne Guse <boomshankerx@hotmail.com>
To: Arthur Bied-Charreton <a.bied-charreton@proxmox.com>
Cc: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Subject: Re: proxmox-truenas storage plugin api2 issue
Date: Thu, 16 Apr 2026 16:59:26 +0000	[thread overview]
Message-ID: <CO1PR17MB52764F9183E6E507F977786CD0232@CO1PR17MB5276.namprd17.prod.outlook.com> (raw)
In-Reply-To: <bbn7bz2vuzi3c26lgkqlk7x36idrosgxsds3nbbpthnwz6mmpe@kntzjr6ezgpe>

Thank you! That did the trick. Perl isn't my native language so I learned something today.

--
BooMShanꓘerX
(Lorne Guse)
________________________________
From: Arthur Bied-Charreton <a.bied-charreton@proxmox.com>
Sent: Thursday, April 16, 2026 12:20 AM
To: Lorne Guse <boomshankerx@hotmail.com>
Cc: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Subject: Re: proxmox-truenas storage plugin api2 issue

On Thu, Apr 16, 2026 at 08:03:25AM +0200, Arthur Bied-Charreton wrote:
> On Wed, Apr 15, 2026 at 09:59:20PM +0000, Lorne Guse wrote:
> > One of my users ran across an issue I could use some help with. https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fboomshankerx%2Fproxmox-truenas%2Fissues%2F133&data=05%7C02%7C%7Ce6156e101c434db219d308de9b803481%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C639119172101582237%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=mdqGqkgQprIQY47RVYDK4Lmp4pOdi2S61RCNMPgQULM%3D&reserved=0<https://github.com/boomshankerx/proxmox-truenas/issues/133>
> > When trying to use Veeam with my custom storage plugin, the output of /api2/json/nodes/NODE/storage shows the active field as string "1" instead of int 1. This is causing tools like Veeam to fail.
> >
> > Is this a problem with my plugin or something further up the stack?
> >
> > # OUTPUT JSON
> >
> > {
> >     "data": [
> >         {
> >             "shared": 0,
> >             "storage": "local",
> >             "content": "iso,vztmpl,backup",
> >             "used": 131072,
> >             "type": "dir",
> >             "enabled": 1,
> >             "avail": 236805029888,
> >             "used_fraction": 5.53501450173799e-7,
> >             "active": 1,
> >             "total": 236805160960
> >         },
> >         {
> >             "shared": 1,
> >             "content": "images",
> >             "storage": "nas.proxmox",
> >             "used": 0,
> >             "type": "nfs",
> >             "enabled": 1,
> >             "avail": 7313282826240,
> >             "used_fraction": 0,
> >             "active": 1,
> >             "total": 7313282826240
> >         },
> >         {
> >             "shared": 1,
> >             "storage": "nas",
> >             "content": "images",
> >             "used": 443571322880,
> >             "type": "truenas",
> >             "enabled": 1,
> >             "used_fraction": 0.0571844359724994,
> >             "avail": 7313282711552,
> >             "active": "1",
> >             "total": 7756854034432
> >         },
> >
> >     ]
> > }
> >
> > --
> > BooMShanꓘerX
> > (Lorne Guse)
> Hey Lorne,
>
> Dietmar and I investigated this: in your code [0], you
> string-interpolate $active for logging before returning it. This sets
> the pPOK flag, leading to the JSON encoder interpreting it as a string.
> This is not an issue for $total, $available, and $used because we cast
> those to int on our side [1].
>
> I did not look very deeply into this, but my guess as to why we do not
> cast $active as well is to allow other truthy values like 'yes', 'true',
> etc - maybe someone who knows can chime in here?
>
> Anyway, you should be able to fix this on your side by forcing $active
> into a numeric value, with int($active) or by adding 0 to it before
> returning it.
>
> [0] https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fboomshankerx%2Fproxmox-truenas%2Fblob%2Fb4e73456e2de3c9ba1f589349ce5c87cd6199251%2Fperl5%2FPVE%2FStorage%2FCustom%2FTrueNASPlugin.pm%23L462&data=05%7C02%7C%7Ce6156e101c434db219d308de9b803481%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C639119172101609726%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=01%2FMcbJ1cBVFWaqd86qGLZlbyBLgyL4MQfr1inKLl%2F0%3D&reserved=0<https://github.com/boomshankerx/proxmox-truenas/blob/b4e73456e2de3c9ba1f589349ce5c87cd6199251/perl5/PVE/Storage/Custom/TrueNASPlugin.pm#L462>
> [1] https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.proxmox.com%2F%3Fp%3Dpve-storage.git%3Ba%3Dblob%3Bf%3Dsrc%2FPVE%2FStorage.pm%3Bh%3D6e87bac36edf277a02a6fb5c9e600ef8281b34ad%3Bhb%3Drefs%2Fheads%2Fmaster%23l1523&data=05%7C02%7C%7Ce6156e101c434db219d308de9b803481%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C639119172101628958%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=HgQHEC95UQ64hjR5FkZQV3oCrPZGyks3zAM3%2Bv%2Ffir0%3D&reserved=0<https://git.proxmox.com/?p=pve-storage.git;a=blob;f=src/PVE/Storage.pm;h=6e87bac36edf277a02a6fb5c9e600ef8281b34ad;hb=refs/heads/master#l1523>
>
You can run the script below to try it out for yourself

```
use strict;
use warnings;
use Devel::Peek;
use JSON;

my $json = JSON->new->canonical;

print "not interpolated:\n";
{
    my $active = 0;
    my $data = { active => $active };
    Dump($active);
    print "data: ", $json->encode($data), "\n";
}
print "\ninterpolated:\n";
{
    my $active = 0;
    my $msg = "active=$active";
    my $data = { active => $active};
    Dump($active);
    print "data: ", $json->encode($data), "\n";
}

```


      reply	other threads:[~2026-04-16 16:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-15 21:59 Lorne Guse
2026-04-16  6:03 ` Arthur Bied-Charreton
2026-04-16  6:20   ` Arthur Bied-Charreton
2026-04-16 16:59     ` Lorne Guse [this message]

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=CO1PR17MB52764F9183E6E507F977786CD0232@CO1PR17MB5276.namprd17.prod.outlook.com \
    --to=boomshankerx@hotmail.com \
    --cc=a.bied-charreton@proxmox.com \
    --cc=pve-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 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