]> git.proxmox.com Git - qemu-server.git/blobdiff - PVE/API2/Qemu.pm
VM.Snapshot.Rollback privilege added
[qemu-server.git] / PVE / API2 / Qemu.pm
index 8434018992a7c4fa563c9e7db9969faebaa053e1..869eb8c109aeb87883e43b0cbc2483b5adf53a2a 100644 (file)
@@ -144,24 +144,7 @@ my $create_disks = sub {
 
            my $volid;
            if ($ds eq 'efidisk0') {
-               # handle efidisk
-               my $ovmfvars = '/usr/share/kvm/OVMF_VARS-pure-efi.fd';
-               die "uefi vars image not found\n" if ! -f $ovmfvars;
-               $size = PVE::Tools::convert_size(-s $ovmfvars, 'b' => 'kb');
-               $volid = PVE::Storage::vdisk_alloc($storecfg, $storeid, $vmid, $fmt, undef, $size);
-               my ($storeid, $volname) = PVE::Storage::parse_volume_id($volid);
-               my $scfg = PVE::Storage::storage_config($storecfg, $storeid);
-               my $qemufmt = PVE::QemuServer::qemu_img_format($scfg, $volname);
-               my $path = PVE::Storage::path($storecfg, $volid);
-               my $efidiskcmd = ['/usr/bin/qemu-img', 'convert', '-n', '-f', 'raw', '-O', $qemufmt];
-               push @$efidiskcmd, $ovmfvars;
-               push @$efidiskcmd, $path;
-
-               PVE::Storage::activate_volumes($storecfg, [$volid]);
-
-               eval { PVE::Tools::run_command($efidiskcmd); };
-               my $err = $@;
-               die "Copying of EFI Vars image failed: $err" if $err;
+               ($volid, $size) = PVE::QemuServer::create_efidisk($storecfg, $storeid, $vmid, $fmt);
            } else {
                $volid = PVE::Storage::vdisk_alloc($storecfg, $storeid, $vmid, $fmt, undef, $size);
            }
@@ -2714,7 +2697,10 @@ __PACKAGE__->register_method({
                my $newvollist = [];
 
                eval {
-                   local $SIG{INT} = $SIG{TERM} = $SIG{QUIT} = $SIG{HUP} = sub { die "interrupted by signal\n"; };
+                   local $SIG{INT} =
+                       local $SIG{TERM} =
+                       local $SIG{QUIT} =
+                       local $SIG{HUP} = sub { die "interrupted by signal\n"; };
 
                    warn "moving disk with snapshots, snapshots will not be moved!\n"
                        if $snapshotted;
@@ -3356,7 +3342,7 @@ __PACKAGE__->register_method({
     proxyto => 'node',
     description => "Get snapshot configuration",
     permissions => {
-       check => ['perm', '/vms/{vmid}', [ 'VM.Snapshot' ]],
+       check => ['perm', '/vms/{vmid}', [ 'VM.Snapshot', 'VM.Snapshot.Rollback' ], any => 1],
     },
     parameters => {
        additionalProperties => 0,
@@ -3395,7 +3381,7 @@ __PACKAGE__->register_method({
     proxyto => 'node',
     description => "Rollback VM state to specified snapshot.",
     permissions => {
-       check => ['perm', '/vms/{vmid}', [ 'VM.Snapshot' ]],
+       check => ['perm', '/vms/{vmid}', [ 'VM.Snapshot', 'VM.Snapshot.Rollback' ], any => 1],
     },
     parameters => {
        additionalProperties => 0,