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.

Reply via email to