You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cloudstack.apache.org by Marcus <sh...@gmail.com> on 2014/02/08 02:06:46 UTC

devs looking to get involved?

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());
        }


    }

Re: devs looking to get involved?

Posted by Marcus <sh...@gmail.com>.
Does it need to go to review board though? I generally only post
patches that can actually be applied to reviewboard. This is more or
less just a blueprint for someone who is willing to make it work in
master.

On Wed, Feb 12, 2014 at 12:31 PM, Alex Hitchins
<al...@shapeblue.com> wrote:
> 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.hitchins@shapeblue.com
>
> -----Original Message-----
> From: Marcus [mailto:shadowsor@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 <sh...@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 <sh...@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.

RE: devs looking to get involved?

Posted by Alex Hitchins <al...@shapeblue.com>.
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.hitchins@shapeblue.com

-----Original Message-----
From: Marcus [mailto:shadowsor@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 <sh...@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 <sh...@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.

Re: devs looking to get involved?

Posted by Marcus <sh...@gmail.com>.
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 <sh...@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 <sh...@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());
>>>         }
>>>
>>>
>>>     }

Re: devs looking to get involved?

Posted by Marcus <sh...@gmail.com>.
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 <sh...@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());
>>         }
>>
>>
>>     }

Re: devs looking to get involved?

Posted by David Nalley <da...@gnsa.us>.
- 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 <sh...@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());
>         }
>
>
>     }