[pve-devel] r5165 - in qemu-server/pve2: . PVE PVE/API2/Qemu

svn-commits at proxmox.com svn-commits at proxmox.com
Thu Sep 16 15:17:19 CEST 2010


Author: dietmar
Date: 2010-09-16 13:17:19 +0000 (Thu, 16 Sep 2010)
New Revision: 5165

Modified:
   qemu-server/pve2/ChangeLog
   qemu-server/pve2/PVE/API2/Qemu/Config.pm
   qemu-server/pve2/PVE/QemuServer.pm
Log:
	(parse_config): remove diskinfo
	(config_to_command): also return volume ID list
	(activate_volumes): removed



Modified: qemu-server/pve2/ChangeLog
===================================================================
--- qemu-server/pve2/ChangeLog	2010-09-16 12:13:05 UTC (rev 5164)
+++ qemu-server/pve2/ChangeLog	2010-09-16 13:17:19 UTC (rev 5165)
@@ -1,6 +1,9 @@
 2010-09-16  Proxmox Support Team  <support at proxmox.com>
 
 	* PVE/QemuServer.pm (disknames): removed - no longer needed
+	(parse_config): remove diskinfo
+	(config_to_command): also return volume ID list
+	(activate_volumes): removed
 
 	* PVE/QemuServer.pm (parse_options_new): removed - no longer needed
 

Modified: qemu-server/pve2/PVE/API2/Qemu/Config.pm
===================================================================
--- qemu-server/pve2/PVE/API2/Qemu/Config.pm	2010-09-16 12:13:05 UTC (rev 5164)
+++ qemu-server/pve2/PVE/API2/Qemu/Config.pm	2010-09-16 13:17:19 UTC (rev 5165)
@@ -330,11 +330,6 @@
 
 	my $conf = PVE::QemuServer::load_config ($param->{vmid});
 
-	# fixme: that should not be added to the config
-	delete $conf->{disksize};
-	delete $conf->{disktype};
-	delete $conf->{diskinfo};
-
 	return $conf;
     }});
 

Modified: qemu-server/pve2/PVE/QemuServer.pm
===================================================================
--- qemu-server/pve2/PVE/QemuServer.pm	2010-09-16 12:13:05 UTC (rev 5164)
+++ qemu-server/pve2/PVE/QemuServer.pm	2010-09-16 13:17:19 UTC (rev 5165)
@@ -1202,24 +1202,25 @@
 
     check_lock ($conf);
 
-    my $di = $conf->{diskinfo};
-
     # only remove disks owned by this VM 
-    foreach my $ds (keys %$di) {
-	next if drive_is_cdrom ($di->{$ds});
+    foreach my $ds (keys %$conf) {
+	next if !valid_drivename($ds);
 
-	my $volid = $di->{$ds}->{file};
-	next if !$volid;
-	next if $volid =~ m|^/|;
+	my $drive = parse_drive ($ds, $conf->{$ds});
+	next if !$drive;
 
+	next if drive_is_cdrom ($drive);
+
+	my $volid = $drive->{file};
+	next if !$volid || $volid =~ m|^/|;
+
 	my ($path, $owner) = PVE::Storage::path ($storecfg, $volid);
-	next if !$path;
-	next if !$owner || ($owner != $vmid);
+	next if !$path || !$owner || ($owner != $vmid);
 
 	PVE::Storage::vdisk_free ($storecfg, $volid);
     }
     
-    system ("rm -f '$conffile'");
+    unlink $conffile;
 
     # also remove unused disk
     eval {
@@ -1237,6 +1238,7 @@
     warn $@ if $@;
 }
 
+# fixme: remove?
 sub load_diskinfo {
     my ($storecfg, $vmid, $conf) = @_;
 
@@ -1267,7 +1269,7 @@
 	PVE::Storage::foreach_volid ($dl, sub {
 	    my ($volid, $sid, $volname, $d) = @_;
 	    $info->{$volid} = $d;
-				     });
+	});
     };
     warn $@ if $@;
 
@@ -1347,23 +1349,6 @@
     } 
     delete $res->{smp};
 
-    my $disksize = 0;
-    my $disktype = 'none';
- 
-    my $di = load_diskinfo ($storecfg, $vmid, $res);
-
-    foreach my $ds (keys %$di) {
-	my $size = $di->{$ds}->{disksize};
-	if ($res->{bootdisk} && ($ds eq $res->{bootdisk}) && $size) {
-	    $disksize = $size;
-	    $disktype = $di->{$ds}->{interface};
-	}
-    }
-
-    $res->{disksize} = $disksize;
-    $res->{disktype} = $disktype;
-    $res->{diskinfo} = $di;
-
     return $res;
 }
 
@@ -1635,12 +1620,15 @@
 	# fixme: better status?
 	$d->{status} = $list->{$veid}->{pid} ? 'running' : 'stopped';
 	$d->{ip} = '-';
+
+	# fixme: where to get disk info/usage ?
 	$d->{disk} = 0;
+	$d->{maxdisk} = 0;
+
 	$d->{cpus} = ($conf->{sockets} || 1) * ($conf->{cores} || 1);
 	$d->{name} = $conf->{name} || "VM$veid";
 	$d->{maxmem} = $conf->{memory} ? $conf->{memory} : 0; 
 
-	$d->{maxdisk} = $conf->{disksize} ? int($conf->{disksize}*1024) : 0;
 
 	$d->{uptime} = 0;
 	$d->{pctcpu} = 0;
@@ -1865,12 +1853,22 @@
     #push @$cmd, '-soundhw', 'es1370';
     #push @$cmd, '-soundhw', $soundhw if $soundhw;
 
-    my $di = $conf->{diskinfo};
-    foreach my $ds (sort keys %$di) {
+    my $vollist = [];
+    foreach my $ds (keys %$conf) {
+	next if !valid_drivename($ds);
+
+	my $drive = parse_drive ($ds, $conf->{$ds});
+	next if !$drive;
+
+	eval { 
+	    PVE::Storage::parse_volume_id ($drive->{file});
+	    push @$vollist, $drive->{file};
+	}; # ignore errors
+
 	$use_virtio = 1 if $ds =~ m/^virtio/;
-	my $drive = print_drive_full ($storecfg, $vmid, $di->{$ds});
-	$drive .= ",boot=on" if $conf->{bootdisk} && ($conf->{bootdisk} eq $ds);
-	push @$cmd, '-drive', $drive;
+	my $tmp = print_drive_full ($storecfg, $vmid, $drive);
+	$tmp .= ",boot=on" if $conf->{bootdisk} && ($conf->{bootdisk} eq $ds);
+	push @$cmd, '-drive', $tmp;
     }
 
     if ($conf->{memory}) {
@@ -1937,7 +1935,7 @@
 	push @$cmd, @$aa;
     }
 
-    return $cmd;
+    return wantarray ? ($cmd, $vollist) : $cmd;
 }
  
 sub vnc_socket {
@@ -2016,23 +2014,6 @@
     die "unable to find free vnc port";
 };
 
-sub activate_volumes {
-    my ($storecfg, $conf)  = @_;
-
-    my $di = $conf->{diskinfo};
-
-    my $vollist = [];
-    foreach my $ds (keys %$di) {
-	my $volid = $di->{$ds}->{file};
-	eval { 
-	    PVE::Storage::parse_volume_id ($volid);
-	    push @$vollist, $volid;
-	};
-    }
-
-    PVE::Storage::activate_volumes ($storecfg, $vollist);
-}
-
 sub vm_start {
     my ($storecfg, $vmid, $statefile, $skiplock) = @_;
 
@@ -2069,7 +2050,7 @@
 
 	my $defaults = load_defaults();
 
-	my $cmd = config_to_command ($storecfg, $vmid, $conf, $defaults, $migrate_uri);
+	my ($cmd, $vollist) = config_to_command ($storecfg, $vmid, $conf, $defaults, $migrate_uri);
 	# host pci devices
 	if (my $pcidl = $conf->{hostpci}) {
 	    my @dl = split (/,/, $pcidl);
@@ -2082,7 +2063,7 @@
 	    }
 	}
 
-	activate_volumes ($storecfg, $conf);
+	PVE::Storage::activate_volumes($storecfg, $vollist);
 
 	eval  { run_command ($cmd, timeout => $migrate_uri ? undef : 30); };
 



More information about the pve-devel mailing list