Author: arkurth
Date: Thu Apr 27 19:53:38 2017
New Revision: 1792951
URL: http://svn.apache.org/viewvc?rev=1792951&view=rev
Log:
VCL-911
Added '-o compat=0.10' option to qemu-img command in KVM.pm::copy_virtual_disk
if the destination is the repository.
Modified:
vcl/trunk/managementnode/lib/VCL/Module/Provisioning/libvirt/KVM.pm
Modified: vcl/trunk/managementnode/lib/VCL/Module/Provisioning/libvirt/KVM.pm
URL:
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/libvirt/KVM.pm?rev=1792951&r1=1792950&r2=1792951&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/Provisioning/libvirt/KVM.pm
(original)
+++ vcl/trunk/managementnode/lib/VCL/Module/Provisioning/libvirt/KVM.pm Thu Apr
27 19:53:38 2017
@@ -599,8 +599,18 @@ sub copy_virtual_disk {
$source_file_paths_string = '"' . join('" "',
@source_file_paths) . '"';
#}
+ my $options = '';
+ # VCL-911: If copying to the repository, save the image qcow2 version
0.10, the traditional image format that can be read by any QEMU since 0.10
+ my $repository_image_file_path =
$self->get_repository_image_file_path();
+ if (1 || $destination_file_path eq $repository_image_file_path) {
+ $options .= ' -o compat=0.10';
+ }
+
#my $command = "qemu-img convert -f vmdk -O $disk_format
$source_file_paths_string \"$destination_file_path\" && qemu-img info
\"$destination_file_path\"";
- my $command = "qemu-img convert $source_file_paths_string -O
$disk_format \"$destination_file_path\" && qemu-img info
\"$destination_file_path\"";
+ my $command = "qemu-img convert $source_file_paths_string -O
$disk_format";
+ $command .= $options;
+ $command .= " \"$destination_file_path\"";
+ $command .= " && qemu-img info \"$destination_file_path\"";
## If the image had to be converted to raw format first, add command to
delete raw files
#if ($raw_file_directory_path) {
@@ -611,6 +621,15 @@ sub copy_virtual_disk {
my $start_time = time;
my ($exit_status, $output) = $self->vmhost_os->execute($command, 0,
7200);
+ if (defined($output && grep(/Unknown option.*compat/, @$output))) {
+ # Check for older versions which don't support '-o compat=':
+ # Unknown option 'compat'
+ # qemu-img: Invalid options for file format 'qcow2'.
+ # Remove the option from the command and try again
+ $command =~ s/ -o compat=0.10//;
+ notify($ERRORS{'DEBUG'}, 0, "version of qemu-img on $node_name
does not appear to support the '-o compat=' option, trying again without it,
output from first attempt:\n" . join("\n", @$output));
+ ($exit_status, $output) = $self->vmhost_os->execute($command,
0, 7200);
+ }
if (!defined($exit_status)) {
notify($ERRORS{'WARNING'}, 0, "failed to execute command to
copy/convert virtual disk on $node_name:\n$command");
return;