implement a few bash completion helpers

This commit is contained in:
Dietmar Maurer 2015-09-06 16:01:59 +02:00
parent f3e76e36bc
commit 65e866e5da
2 changed files with 60 additions and 1 deletions

View File

@ -271,12 +271,13 @@ __PACKAGE__->register_method({
properties => PVE::QemuServer::json_config_properties(
{
node => get_standard_option('pve-node'),
vmid => get_standard_option('pve-vmid'),
vmid => get_standard_option('pve-vmid', { completion => \&PVE::Cluster::complete_next_vmid }),
archive => {
description => "The backup file.",
type => 'string',
optional => 1,
maxLength => 255,
completion => \&PVE::QemuServer::complete_backup_archives,
},
storage => get_standard_option('pve-storage-id', {
description => "Default storage.",

View File

@ -6385,4 +6385,62 @@ sub scsihw_infos {
return ($maxdev, $controller, $controller_prefix);
}
# bash completion helper
sub complete_backup_archives {
my ($cmdname, $pname, $cvalue) = @_;
my $cfg = PVE::Storage::config();
my $storeid;
if ($cvalue =~ m/^([^:]+):/) {
$storeid = $1;
}
my $data = PVE::Storage::template_list($cfg, $storeid, 'backup');
my $res = [];
foreach my $id (keys %$data) {
foreach my $item (@{$data->{$id}}) {
next if $item->{format} !~ m/^vma\.(gz|lzo)$/;
push @$res, $item->{volid} if defined($item->{volid});
}
}
return $res;
}
my $complete_vmid_full = sub {
my ($running) = @_;
my $idlist = vmstatus();
my $res = [];
foreach my $id (keys %$idlist) {
my $d = $idlist->{$id};
if (defined($running)) {
next if $d->{template};
next if $running && $d->{status} ne 'running';
next if !$running && $d->{status} eq 'running';
}
push @$res, $id;
}
return $res;
};
sub complete_vmid {
return &$complete_vmid_full();
}
sub complete_vmid_stopped {
return &$complete_vmid_full(0);
}
sub complete_vmid_running {
return &$complete_vmid_full(1);
}
1;