Hi all,

This is more of a feature that is not supported than a bug(?).

Currently, authentication tokens are cached in a single file by default
(~/.gce_libcloud_auth -- not platform independent) and when the user
tries to manage compute instances across multiple GCE projects the
GCEConnection tries to reuse the cached information even if the project
requested is different.

Although the credential_file kwarg could be used to set the file path,
currently the parent connection class is not written to pass the
parameter to the GoogleBaseConnection class.

I was able to do a quick fix to support the use of multiple project with
auth-token caching by doing this (although this assumes that there is
only one service/app account that is used per project, one might need to
change "self.project" to the service account email-id):

    def _ex_connection_class_kwargs(self):
        return {'auth_type': self.auth_type,
                'project': self.project,
                'scopes': self.scopes,
   +            'credential_file': '~/.gce_libcloud_' + self.project
               }

I am not working it off the git repo, so I am not able to create a clean
patch.

$ diff apache-libcloud-0.15.1/libcloud/compute/drivers/gce.py{,.old}
2526,2527c2526
<                 'scopes': self.scopes,
<                 'credential_file': '~/.gce_libcloud_' + self.project}
---
>                 'scopes': self.scopes}


I am not sure if anyone came across this issue. Hope this helps.

-Venkat

-- 
Venkatanathan Varadarajan (Venkat),
University of Wisconsin-Madison.


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to