]> git.proxmox.com Git - qemu-server.git/commitdiff
improve bash completion
authorDietmar Maurer <dietmar@proxmox.com>
Mon, 7 Sep 2015 06:13:07 +0000 (08:13 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Mon, 7 Sep 2015 06:13:07 +0000 (08:13 +0200)
PVE/API2/Qemu.pm
PVE/CLI/qm.pm
PVE/QemuServer.pm

index c682c27f116bb7189718e81b672f1e2e3e7bee15..83b3c19bef01f520168ba522383185b22370342d 100644 (file)
@@ -282,6 +282,7 @@ __PACKAGE__->register_method({
                storage => get_standard_option('pve-storage-id', {
                    description => "Default storage.",
                    optional => 1,
+                   completion => \&PVE::QemuServer::complete_storage,
                }),
                force => {
                    optional => 1,
@@ -620,7 +621,7 @@ __PACKAGE__->register_method({
        additionalProperties => 0,
        properties => {
            node => get_standard_option('pve-node'),
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
             current => {
                 description => "Get current values (instead of pending values).",
                 optional => 1,
@@ -676,7 +677,7 @@ __PACKAGE__->register_method({
        additionalProperties => 0,
        properties => {
            node => get_standard_option('pve-node'),
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
        },
     },
     returns => {
@@ -1069,7 +1070,7 @@ __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::QemuServer::complete_vmid }),
                skiplock => get_standard_option('skiplock'),
                delete => {
                    type => 'string', format => 'pve-configid-list',
@@ -1118,7 +1119,7 @@ __PACKAGE__->register_method({
        additionalProperties => 0,
        properties => {
            node => get_standard_option('pve-node'),
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid_stopped }),
            skiplock => get_standard_option('skiplock'),
        },
     },
@@ -1178,7 +1179,7 @@ __PACKAGE__->register_method({
        additionalProperties => 0,
        properties => {
            node => get_standard_option('pve-node'),
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
            idlist => {
                type => 'string', format => 'pve-configid-list',
                description => "A list of disk IDs you want to delete.",
@@ -2041,7 +2042,7 @@ __PACKAGE__->register_method({
        additionalProperties => 0,
        properties => {
            node => get_standard_option('pve-node'),
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
            newid => get_standard_option('pve-vmid', { description => 'VMID for the clone.' }),
            name => {
                optional => 1,
@@ -2322,13 +2323,16 @@ __PACKAGE__->register_method({
         additionalProperties => 0,
         properties => {
            node => get_standard_option('pve-node'),
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
            disk => {
                type => 'string',
                description => "The disk you want to move.",
                enum => [ PVE::QemuServer::disknames() ],
            },
-            storage => get_standard_option('pve-storage-id', { description => "Target Storage." }),
+            storage => get_standard_option('pve-storage-id', {
+               description => "Target storage.",
+               completion => \&PVE::QemuServer::complete_storage,
+            }),
             'format' => {
                 type => 'string',
                 description => "Target Format.",
@@ -2470,8 +2474,11 @@ __PACKAGE__->register_method({
        additionalProperties => 0,
        properties => {
            node => get_standard_option('pve-node'),
-           vmid => get_standard_option('pve-vmid'),
-           target => get_standard_option('pve-node', { description => "Target node." }),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
+           target => get_standard_option('pve-node', { 
+               description => "Target node.",
+               completion =>  \&PVE::Cluster::complete_migration_target,
+            }),
            online => {
                type => 'boolean',
                description => "Use online/live migration.",
@@ -2609,7 +2616,7 @@ __PACKAGE__->register_method({
         additionalProperties => 0,
         properties => {
            node => get_standard_option('pve-node'),
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
            skiplock => get_standard_option('skiplock'),
            disk => {
                type => 'string',
@@ -2788,7 +2795,7 @@ __PACKAGE__->register_method({
        additionalProperties => 0,
        properties => {
            node => get_standard_option('pve-node'),
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
            snapname => get_standard_option('pve-snapshot-name'),
            vmstate => {
                optional => 1,
@@ -2975,7 +2982,7 @@ __PACKAGE__->register_method({
        additionalProperties => 0,
        properties => {
            node => get_standard_option('pve-node'),
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
            snapname => get_standard_option('pve-snapshot-name'),
        },
     },
@@ -3018,7 +3025,7 @@ __PACKAGE__->register_method({
        additionalProperties => 0,
        properties => {
            node => get_standard_option('pve-node'),
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
            snapname => get_standard_option('pve-snapshot-name'),
            force => {
                optional => 1,
@@ -3067,7 +3074,7 @@ __PACKAGE__->register_method({
        additionalProperties => 0,
        properties => {
            node => get_standard_option('pve-node'),
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid_stopped }),
            disk => {
                optional => 1,
                type => 'string',
index dc544a80bb914c7db2798c53b11ed96f7e40f04e..747e54045aca42a1a8fc17c0c7bd410ae897d718 100755 (executable)
@@ -83,7 +83,7 @@ __PACKAGE__->register_method ({
     parameters => {
        additionalProperties => 0,
        properties => {
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
        },
     },
     returns => { type => 'null'},
@@ -104,7 +104,7 @@ __PACKAGE__->register_method ({
     parameters => {
        additionalProperties => 0,
        properties => {
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
            verbose => {
                description => "Verbose output format",
                type => 'boolean',
@@ -144,7 +144,7 @@ __PACKAGE__->register_method ({
     parameters => {
        additionalProperties => 0,
        properties => {
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid_running }),
        },
     },
     returns => { type => 'null'},
@@ -175,7 +175,7 @@ __PACKAGE__->register_method ({
     parameters => {
        additionalProperties => 0,
        properties => {
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid }),
        },
     },
     returns => { type => 'null'},
@@ -231,7 +231,7 @@ __PACKAGE__->register_method ({
     parameters => {
        additionalProperties => 0,
        properties => {
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid_running }),
            timeout => {
                description => "Timeout in seconds. Default is to wait forever.",
                type => 'integer',
@@ -271,7 +271,7 @@ __PACKAGE__->register_method ({
     parameters => {
        additionalProperties => 0,
        properties => {
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid_running }),
        },
     },
     returns => { type => 'null'},
@@ -312,7 +312,10 @@ __PACKAGE__->register_method ({
     parameters => {
        additionalProperties => 0,
        properties => {
-           vmid => get_standard_option('pve-vmid', {optional => 1}),
+           vmid => get_standard_option('pve-vmid', {
+               optional => 1,
+               completion => \&PVE::QemuServer::complete_vmid,
+           }),
        },
     },
     returns => { type => 'null'},
@@ -332,7 +335,7 @@ __PACKAGE__->register_method ({
     parameters => {
        additionalProperties => 0,
        properties => {
-           vmid => get_standard_option('pve-vmid'),
+           vmid => get_standard_option('pve-vmid', { completion => \&PVE::QemuServer::complete_vmid_running }),
            iface => {
                description => "Select the serial device. By default we simply use the first suitable device.",
                type => 'string',
index a50331132d4b890c382ec6c1761d487245831bfd..fedb58e486fe7387a4faf1dedbcb76de3a660ae7 100644 (file)
@@ -6443,4 +6443,18 @@ sub complete_vmid_running {
     return &$complete_vmid_full(1);
 }
 
+sub complete_storage {
+
+    my $cfg = PVE::Storage::config();
+    my $ids = $cfg->{ids};
+
+    my $res = [];
+    foreach my $sid (keys %$ids) {
+       next if !PVE::Storage::storage_check_enabled($cfg, $sid, undef, 1);
+       push @$res, $sid;
+    }
+
+    return $res;
+}
+
 1;