Merge "Add 'none' identity plugin"

This commit is contained in:
Jenkins 2017-07-14 22:41:18 +00:00 committed by Gerrit Code Review
commit 0847a6d990
4 changed files with 95 additions and 0 deletions

View 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
View 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'

View 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())

View File

@ -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