]> git.proxmox.com Git - qemu-server.git/blobdiff - qm
rename move to move_disk
[qemu-server.git] / qm
diff --git a/qm b/qm
index 25f84ea026d5ad6147c141dd73e175a96d43c09b..879c477e17f9f4d0f2a3e33637764ff4b8c0ef48 100755 (executable)
--- a/qm
+++ b/qm
@@ -48,6 +48,9 @@ sub run_vnc_proxy {
 
     my $path = PVE::QemuServer::vnc_socket($vmid);
 
+    my $c;
+    while ( ++$c < 10 && !-e $path ) { sleep(1); }
+
     my $s = IO::Socket::UNIX->new(Peer => $path, Timeout => 120);
 
     die "unable to connect to socket '$path' - $!" if !$s;
@@ -318,70 +321,7 @@ __PACKAGE__->register_method ({
     code => sub {
        my ($param) = @_;
 
-       my $cfg = PVE::Cluster::cfs_read_file("storage.cfg");
-
-       my $info = PVE::Storage::vdisk_list($cfg, undef, $param->{vmid});
-
-       my $volid_hash = {};
-       foreach my $storeid (keys %$info) {
-           foreach my $item (@{$info->{$storeid}}) {
-               next if !($item->{volid} && $item->{size});
-               $volid_hash->{$item->{volid}} = $item;
-           }
-       }
-
-       my $updatefn =  sub {
-           my ($vmid) = @_;
-
-           my $conf = PVE::QemuServer::load_config($vmid);
-           
-           PVE::QemuServer::check_lock($conf);
-
-           my $changes;
-
-           my $used = {};
-
-           # update size info
-           foreach my $opt (keys %$conf) {
-               if (PVE::QemuServer::valid_drivename($opt)) {
-                   my $drive = PVE::QemuServer::parse_drive($opt, $conf->{$opt});
-                   my $volid = $drive->{file};
-                   next if !$volid;
-
-                   $used->{$volid} = 1;
-
-                   next if PVE::QemuServer::drive_is_cdrom($drive);
-                   next if !$volid_hash->{$volid};
-
-                   $drive->{size} = $volid_hash->{$volid}->{size};
-                   $changes = 1;
-                   $conf->{$opt} = PVE::QemuServer::print_drive($vmid, $drive);
-               }
-           }
-
-           # add unused volumes
-           foreach my $storeid (keys %$info) {
-               foreach my $item (@{$info->{$storeid}}) {
-                   next if !($item->{volid} && $item->{vmid});
-                   next if $item->{vmid} ne $vmid;
-                   next if $item->{volid} =~ m/vm-$vmid-state-/;
-                   next if $used->{$item->{volid}};
-                   $changes = 1;
-                   PVE::QemuServer::add_unused_volume($conf, $item->{volid});
-               }
-           }
-
-           PVE::QemuServer::update_config_nolock($vmid, $conf, 1) if $changes;
-       };
-
-       if (defined($param->{vmid})) {
-           PVE::QemuServer::lock_config($param->{vmid}, $updatefn, $param->{vmid});
-       } else {
-           my $vmlist = PVE::QemuServer::config_list();
-           foreach my $vmid (keys %$vmlist) {
-               PVE::QemuServer::lock_config($vmid, $updatefn, $vmid);      
-           }
-       }
+       PVE::QemuServer::rescan($param->{vmid});
 
        return undef;
     }});
@@ -411,12 +351,16 @@ my $cmddef = {
 
     destroy => [ "PVE::API2::Qemu", 'destroy_vm', ['vmid'], { node => $nodename }, $upid_exit ],
 
+    clone => [ "PVE::API2::Qemu", 'clone_vm', ['vmid', 'newid'], { node => $nodename }, $upid_exit ],
+
     migrate => [ "PVE::API2::Qemu", 'migrate_vm', ['vmid', 'target'], { node => $nodename }, $upid_exit ],
 
     set => [ "PVE::API2::Qemu", 'update_vm', ['vmid'], { node => $nodename } ],
 
     resize => [ "PVE::API2::Qemu", 'resize_vm', ['vmid', 'disk', 'size'], { node => $nodename } ],
 
+    move_disk => [ "PVE::API2::Qemu", 'move_vm_disk', ['vmid', 'disk', 'storage'], { node => $nodename }, $upid_exit ],
+
     unlink => [ "PVE::API2::Qemu", 'unlink', ['vmid', 'idlist'], { node => $nodename } ],
 
     config => [ "PVE::API2::Qemu", 'vm_config', ['vmid'], 
@@ -442,6 +386,8 @@ my $cmddef = {
 
     rollback => [ "PVE::API2::Qemu", 'rollback', ['vmid', 'snapname'], { node => $nodename } , $upid_exit ],
 
+    template => [ "PVE::API2::Qemu", 'template', ['vmid'], { node => $nodename }],
+
     start => [ "PVE::API2::Qemu", 'vm_start', ['vmid'], { node => $nodename } , $upid_exit ],
 
     stop => [ "PVE::API2::Qemu", 'vm_stop', ['vmid'], { node => $nodename }, $upid_exit ],