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]
|
[entry_points]
|
||||||
|
|
||||||
keystoneauth1.plugin =
|
keystoneauth1.plugin =
|
||||||
|
none = keystoneauth1.loading._plugins.noauth:NoAuth
|
||||||
password = keystoneauth1.loading._plugins.identity.generic:Password
|
password = keystoneauth1.loading._plugins.identity.generic:Password
|
||||||
token = keystoneauth1.loading._plugins.identity.generic:Token
|
token = keystoneauth1.loading._plugins.identity.generic:Token
|
||||||
admin_token = keystoneauth1.loading._plugins.admin_token:AdminToken
|
admin_token = keystoneauth1.loading._plugins.admin_token:AdminToken
|
||||||
|
Loading…
Reference in New Issue
Block a user