faculty
faculty copied to clipboard
Token caching with custom profiles
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)
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?