Thanks for that. Does that mean that we prefer to do an if else based on version rather than basically doing a try catch?
I have not been involved in previous bash scripting for CS, so I am willing to fall in line with the preferred method. What I proposed was based on how similar problems were solved in other code in the same file. If I check for version, do you agree that I should check for 1.7 as the version since that is the version where the compact default changed? I will try to get this resolved tomorrow. Cheers, Will On Dec 1, 2014 9:16 PM, "Edison Su" <edison...@citrix.com> wrote: > qemu-img |head -n 1|awk '{print $3}' > > should show the version of qemu-img > > > > *From:* williamstev...@gmail.com [mailto:williamstev...@gmail.com] *On > Behalf Of *Will Stevens > *Sent:* Monday, December 01, 2014 2:17 PM > *To:* dev@cloudstack.apache.org > *Cc:* Leo Simons; Wilder Rodrigues; Rohit Yadav; Edison Su > *Subject:* Re: 05bec59c - kvm, qcow, systemvm qemu-img -o compat > > > > Alright, so far I have found the following: > https://github.com/qemu/qemu/commit/9117b47717ad208b12786ce88eacb013f9b3dd1c > > > > Basically, if the qemu-img version is less than 1.7, we should run the non > 'compat' option version and if the version is 1.7 or greater, we should run > the new command with the 'compat' version. > > > > Unfortunately I am not able to find a way to get the qemu-img version from > the command line. > > > > I am looking to basically add a conditional to try running with the compat > option and if that fails, then run it without the compat option. > > > > Basically, I would be replacing this: > > > > qemu-img convert -o compat=0.10 -f raw -c -O qcow2 raw.img > "${appliance_build_name}-kvm.qcow2" > > > > With this: > > > > set +e > > qemu-img convert -o compat=0.10 -f raw -c -O qcow2 raw.img > "${appliance_build_name}-kvm.qcow2" > > local qemuresult=$? > > set -e > > if [ ${qemuresult} != 0 ]; then > > log INFO "qemu-img convert failed, trying without compat option" > > qemu-img convert -f raw -c -O qcow2 raw.img > "${appliance_build_name}-kvm.qcow2" > > fi > > > > What do you guys think? Is this a good enough solution? If you guys > agree I will implement it in master and make sure it works, then we can > merge the change back to 4.5 to fix that branch as well. > > > > Let me know if you have issues with this approach... > > > > Cheers, > > > > Will > > > > > *Will STEVENS* > > Lead Developer > > > > *CloudOps | *Cloud Solutions Experts > > 420 rue Guy *|* Montreal *|* Quebec *|* H3J 1S6 > > w cloudops.com *|* tw @CloudOps_ > > > > On Mon, Dec 1, 2014 at 4:06 PM, Will Stevens <wstev...@cloudops.com> > wrote: > > Edison, > > According to this page the default compat option is 0.10: > http://manpages.ubuntu.com/manpages/trusty/man1/qemu-img.1.html > > > > Did you find that to not be the case and is that why you had to add the > compat option? > > > > BTW, in an attempt to get the master system vms building again, I > committed a change to master to remove the compat option. We now have > master system vms building correctly, but Rohit rightly pointed out that I > had basically reverted your change. > > > > I created a Jira ticket for this issue: > https://issues.apache.org/jira/browse/CLOUDSTACK-7959 > > > > I have not reverted my change in master at this point, so it is building > right now, but I also did not make the change to 4.5, so that branch is > currently failing to build system vms. > > > > I will see if I can track down in which version of qemu the compat option > was added so we can add some intelligent logic around this command. > > > > Will > > > > > > > > > *Will STEVENS* > > Lead Developer > > > > *CloudOps | *Cloud Solutions Experts > > 420 rue Guy *|* Montreal *|* Quebec *|* H3J 1S6 > > w cloudops.com *|* tw @CloudOps_ > > > > On Thu, Nov 20, 2014 at 1:07 PM, edison su <sudi...@gmail.com> wrote: > > Hi Leo, > Our new internal build system are using ubuntu 14.04 or something like > that, which has qemu 1.x installed by default, that's why I added the > "compat" option in the build script, otherwise, the image build by > qemu 1.x, won't work on RHEL 6.x. > The fix would be, in the build script, check the version of qemu-img, > if it's 0.x, then don't add "compat" option. There are a lot of people > still using RHEL 6.x as KVM hypervisor, we have to make sure the image > we build can still work on these machines. > > > On Thu, Nov 20, 2014 at 6:49 AM, Leo Simons <lsim...@schubergphilis.com> > wrote: > > Hey Edison, all, > > > > > https://github.com/apache/cloudstack/commit/05bec59c1498dbcfb8a1089c86855fd3b433ea58 > > > > breaks our internal build with > > > > + qemu-img convert -o compat=0.10 -f raw -c -O qcow2 raw.img \ > > systemvmtemplate-systemvm-persistent-config-4.5.0.124-kvm.qcow2 > > Unknown option 'compat' > > qemu-img: Invalid options for file format 'qcow2'. > > > > This is on CentOS release 6.6, which has > qemu-img-0.15.0-1.el6.rfx.x86_64. > > > > Based on > > > http://secure-web.cisco.com/1F5zlT8tpWX5PfbJbuzUoso6OWYSnPdIEm5Ue6-gXqJ1a69oLY46nrS2BKoFjZFPlr0DmQwfZHdm2XjfkVhbuMFrET2ilAqQyrI76EYyuxNVnTHaRHH_4bMCtgrtgasDwW1zTJWKDQp8d-HuwyPYokzHAiPFGp7w1CyCabrBpkEw/http%3A%2F%2Fwiki.qemu.org%2FOlderNews > > that seems like it is a really old qemu (august 2011). > > > > I'm guessing you have a newer OS / newer qemu? Can you please let me > know what OS, OS version and qemu(-img) version you are using? > > > > Also, does anyone know if there some minimum version of qemu-img that > should be used / cloudstack assumes? Is 0.15 still ok to do an acceptable > image conversion with? (we currently don't have any kvm use ourselves, but, > I'd like for our build infra to produce useful kvm images nonetheless). > > > > According to > > > http://secure-web.cisco.com/1pFLbDg2BMTb54NUG5_lYr4mAwFcn9tHP-Weq28Sj5SFqgRKker_DkUKLf6RdwVXHI66uQQNVvD74D6rs6Pc0srpLX0Ejh6nW6o9mBZ-AhQzygMrB_OfUQNLtsB-myd-CA0rJowOhs8ZTsIVr27mgJM4v6ay93D_64JLEBebrlnM/http%3A%2F%2Fwiki.qemu.org%2FChangeLog%2F1.1 > > the -o compat switch was introduced in 1.1. > > > > According to > > > https://github.com/qemu/qemu/commit/9117b47717ad208b12786ce88eacb013f9b3dd1c > > the default format was changed from 0.10 to 1.1 in qemu 1.7 and onwards. > > > > The libvirt people > > https://bugzilla.redhat.com/show_bug.cgi?id=997977 > > say they pass -o compat when qemu supports it (so when v >= 1.1 I > imagine). > > > > I think we should do the same in the build script and I'll make a patch. > > > > But, should we publish newer-format images too? According to > > > http://secure-web.cisco.com/193Tci801hAyVHNqtfHy56-aPW58HHhzwlnmfvPZQnrbtHxURQC0m3kDHxk-PlYYLhCZX0f768ZYK2fV1WbMFpQPz5JfmFt0S8cuzCSrykjOEx9isfBwORZu6I4XdU3jo-WdJcDgtoH-KOwKcGRX5TGZrVva_BDOYDQzF-7QAg8w/http%3A%2F%2Fwiki.qemu.org%2FFeatures%2FQcow3 > > the new format is much better so I imagine qcow/kvm users will really > appreciate the newer formats. > > > > Thoughts? > > > > > > cheers, > > > > > > Leo > > > > > -- > Best Regards, > Edison > > > > >