Thanks for the patch Marcus! This needs to go on the review board though and not on the Jira site. It's good to add a note to Jira with the link to the review board.
It's a simple process to sign up, go to https://reviews.apache.org/dashboard/ and take a look. It's good to include the Jira reference in there and name your diff with the Jira Id too (CLOUDSTACK-6088.diff). Thanks for the patch! Regards Alex Hitchins D: +44 1892 523 587 | S: +44 20 3603 0540 | M: +44 7788 423 969 alex.hitch...@shapeblue.com -----Original Message----- From: Marcus [mailto:shadow...@gmail.com] Sent: 12 February 2014 18:55 To: dev@cloudstack.apache.org Subject: Re: devs looking to get involved? I dropped a patch into https://issues.apache.org/jira/browse/CLOUDSTACK-6088, and if someone can get to it, great, otherwise I'll try to circle back around to it. On Fri, Feb 7, 2014 at 9:45 PM, Marcus <shadow...@gmail.com> wrote: > Yeah, I just don't know where to capture them. If I have a patch for > 4.2, but I know it will never get applied as a feature, it seems odd > to put it on review board. Perhaps I just dump them on Jira as > attachments? > > Ultimately it behooves me to get this stuff done so I don't have to > revisit it later... > > On Fri, Feb 7, 2014 at 7:37 PM, David Nalley <da...@gnsa.us> wrote: >> - Users: >> >> Regardless of whether someone takes you up on the offer or not, I'd >> still love to see these patches hit RB or the mailing list, or Jira >> perhaps. >> >> --David >> >> On Fri, Feb 7, 2014 at 8:06 PM, Marcus <shadow...@gmail.com> wrote: >>> I occasionally have some minor improvement that I need to make to >>> whatever version of cloudstack we're currently running. This is >>> almost always behind what is currently being developed, and I don't >>> always feel like I have time to rebase/refactor it for master. I'm >>> wondering if there are any individuals out there who are looking for >>> ways to contribute that I can hand off these little projects to and >>> mentor a bit. You get an easy project to get your feet wet and I get >>> the improvements into master without using up time. :-) Maybe this >>> sounds like laziness on my part, but it seemed like a good idea. >>> >>> I can post a patch that works for one version, and you can rework it >>> and test against master. Respond if you're interested, there may be >>> others who have easy work to farm off as well. >>> >>> An example, I've made some improvements to the template downloader, >>> when the first 1M of the template is pulled we attempt to verify >>> that the image is actually what we think it is (qcow2 or vmdk or >>> whatever) by looking at the data. Up until now we just check file >>> extension. It also contains a new TemplateUtils class that has: >>> >>> + public static boolean isCorrectExtension(String path, String ext) { >>> + if (path.toLowerCase().endsWith(ext) >>> + || path.toLowerCase().endsWith(ext + ".gz") >>> + || path.toLowerCase().endsWith(ext + ".bz2") >>> + || path.toLowerCase().endsWith(ext + ".zip")) { >>> + return true; >>> + } >>> + return false; >>> + } >>> >>> Which can be used to clean up the likes of: >>> >>> private void checkFormat(String format, String url) { >>> >>> if((!url.toLowerCase().endsWith("vhd"))&&(!url.toLowerCase().endsWit >>> h("vhd.zip")) >>> >>> &&(!url.toLowerCase().endsWith("vhd.bz2"))&&(!url.toLowerCase().ends >>> With("vhd.gz")) >>> >>> &&(!url.toLowerCase().endsWith("qcow2"))&&(!url.toLowerCase().endsWi >>> th("qcow2.zip")) >>> >>> &&(!url.toLowerCase().endsWith("qcow2.bz2"))&&(!url.toLowerCase().en >>> dsWith("qcow2.gz")) >>> >>> &&(!url.toLowerCase().endsWith("ova"))&&(!url.toLowerCase().endsWith >>> ("ova.zip")) >>> >>> &&(!url.toLowerCase().endsWith("ova.bz2"))&&(!url.toLowerCase().ends >>> With("ova.gz")) >>> >>> &&(!url.toLowerCase().endsWith("tar"))&&(!url.toLowerCase().endsWith >>> ("tar.zip")) >>> >>> &&(!url.toLowerCase().endsWith("tar.bz2"))&&(!url.toLowerCase().endsWith("tar.gz")) >>> &&(!url.toLowerCase().endsWith("vmdk")) && >>> (!url.toLowerCase().endsWith("vmdk.gz")) >>> &&(!url.toLowerCase().endsWith("vmdk.zip")) && >>> (!url.toLowerCase().endsWith("vmdk.bz2")) && >>> (!url.toLowerCase().endsWith("img")) >>> &&(!url.toLowerCase().endsWith("img.gz")) && >>> (!url.toLowerCase().endsWith("img.zip")) && >>> (!url.toLowerCase().endsWith("img.bz2")) >>> &&(!url.toLowerCase().endsWith("raw")) && >>> (!url.toLowerCase().endsWith("raw.gz")) && >>> (!url.toLowerCase().endsWith("raw.bz2")) >>> &&(!url.toLowerCase().endsWith("raw.zip"))){ >>> throw new InvalidParameterValueException("Please specify >>> a valid " + format.toLowerCase()); >>> } >>> if ((format.equalsIgnoreCase("vhd") >>> && (!url.toLowerCase().endsWith("vhd") >>> && !url.toLowerCase().endsWith("vhd.zip") >>> && !url.toLowerCase().endsWith("vhd.bz2") >>> && !url.toLowerCase().endsWith("vhd.gz"))) >>> || (format.equalsIgnoreCase("vhdx") >>> && (!url.toLowerCase().endsWith("vhdx") >>> && !url.toLowerCase().endsWith("vhdx.zip") >>> && !url.toLowerCase().endsWith("vhdx.bz2") >>> && !url.toLowerCase().endsWith("vhdx.gz"))) >>> || (format.equalsIgnoreCase("qcow2") >>> && (!url.toLowerCase().endsWith("qcow2") >>> && !url.toLowerCase().endsWith("qcow2.zip") >>> && !url.toLowerCase().endsWith("qcow2.bz2") >>> && !url.toLowerCase().endsWith("qcow2.gz"))) >>> || (format.equalsIgnoreCase("ova") >>> && (!url.toLowerCase().endsWith("ova") >>> && !url.toLowerCase().endsWith("ova.zip") >>> && !url.toLowerCase().endsWith("ova.bz2") >>> && !url.toLowerCase().endsWith("ova.gz"))) >>> || (format.equalsIgnoreCase("tar") >>> && (!url.toLowerCase().endsWith("tar") >>> && !url.toLowerCase().endsWith("tar.zip") >>> && !url.toLowerCase().endsWith("tar.bz2") >>> && !url.toLowerCase().endsWith("tar.gz"))) >>> || (format.equalsIgnoreCase("raw") >>> && (!url.toLowerCase().endsWith("img") >>> && !url.toLowerCase().endsWith("img.zip") >>> && !url.toLowerCase().endsWith("img.bz2") >>> && !url.toLowerCase().endsWith("img.gz") >>> && !url.toLowerCase().endsWith("raw") >>> && !url.toLowerCase().endsWith("raw.bz2") >>> && !url.toLowerCase().endsWith("raw.zip") >>> && !url.toLowerCase().endsWith("raw.gz"))) >>> || (format.equalsIgnoreCase("vmdk") >>> && (!url.toLowerCase().endsWith("vmdk") >>> && !url.toLowerCase().endsWith("vmdk.zip") >>> && !url.toLowerCase().endsWith("vmdk.bz2") >>> && !url.toLowerCase().endsWith("vmdk.gz"))) >>> ) { >>> throw new InvalidParameterValueException("Please >>> specify a valid URL. URL:" + url >>> + " is an invalid for the format " + >>> format.toLowerCase()); >>> } >>> >>> >>> } Need Enterprise Grade Support for Apache CloudStack? Our CloudStack Infrastructure Support<http://shapeblue.com/cloudstack-infrastructure-support/> offers the best 24/7 SLA for CloudStack Environments. Apache CloudStack Bootcamp training courses **NEW!** CloudStack 4.2.1 training<http://shapeblue.com/cloudstack-training/> 18th-19th February 2014, Brazil. Classroom<http://shapeblue.com/cloudstack-training/> 17th-23rd March 2014, Region A. Instructor led, On-line<http://shapeblue.com/cloudstack-training/> 24th-28th March 2014, Region B. Instructor led, On-line<http://shapeblue.com/cloudstack-training/> 16th-20th June 2014, Region A. Instructor led, On-line<http://shapeblue.com/cloudstack-training/> 23rd-27th June 2014, Region B. Instructor led, On-line<http://shapeblue.com/cloudstack-training/> This email and any attachments to it may be confidential and are intended solely for the use of the individual to whom it is addressed. Any views or opinions expressed are solely those of the author and do not necessarily represent those of Shape Blue Ltd or related companies. If you are not the intended recipient of this email, you must neither take any action based upon its contents, nor copy or show it to anyone. Please contact the sender if you believe you have received this email in error. Shape Blue Ltd is a company incorporated in England & Wales. ShapeBlue Services India LLP is a company incorporated in India and is operated under license from Shape Blue Ltd. Shape Blue Brasil Consultoria Ltda is a company incorporated in Brasil and is operated under license from Shape Blue Ltd. ShapeBlue is a registered trademark.