all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* proxmox-truenas storage plugin api2 issue
@ 2026-04-15 21:59 Lorne Guse
  2026-04-16  6:03 ` Arthur Bied-Charreton
  0 siblings, 1 reply; 3+ messages in thread
From: Lorne Guse @ 2026-04-15 21:59 UTC (permalink / raw)
  To: m.carrara, Proxmox VE development discussion

One of my users ran across an issue I could use some help with. 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)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: proxmox-truenas storage plugin api2 issue
  2026-04-15 21:59 proxmox-truenas storage plugin api2 issue Lorne Guse
@ 2026-04-16  6:03 ` Arthur Bied-Charreton
  2026-04-16  6:20   ` Arthur Bied-Charreton
  0 siblings, 1 reply; 3+ messages in thread
From: Arthur Bied-Charreton @ 2026-04-16  6:03 UTC (permalink / raw)
  To: Lorne Guse; +Cc: Proxmox VE development discussion

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://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://github.com/boomshankerx/proxmox-truenas/blob/b4e73456e2de3c9ba1f589349ce5c87cd6199251/perl5/PVE/Storage/Custom/TrueNASPlugin.pm#L462
[1] https://git.proxmox.com/?p=pve-storage.git;a=blob;f=src/PVE/Storage.pm;h=6e87bac36edf277a02a6fb5c9e600ef8281b34ad;hb=refs/heads/master#l1523




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: proxmox-truenas storage plugin api2 issue
  2026-04-16  6:03 ` Arthur Bied-Charreton
@ 2026-04-16  6:20   ` Arthur Bied-Charreton
  0 siblings, 0 replies; 3+ messages in thread
From: Arthur Bied-Charreton @ 2026-04-16  6:20 UTC (permalink / raw)
  To: Lorne Guse; +Cc: Proxmox VE development discussion

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://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://github.com/boomshankerx/proxmox-truenas/blob/b4e73456e2de3c9ba1f589349ce5c87cd6199251/perl5/PVE/Storage/Custom/TrueNASPlugin.pm#L462
> [1] 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";
}

```




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-04-16  6:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-04-15 21:59 proxmox-truenas storage plugin api2 issue Lorne Guse
2026-04-16  6:03 ` Arthur Bied-Charreton
2026-04-16  6:20   ` Arthur Bied-Charreton

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