#!/usr/bin/perl -w

use warnings;
use strict;
use Zabbix::Agent::Addons::Disks;
use JSON;
use File::Which;
use Getopt::Long;

my $pretty = 0;
GetOptions(
  'pretty' => \$pretty
);

my $lsblk = which('lsblk');

my $json;
@{$json->{data}} = ();
if (defined $lsblk){
  foreach my $line (qx($lsblk -o KNAME,TYPE,SIZE -r -n -b)){
    my ($block,$type,$size) = split(/\s+/, $line);
    push @{$json->{data}}, {
      "{#BLOCKDEVICE}" => $block,  # Compat with previous zabbix-agent-addons
      "{#DEVNAME}"     => $block,  # New macro name for the native vfs.dev.discovery key in 4.4
      "{#DEVTYPE}"     => $type,
    };
  }
} else {
  # Fallback if lsblk is not available
  foreach my $block (Zabbix::Agent::Addons::Disks::list_block_dev()){
    push @{$json->{data}}, {
      "{#BLOCKDEVICE}" => $block,
      "{#DEVNAME}"     => $block,
      "{#DEVTYPE}"     => 'disk'
    };
  }
}
print to_json($json, { pretty => $pretty });
exit(0);
