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().endsWith("vhd.zip")) >>> >>> &&(!url.toLowerCase().endsWith("vhd.bz2"))&&(!url.toLowerCase().endsWith("vhd.gz")) >>> >>> &&(!url.toLowerCase().endsWith("qcow2"))&&(!url.toLowerCase().endsWith("qcow2.zip")) >>> >>> &&(!url.toLowerCase().endsWith("qcow2.bz2"))&&(!url.toLowerCase().endsWith("qcow2.gz")) >>> >>> &&(!url.toLowerCase().endsWith("ova"))&&(!url.toLowerCase().endsWith("ova.zip")) >>> >>> &&(!url.toLowerCase().endsWith("ova.bz2"))&&(!url.toLowerCase().endsWith("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()); >>> } >>> >>> >>> }