faculty icon indicating copy to clipboard operation
faculty copied to clipboard

Token caching with custom profiles

Open sbalian opened this issue 5 years ago • 1 comments

Token caching is implemented in faculty.session.get_session. But this calls faculty.config.resolve_profile which has a pre-defined order of places it pulls credentials from. It would be better if faculty.session.get_session takes in a faculty.config.Profile instance (or caching is implemented without having to always force resolving profiles). For example, on a platform server that has environmental variables defined, passing credentials_path to faculty.session.get_session has no effect.

Note that for my example there is a somewhat ugly workaround:

import faculty
import faculty.session
import faculty.clients

profile = faculty.config.load_profile('/path/to/config', 'default')
session = faculty.session.get_session(
    domain=profile.domain, client_id=profile.client_id,
    client_secret=profile.client_secret
)
client_class = faculty.clients.for_resource('cluster')
cluster = client_class(session)

sbalian avatar May 09 '19 13:05 sbalian

Yeah, this is probably a better interface, as it allows more flexibility in constructing a session for a profile. I like the decoupling of loading profile from building the session. This would be an API-breaking change, which I feel is probably ok here as this interface is not frequently used.

Any thoughts @zblz @mociarain @imrehg?

acroz avatar Mar 06 '20 13:03 acroz