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, <[email protected]> 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.

Reply via email to