]> git.proxmox.com Git - qemu-server.git/commitdiff
api2: vm_feature
authorAlexandre Derumier <aderumier@odiso.com>
Thu, 27 Dec 2012 15:06:55 +0000 (16:06 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Fri, 28 Dec 2012 06:49:37 +0000 (07:49 +0100)
return true/false if vm has feature

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
PVE/API2/Qemu.pm

index 09ab1e749b5009562012e3b3a4e85e4a20dd6df5..a6047e5a20472f9071649385d6f9ce6dc26f0e43 100644 (file)
@@ -1629,6 +1629,62 @@ __PACKAGE__->register_method({
        return;
     }});
 
+__PACKAGE__->register_method({
+    name => 'vm_feature',
+    path => '{vmid}/feature',
+    method => 'GET',
+    proxyto => 'node',
+    protected => 1, 
+    description => "Check if feature for virtual machine is available.",
+    permissions => {
+       check => ['perm', '/vms/{vmid}', [ 'VM.Audit' ]],
+    },
+    parameters => {
+       additionalProperties => 0,
+       properties => {
+           node => get_standard_option('pve-node'),
+           vmid => get_standard_option('pve-vmid'),
+            feature => {
+                description => "Feature to check.",
+                type => 'string',
+                enum => [ 'snapshot', 'clone' ],
+            },
+            snapname => get_standard_option('pve-snapshot-name', {
+                optional => 1,
+            }),
+       },
+
+    },
+    returns => {
+        type => 'boolean'
+    },
+    code => sub {
+       my ($param) = @_;
+
+       my $node = extract_param($param, 'node');
+
+       my $vmid = extract_param($param, 'vmid');
+
+       my $snapname = extract_param($param, 'snapname');
+
+       my $feature = extract_param($param, 'feature');
+
+       my $running = PVE::QemuServer::check_running($vmid);
+
+       my $conf = PVE::QemuServer::load_config($vmid);
+
+       if($snapname){
+           my $snap = $conf->{snapshots}->{$snapname};
+            die "snapshot '$snapname' does not exist\n" if !defined($snap);
+           $conf = $snap;
+       }
+       my $storecfg = PVE::Storage::config();
+
+       my $hasfeature = PVE::QemuServer::has_feature($feature, $conf, $storecfg, $snapname, $running);
+       my $res = $hasfeature ? 1 : 0 ;
+       return $res;
+    }});
+
 __PACKAGE__->register_method({
     name => 'migrate_vm',
     path => '{vmid}/migrate',