Add 'none' identity plugin
It does not accept any arguments and sets the token to 'notused'. It does not have any endpoint/url associated, and thus must be used together with adapter.Adapter.endpoint_override to instantiate a session for client to a service that is deployed in noauth/standalone mode. Unfortunately the 'noauth' name is already taken by cinderclient.contrib.noauth. Change-Id: I2f7175ea095aac774e7c5889880fcff15586559c
This commit is contained in:
parent
0906fb0424
commit
070f8fd891
33
keystoneauth1/loading/_plugins/noauth.py
Normal file
33
keystoneauth1/loading/_plugins/noauth.py
Normal file
@ -0,0 +1,33 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from keystoneauth1 import loading
|
||||
from keystoneauth1 import noauth
|
||||
|
||||
|
||||
class NoAuth(loading.BaseLoader):
|
||||
"""Use no tokens to perform requests.
|
||||
|
||||
This must be used together with adapter.Adapter.endpoint_override
|
||||
to instantiate clients for services deployed in noauth/standalone mode.
|
||||
|
||||
There is no fetching a service catalog or determining scope information
|
||||
and so it cannot be used by clients that expect use this scope information.
|
||||
|
||||
"""
|
||||
|
||||
@property
|
||||
def plugin_class(self):
|
||||
return noauth.NoAuth
|
||||
|
||||
def get_options(self):
|
||||
return []
|
24
keystoneauth1/noauth.py
Normal file
24
keystoneauth1/noauth.py
Normal file
@ -0,0 +1,24 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from keystoneauth1 import plugin
|
||||
|
||||
|
||||
class NoAuth(plugin.BaseAuthPlugin):
|
||||
"""A provider that will always use no auth.
|
||||
|
||||
This is useful to unify session/adapter loading for services
|
||||
that might be deployed in standalone/noauth mode.
|
||||
"""
|
||||
|
||||
def get_token(self, session):
|
||||
return 'notused'
|
37
keystoneauth1/tests/unit/test_noauth.py
Normal file
37
keystoneauth1/tests/unit/test_noauth.py
Normal file
@ -0,0 +1,37 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from keystoneauth1.loading._plugins import noauth as loader
|
||||
from keystoneauth1 import noauth
|
||||
from keystoneauth1 import session
|
||||
from keystoneauth1.tests.unit import utils
|
||||
|
||||
|
||||
class NoAuthTest(utils.TestCase):
|
||||
|
||||
NOAUTH_TOKEN = 'notused'
|
||||
TEST_URL = 'http://server/prefix'
|
||||
|
||||
def test_basic_case(self):
|
||||
self.requests_mock.get(self.TEST_URL, text='body')
|
||||
|
||||
a = noauth.NoAuth()
|
||||
s = session.Session(auth=a)
|
||||
|
||||
data = s.get(self.TEST_URL, authenticated=True)
|
||||
|
||||
self.assertEqual(data.text, 'body')
|
||||
self.assertRequestHeaderEqual('X-Auth-Token', self.NOAUTH_TOKEN)
|
||||
self.assertIsNone(a.get_endpoint(s))
|
||||
|
||||
def test_noauth_options(self):
|
||||
self.assertEqual([], loader.NoAuth().get_options())
|
@ -37,6 +37,7 @@ betamax =
|
||||
[entry_points]
|
||||
|
||||
keystoneauth1.plugin =
|
||||
none = keystoneauth1.loading._plugins.noauth:NoAuth
|
||||
password = keystoneauth1.loading._plugins.identity.generic:Password
|
||||
token = keystoneauth1.loading._plugins.identity.generic:Token
|
||||
admin_token = keystoneauth1.loading._plugins.admin_token:AdminToken
|
||||
|
Loading…
Reference in New Issue
Block a user