Signed-off-by: Lorenz Stechauner <l.stechau...@proxmox.com>
---
 PVE/CLI/pvesm.pm | 343 ++++++++++++++++++++++++++++++-----------------
 1 file changed, 223 insertions(+), 120 deletions(-)

diff --git a/PVE/CLI/pvesm.pm b/PVE/CLI/pvesm.pm
index 190de91..7afbe22 100755
--- a/PVE/CLI/pvesm.pm
+++ b/PVE/CLI/pvesm.pm
@@ -574,76 +574,143 @@ my $print_api_result = sub {
 };
 
 our $cmddef = {
-    add => [ "PVE::API2::Storage::Config", 'create', ['type', 'storage'] ],
-    set => [ "PVE::API2::Storage::Config", 'update', ['storage'] ],
-    remove => [ "PVE::API2::Storage::Config", 'delete', ['storage'] ],
-    status => [ "PVE::API2::Storage::Status", 'index', [],
-               { node => $nodename }, $print_status ],
-    list => [ "PVE::API2::Storage::Content", 'index', ['storage'],
-             { node => $nodename }, $print_content ],
-    alloc => [ "PVE::API2::Storage::Content", 'create', ['storage', 'vmid', 
'filename', 'size'],
-              { node => $nodename }, sub {
-                  my $volid = shift;
-                  print "successfully created '$volid'\n";
-              }],
-    free => [ "PVE::API2::Storage::Content", 'delete', ['volume'],
-             { node => $nodename } ],
+    add => [
+       "PVE::API2::Storage::Config",
+       'create',
+       ['type', 'storage'],
+    ],
+    set => [
+       "PVE::API2::Storage::Config",
+       'update',
+       ['storage'],
+    ],
+    remove => [
+       "PVE::API2::Storage::Config",
+       'delete',
+       ['storage'],
+    ],
+    status => [
+       "PVE::API2::Storage::Status",
+       'index',
+       [],
+       { node => $nodename },
+       $print_status,
+    ],
+    list => [
+       "PVE::API2::Storage::Content",
+       'index',
+       ['storage'],
+       { node => $nodename },
+       $print_content,
+    ],
+    alloc => [
+       "PVE::API2::Storage::Content",
+       'create',
+       ['storage', 'vmid', 'filename', 'size'],
+       { node => $nodename },
+       sub {
+           my $volid = shift;
+           print "successfully created '$volid'\n";
+       },
+    ],
+    free => [
+       "PVE::API2::Storage::Content",
+       'delete',
+       ['volume'],
+       { node => $nodename },
+    ],
     scan => {
-       nfs => [ "PVE::API2::Storage::Scan", 'nfsscan', ['server'], { node => 
$nodename }, sub  {
-           my $res = shift;
-
-           my $maxlen = 0;
-           foreach my $rec (@$res) {
-               my $len = length ($rec->{path});
-               $maxlen = $len if $len > $maxlen;
-           }
-           foreach my $rec (@$res) {
-               printf "%-${maxlen}s %s\n", $rec->{path}, $rec->{options};
-           }
-       }],
-       cifs => [ "PVE::API2::Storage::Scan", 'cifsscan', ['server'], { node => 
$nodename }, sub  {
-           my $res = shift;
-
-           my $maxlen = 0;
-           foreach my $rec (@$res) {
-               my $len = length ($rec->{share});
-               $maxlen = $len if $len > $maxlen;
-           }
-           foreach my $rec (@$res) {
-               printf "%-${maxlen}s %s\n", $rec->{share}, $rec->{description};
-           }
-       }],
-       glusterfs => [ "PVE::API2::Storage::Scan", 'glusterfsscan', ['server'], 
{ node => $nodename }, sub  {
-           my $res = shift;
-
-           foreach my $rec (@$res) {
-               printf "%s\n", $rec->{volname};
-           }
-       }],
-       iscsi => [ "PVE::API2::Storage::Scan", 'iscsiscan', ['portal'], { node 
=> $nodename }, sub  {
-           my $res = shift;
+       nfs => [
+           "PVE::API2::Storage::Scan",
+           'nfsscan',
+           ['server'],
+           { node => $nodename },
+           sub  {
+               my $res = shift;
+
+               my $maxlen = 0;
+               foreach my $rec (@$res) {
+                   my $len = length ($rec->{path});
+                   $maxlen = $len if $len > $maxlen;
+               }
+               foreach my $rec (@$res) {
+                   printf "%-${maxlen}s %s\n", $rec->{path}, $rec->{options};
+               }
+           },
+       ],
+       cifs => [
+           "PVE::API2::Storage::Scan",
+           'cifsscan',
+           ['server'],
+           { node => $nodename },
+           sub  {
+               my $res = shift;
+
+               my $maxlen = 0;
+               foreach my $rec (@$res) {
+                   my $len = length ($rec->{share});
+                   $maxlen = $len if $len > $maxlen;
+               }
+               foreach my $rec (@$res) {
+                   printf "%-${maxlen}s %s\n", $rec->{share}, 
$rec->{description};
+               }
+           },
+       ],
+       glusterfs => [
+           "PVE::API2::Storage::Scan",
+           'glusterfsscan',
+           ['server'],
+           { node => $nodename },
+           sub  {
+               my $res = shift;
 
-           my $maxlen = 0;
-           foreach my $rec (@$res) {
-               my $len = length ($rec->{target});
-               $maxlen = $len if $len > $maxlen;
-           }
-           foreach my $rec (@$res) {
-               printf "%-${maxlen}s %s\n", $rec->{target}, $rec->{portal};
-           }
-       }],
-       lvm => [ "PVE::API2::Storage::Scan", 'lvmscan', [], { node => $nodename 
}, sub  {
-           my $res = shift;
-           foreach my $rec (@$res) {
-               printf "$rec->{vg}\n";
-           }
-       }],
-       lvmthin => [ "PVE::API2::Storage::Scan", 'lvmthinscan', ['vg'], { node 
=> $nodename }, sub  {
-           my $res = shift;
-           foreach my $rec (@$res) {
-               printf "$rec->{lv}\n";
-           }
-       }],
+               foreach my $rec (@$res) {
+                   printf "%s\n", $rec->{volname};
+               }
+           },
+       ],
+       iscsi => [
+           "PVE::API2::Storage::Scan",
+           'iscsiscan',
+           ['portal'],
+           { node => $nodename },
+           sub  {
+               my $res = shift;
+
+               my $maxlen = 0;
+               foreach my $rec (@$res) {
+                   my $len = length ($rec->{target});
+                   $maxlen = $len if $len > $maxlen;
+               }
+               foreach my $rec (@$res) {
+                   printf "%-${maxlen}s %s\n", $rec->{target}, $rec->{portal};
+               }
+           },
+       ],
+       lvm => [
+           "PVE::API2::Storage::Scan",
+           'lvmscan',
+           [],
+           { node => $nodename },
+           sub  {
+               my $res = shift;
+               foreach my $rec (@$res) {
+                   printf "$rec->{vg}\n";
+               }
+           },
+       ],
+       lvmthin => [
+           "PVE::API2::Storage::Scan",
+           'lvmthinscan',
+           ['vg'],
+           { node => $nodename },
+           sub  {
+               my $res = shift;
+               foreach my $rec (@$res) {
+                   printf "$rec->{lv}\n";
+               }
+           },
+       ],
        pbs => [
            "PVE::API2::Storage::Scan",
            'pbsscan',
@@ -652,13 +719,19 @@ our $cmddef = {
            $print_api_result,
            $PVE::RESTHandler::standard_output_options,
        ],
-       zfs => [ "PVE::API2::Storage::Scan", 'zfsscan', [], { node => $nodename 
}, sub  {
-           my $res = shift;
+       zfs => [
+           "PVE::API2::Storage::Scan",
+           'zfsscan',
+           [],
+           { node => $nodename },
+           sub  {
+               my $res = shift;
 
-           foreach my $rec (@$res) {
-                printf "$rec->{pool}\n";
-           }
-       }],
+               foreach my $rec (@$res) {
+                   printf "$rec->{pool}\n";
+               }
+           },
+       ],
     },
     nfsscan => { alias => 'scan nfs' },
     cifsscan => { alias => 'scan cifs' },
@@ -667,55 +740,85 @@ our $cmddef = {
     lvmscan => { alias => 'scan lvm' },
     lvmthinscan => { alias => 'scan lvmthin' },
     zfsscan => { alias => 'scan zfs' },
-    path => [ __PACKAGE__, 'path', ['volume']],
-    extractconfig => [__PACKAGE__, 'extractconfig', ['volume']],
-    export => [ __PACKAGE__, 'export', ['volume', 'format', 'filename']],
-    import => [ __PACKAGE__, 'import', ['volume', 'format', 'filename'], {}, 
sub  {
-       my $volid = shift;
-       print PVE::Storage::volume_imported_message($volid);
-    }],
-    apiinfo => [ __PACKAGE__, 'apiinfo', [], {}, sub {
-       my $res = shift;
-
-       print "APIVER $res->{apiver}\n";
-       print "APIAGE $res->{apiage}\n";
-    }],
-    'prune-backups' => [ __PACKAGE__, 'prunebackups', ['storage'], { node => 
$nodename }, sub {
-       my $res = shift;
-
-       my ($dryrun, $list) = ($res->{dryrun}, $res->{list});
-
-       return if !$dryrun;
-
-       if (!scalar(@{$list})) {
-           print "No backups found\n";
-           return;
-       }
+    path => [
+       __PACKAGE__,
+       'path',
+       ['volume'],
+    ],
+    extractconfig => [
+       __PACKAGE__,
+       'extractconfig',
+       ['volume'],
+    ],
+    export => [
+       __PACKAGE__,
+       'export',
+       ['volume', 'format', 'filename'],
+    ],
+    import => [
+       __PACKAGE__,
+       'import',
+       ['volume', 'format', 'filename'],
+       {},
+       sub {
+           my $volid = shift;
+           print PVE::Storage::volume_imported_message($volid);
+       },
+    ],
+    apiinfo => [
+       __PACKAGE__,
+       'apiinfo',
+       [],
+       {},
+       sub {
+           my $res = shift;
 
-       print "NOTE: this is only a preview and might not be what a 
subsequent\n" .
-             "prune call does if backups are removed/added in the 
meantime.\n\n";
+           print "APIVER $res->{apiver}\n";
+           print "APIAGE $res->{apiage}\n";
+       },
+    ],
+    'prune-backups' => [
+       __PACKAGE__,
+       'prunebackups',
+       ['storage'],
+       { node => $nodename },
+       sub {
+           my $res = shift;
 
-       my @sorted = sort {
-           my $vmcmp = PVE::Tools::safe_compare($a->{vmid}, $b->{vmid}, sub { 
$_[0] <=> $_[1] });
-           return $vmcmp if $vmcmp ne 0;
-           return $a->{ctime} <=> $b->{ctime};
-       } @{$list};
+           my ($dryrun, $list) = ($res->{dryrun}, $res->{list});
 
-       my $maxlen = 0;
-       foreach my $backup (@sorted) {
-           my $volid = $backup->{volid};
-           $maxlen = length($volid) if length($volid) > $maxlen;
-       }
-       $maxlen+=1;
-
-       printf("%-${maxlen}s %15s %10s\n", 'Backup', 'Backup-ID', 'Prune-Mark');
-       foreach my $backup (@sorted) {
-           my $type = $backup->{type};
-           my $vmid = $backup->{vmid};
-           my $backup_id = defined($vmid) ? "$type/$vmid" : "$type";
-           printf("%-${maxlen}s %15s %10s\n", $backup->{volid}, $backup_id, 
$backup->{mark});
-       }
-    }],
+           return if !$dryrun;
+
+           if (!scalar(@{$list})) {
+               print "No backups found\n";
+               return;
+           }
+
+           print "NOTE: this is only a preview and might not be what a 
subsequent\n" .
+               "prune call does if backups are removed/added in the 
meantime.\n\n";
+
+           my @sorted = sort {
+               my $vmcmp = PVE::Tools::safe_compare($a->{vmid}, $b->{vmid}, 
sub { $_[0] <=> $_[1] });
+               return $vmcmp if $vmcmp ne 0;
+               return $a->{ctime} <=> $b->{ctime};
+           } @{$list};
+
+           my $maxlen = 0;
+           foreach my $backup (@sorted) {
+               my $volid = $backup->{volid};
+               $maxlen = length($volid) if length($volid) > $maxlen;
+           }
+           $maxlen+=1;
+
+           printf("%-${maxlen}s %15s %10s\n", 'Backup', 'Backup-ID', 
'Prune-Mark');
+           foreach my $backup (@sorted) {
+               my $type = $backup->{type};
+               my $vmid = $backup->{vmid};
+               my $backup_id = defined($vmid) ? "$type/$vmid" : "$type";
+               printf("%-${maxlen}s %15s %10s\n", $backup->{volid}, 
$backup_id, $backup->{mark});
+           }
+       },
+    ],
 };
 
 1;
-- 
2.30.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to