From 4594b8a71979de4de4a9936c3896bab12e21be47 Mon Sep 17 00:00:00 2001 From: "HUGHES, ALEXANDER (ah8742)" Date: Wed, 19 Jun 2019 12:04:59 -0500 Subject: [PATCH] Allow user to specify token as env var This change is going to be done in conjunction with Pegleg's shipyard helper code [0] such that an auth token can be set as an environment variable. If present it will be used rather than authenticating against Keystone. This is a requested change by Darren Dejaeger so that when using automation such as Jenkins pipelines the user is not forced to provide their credentials to have shipyard automatically obtain the token - instead they can obtain their token separately and provide that token for shipyard to use. [0]: https://opendev.org/airship/pegleg/src/branch/master/pegleg/engine/util/shipyard_helper.py Change-Id: I859bff978069e8cc3502b952273237e84de83456 --- .../shipyard_client/api_client/base_client.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/bin/shipyard_client/shipyard_client/api_client/base_client.py b/src/bin/shipyard_client/shipyard_client/api_client/base_client.py index 6f08b3fb..5f984059 100644 --- a/src/bin/shipyard_client/shipyard_client/api_client/base_client.py +++ b/src/bin/shipyard_client/shipyard_client/api_client/base_client.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. import abc +import os import logging from keystoneauth1.exceptions.auth import AuthorizationFailure @@ -135,10 +136,16 @@ class BaseClient(metaclass=abc.ABCMeta): raise ClientError(str(e)) def get_token(self): + """Returns the simple token string for a token + + Attempt to read token from environment variable, if present use it. + If not, return the token obtained from Keystone. """ - Returns the simple token string for a token acquired from keystone - """ - return self._get_ks_session().get_auth_headers().get('X-Auth-Token') + token = os.environ.get('OS_AUTH_TOKEN') + if token: + return token + else: + return self._get_ks_session().get_auth_headers().get('X-Auth-Token') def _get_ks_session(self): self.logger.debug('Accessing keystone for keystone session')