Fixes to import-to-ovirt.pl
[import-to-ovirt.git] / import-to-ovirt.pl
index cb6c1db..9d443eb 100755 (executable)
@@ -23,7 +23,7 @@ use English;
 use Pod::Usage;
 use Getopt::Long;
 use File::Temp qw(tempdir);
-use POSIX qw(_exit strftime);
+use POSIX qw(_exit setgid setuid strftime);
 use XML::Writer;
 
 use Sys::Guestfs;
@@ -216,6 +216,14 @@ if (!defined $name) {
     $name =~ s{\.[^.]+}{};
 }
 
+if ($vmtype =~ /^Desktop$/i) {
+    $vmtype = 0;
+} elsif ($vmtype =~ /^Server$/i) {
+    $vmtype = 1;
+} else {
+    die "$0: --vmtype parameter must be 'Desktop' or 'Server'\n"
+}
+
 # Open the guest in libguestfs so we can inspect it.
 my $g = Sys::Guestfs->new ();
 $g->add_drive_opts ($_, readonly => 1) foreach (@disks);
@@ -363,12 +371,12 @@ sub run_as_vdsm
     if ($pid == 0) {
         # Child process.
         if ($EUID == 0) {
-            $GID = 36;
-            $UID = 36;
+            setgid (36);
+            setuid (36);
         }
         eval { &$fn () };
         if ($@) {
-            print STDERR $@, "\n";
+            print STDERR "$@\n";
             _exit (1);
         }
         _exit (0);
@@ -433,14 +441,13 @@ for ($i = 0; $i < @disks; ++$i) {
         chmod (0666, $output_file) or die "chmod: $output_file: $!";
     });
     print "Copying $input_file ...\n";
-#    system ("qemu-img", "convert", "-p",
-#            $input_file,
-#            "-O", "qcow2",
-#            "-o", "compat=0.10", # for RHEL 6-based ovirt nodes
-#            $output_file) == 0
-#                or die "qemu-img: $input_file: failed (status $?)";
-#    push @real_sizes, -s $output_file;
-    push @real_sizes, 0;
+    system ("qemu-img", "convert", "-p",
+            $input_file,
+            "-O", "qcow2",
+            "-o", "compat=0.10", # for RHEL 6-based ovirt nodes
+            $output_file) == 0
+                or die "qemu-img: $input_file: failed (status $?)";
+    push @real_sizes, -s $output_file;
 
     my $size_in_sectors = $virtual_sizes[$i] / 512;
 
@@ -544,8 +551,10 @@ for ($i = 0; $i < @disks; ++$i)
 
     $w->startTag ("Disk",
                   [$ovf_ns, "diskId" ] => $vol_uuids[$i],
-                  [$ovf_ns, "actual_size"] => $real_size_in_gb,
-                  [$ovf_ns, "size"] => $virtual_size_in_gb,
+                  [$ovf_ns, "actual_size"] =>
+                      sprintf ("%.0f", $real_size_in_gb),
+                  [$ovf_ns, "size"] =>
+                      sprintf ("%.0f", $virtual_size_in_gb),
                   [$ovf_ns, "fileRef"] => $href,
                   [$ovf_ns, "parentRef"] => "",
                   [$ovf_ns, "vm_snapshot_id"] => uuidgen (),
@@ -767,7 +776,7 @@ run_as_vdsm (sub {
 });
 
 # Finished.
-#$delete_output_on_exit = 0;
+$delete_output_on_exit = 0;
 print "\n";
 print "OVF written to $ovf_file\n";
 print "\n";