diff options
author | Jamie Lennox <jamielennox@redhat.com> | 2014-07-17 16:07:04 +1000 |
---|---|---|
committer | Jamie Lennox <jamielennox@redhat.com> | 2014-08-21 09:26:24 +1000 |
commit | 9cc2f7c73e92ae6c6b4fbf19272bb2f9209f45e7 (patch) | |
tree | 07301de2c2620732dda6c513ef41580f399d9e34 /keystoneclient/_discover.py | |
parent | 4cc17635580e189d5d90300ecf5af1536cb666be (diff) | |
download | python-keystoneclient-9cc2f7c73e92ae6c6b4fbf19272bb2f9209f45e7.tar.gz |
Allow unauthenticated discovery
The default state for session requests is that if there is an auth
plugin available then it should include a token in any requests. This is
a problem for cases where it is the authentication plugin itself trying
to do discovery (like in the case of version independent plugins)
because you end up in an infinite loop.
Allow controlling the authenticated parameter on discovery requests.
Closes-Bug: #1359457
Change-Id: Ib5ab0a3a30fe79139b7b5dcaae698438281b6d36
Diffstat (limited to 'keystoneclient/_discover.py')
-rw-r--r-- | keystoneclient/_discover.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/keystoneclient/_discover.py b/keystoneclient/_discover.py index 5f50027..7ea396f 100644 --- a/keystoneclient/_discover.py +++ b/keystoneclient/_discover.py @@ -24,16 +24,18 @@ raw data specified in version discovery responses. import logging from keystoneclient import exceptions +from keystoneclient import utils _LOGGER = logging.getLogger(__name__) -def get_version_data(session, url): +@utils.positional() +def get_version_data(session, url, authenticated=None): """Retrieve raw version data from a url.""" headers = {'Accept': 'application/json'} - resp = session.get(url, headers=headers) + resp = session.get(url, headers=headers, authenticated=authenticated) try: body_resp = resp.json() @@ -131,8 +133,10 @@ class Discover(object): DEPRECATED_STATUSES = ('deprecated',) EXPERIMENTAL_STATUSES = ('experimental',) - def __init__(self, session, url): - self._data = get_version_data(session, url) + @utils.positional() + def __init__(self, session, url, authenticated=None): + self._data = get_version_data(session, url, + authenticated=authenticated) def raw_version_data(self, allow_experimental=False, allow_deprecated=True, allow_unknown=False): |