You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@libcloud.apache.org by ph...@stfc.ac.uk on 2014/03/07 12:39:20 UTC
[dev] Support for vCloud version 5.5
Hi all,
I've been testing libcloud for the past couple of months against vCloud Director working with colleagues to develop a cloud portal for the environmental science research community in the UK. Our experience with libcloud has been good so thank you for all the great work that has gone into this package.
We started testing against version 1.5 of vCD but have migrated to 5.5. In the case of the latter, we've been able to use the existing driver for version 5.1 but there have been a couple of issues with some of the API calls. For example, the explicitly setting the version 5.5 string in the Accept header is needed in some cases. For the moment I've made a local patch to libcloud.compute.drivers.vcloud modifying VCloudNodeDriver and defining new 5.5 classes:
class VCloudNodeDriver(NodeDriver):
"""
vCloud node driver
"""
. . .
def __new__(cls, key, secret=None, secure=True, host=None, port=None,
api_version=DEFAULT_API_VERSION, **kwargs):
if cls is VCloudNodeDriver:
if api_version == '0.8':
cls = VCloudNodeDriver
elif api_version == '1.5':
cls = VCloud_1_5_NodeDriver
elif api_version == '5.1':
cls = VCloud_1_5_NodeDriver
elif api_version == '5.5':
cls = VCloud_5_5_NodeDriver
else:
raise NotImplementedError(
"No VCloudNodeDriver found for API version %s" %
(api_version))
return super(VCloudNodeDriver, cls).__new__(cls)
. . .
class VCloud_5_5_Connection(VCloud_1_5_Connection):
def add_default_headers(self, headers):
headers['Accept'] = 'application/*+xml;version=5.5'
headers['x-vcloud-authorization'] = self.token
return headers
. . .
class VCloud_5_5_NodeDriver(VCloud_5_1_NodeDriver):
'''Use 5.5 Connection class to explicitly set 5.5 for the version in
Accept headers
'''
connectionCls = VCloud_5_5_Connection
We'd like to contribute a version 5.5 driver to the code base as I think we're likely to come across further wrinkles as we explore more of the functionality of the libcloud vCD driver.
We're also likely to want to make use of external cloud providers for our system so some of the other drivers are useful to us. Unfortunately to make connections outside from our site here we need to run through a proxy for both HTTP and HTTPS. Again I've made a patch for this as the current code doesn't seem to support this.
What would be the best way to contribute code back? Could we fork the git repository and request any of our contributions be merged in?
Thanks,
Phil--
Scanned by iCritical.
Re: [dev] Support for vCloud version 5.5
Posted by ph...@stfc.ac.uk.
Thanks Tomaz. I'll fork and start adding in the changes ready for a pull request.
Cheers,
Phil
On 7 Mar 2014, at 12:23, Tomaz Muraus wrote:
> Philip,
>
> My replies are in-line.
>
> On Fri, Mar 7, 2014 at 12:39 PM, <ph...@stfc.ac.uk> wrote:
>
>> Hi all,
>>
>> I've been testing libcloud for the past couple of months against vCloud
>> Director working with colleagues to develop a cloud portal for the
>> environmental science research community in the UK. Our experience with
>> libcloud has been good so thank you for all the great work that has gone
>> into this package.
>>
>
> Great, glad that you find it useful.
>
>
>>
>> We started testing against version 1.5 of vCD but have migrated to 5.5.
>> In the case of the latter, we've been able to use the existing driver for
>> version 5.1 but there have been a couple of issues with some of the API
>> calls. For example, the explicitly setting the version 5.5 string in the
>> Accept header is needed in some cases. For the moment I've made a local
>> patch to libcloud.compute.drivers.vcloud modifying VCloudNodeDriver and
>> defining new 5.5 classes:
>>
>
> Yeah, adding a new class for API version 5.5 is the correct approach.
>
>
>> class VCloudNodeDriver(NodeDriver):
>> """
>> vCloud node driver
>> """
>>
>> . . .
>>
>> def __new__(cls, key, secret=None, secure=True, host=None, port=None,
>> api_version=DEFAULT_API_VERSION, **kwargs):
>> if cls is VCloudNodeDriver:
>> if api_version == '0.8':
>> cls = VCloudNodeDriver
>> elif api_version == '1.5':
>> cls = VCloud_1_5_NodeDriver
>> elif api_version == '5.1':
>> cls = VCloud_1_5_NodeDriver
>> elif api_version == '5.5':
>> cls = VCloud_5_5_NodeDriver
>> else:
>> raise NotImplementedError(
>> "No VCloudNodeDriver found for API version %s" %
>> (api_version))
>> return super(VCloudNodeDriver, cls).__new__(cls)
>>
>> . . .
>>
>> class VCloud_5_5_Connection(VCloud_1_5_Connection):
>> def add_default_headers(self, headers):
>> headers['Accept'] = 'application/*+xml;version=5.5'
>> headers['x-vcloud-authorization'] = self.token
>> return headers
>>
>> . . .
>>
>> class VCloud_5_5_NodeDriver(VCloud_5_1_NodeDriver):
>> '''Use 5.5 Connection class to explicitly set 5.5 for the version in
>> Accept headers
>> '''
>> connectionCls = VCloud_5_5_Connection
>>
>>
>> We'd like to contribute a version 5.5 driver to the code base as I think
>> we're likely to come across further wrinkles as we explore more of the
>> functionality of the libcloud vCD driver.
>>
>> We're also likely to want to make use of external cloud providers for our
>> system so some of the other drivers are useful to us. Unfortunately to
>> make connections outside from our site here we need to run through a proxy
>> for both HTTP and HTTPS. Again I've made a patch for this as the current
>> code doesn't seem to support this.
>>
>> What would be the best way to contribute code back? Could we fork the git
>> repository and request any of our contributions be merged in?
>>
>
> Great! We would love to have both of those changes in trunk.
>
> The best way to contribute is to fork our Git / Github repository, open a
> pull request (https://github.com/apache/libcloud) and we will go from there.
>
> You might also find this link useful -
> https://libcloud.readthedocs.org/en/latest/development.html#contributing
>
> If you have any questions or need help, let us know.
>
>
>
>> Thanks,
>> Phil--
>> Scanned by iCritical.
>>
--
Scanned by iCritical.
Re: [dev] Support for vCloud version 5.5
Posted by Tomaz Muraus <to...@apache.org>.
Philip,
My replies are in-line.
On Fri, Mar 7, 2014 at 12:39 PM, <ph...@stfc.ac.uk> wrote:
> Hi all,
>
> I've been testing libcloud for the past couple of months against vCloud
> Director working with colleagues to develop a cloud portal for the
> environmental science research community in the UK. Our experience with
> libcloud has been good so thank you for all the great work that has gone
> into this package.
>
Great, glad that you find it useful.
>
> We started testing against version 1.5 of vCD but have migrated to 5.5.
> In the case of the latter, we've been able to use the existing driver for
> version 5.1 but there have been a couple of issues with some of the API
> calls. For example, the explicitly setting the version 5.5 string in the
> Accept header is needed in some cases. For the moment I've made a local
> patch to libcloud.compute.drivers.vcloud modifying VCloudNodeDriver and
> defining new 5.5 classes:
>
Yeah, adding a new class for API version 5.5 is the correct approach.
> class VCloudNodeDriver(NodeDriver):
> """
> vCloud node driver
> """
>
> . . .
>
> def __new__(cls, key, secret=None, secure=True, host=None, port=None,
> api_version=DEFAULT_API_VERSION, **kwargs):
> if cls is VCloudNodeDriver:
> if api_version == '0.8':
> cls = VCloudNodeDriver
> elif api_version == '1.5':
> cls = VCloud_1_5_NodeDriver
> elif api_version == '5.1':
> cls = VCloud_1_5_NodeDriver
> elif api_version == '5.5':
> cls = VCloud_5_5_NodeDriver
> else:
> raise NotImplementedError(
> "No VCloudNodeDriver found for API version %s" %
> (api_version))
> return super(VCloudNodeDriver, cls).__new__(cls)
>
> . . .
>
> class VCloud_5_5_Connection(VCloud_1_5_Connection):
> def add_default_headers(self, headers):
> headers['Accept'] = 'application/*+xml;version=5.5'
> headers['x-vcloud-authorization'] = self.token
> return headers
>
> . . .
>
> class VCloud_5_5_NodeDriver(VCloud_5_1_NodeDriver):
> '''Use 5.5 Connection class to explicitly set 5.5 for the version in
> Accept headers
> '''
> connectionCls = VCloud_5_5_Connection
>
>
> We'd like to contribute a version 5.5 driver to the code base as I think
> we're likely to come across further wrinkles as we explore more of the
> functionality of the libcloud vCD driver.
>
> We're also likely to want to make use of external cloud providers for our
> system so some of the other drivers are useful to us. Unfortunately to
> make connections outside from our site here we need to run through a proxy
> for both HTTP and HTTPS. Again I've made a patch for this as the current
> code doesn't seem to support this.
>
> What would be the best way to contribute code back? Could we fork the git
> repository and request any of our contributions be merged in?
>
Great! We would love to have both of those changes in trunk.
The best way to contribute is to fork our Git / Github repository, open a
pull request (https://github.com/apache/libcloud) and we will go from there.
You might also find this link useful -
https://libcloud.readthedocs.org/en/latest/development.html#contributing
If you have any questions or need help, let us know.
> Thanks,
> Phil--
> Scanned by iCritical.
>