From b195125202e028287b94ddffbf5be50911dbd20b Mon Sep 17 00:00:00 2001 From: SerenaFeng Date: Wed, 14 Mar 2018 17:41:50 +0800 Subject: save authentication with save auth_complete MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✗ testapi -u xxx -p xxxxx -v initialize_app (testapi) pod create '{}' authenticating..... Create failed: name Missing (testapi) pod create '{}' Create failed: name Missing Change-Id: I9de0949b0bf203032a7b0763e791bd0cd10de7fb Signed-off-by: SerenaFeng --- .../testapiclient/utils/clientmanager.py | 27 ++++++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'testapi/testapi-client/testapiclient/utils') diff --git a/testapi/testapi-client/testapiclient/utils/clientmanager.py b/testapi/testapi-client/testapiclient/utils/clientmanager.py index 7e4e630..4401231 100644 --- a/testapi/testapi-client/testapiclient/utils/clientmanager.py +++ b/testapi/testapi-client/testapiclient/utils/clientmanager.py @@ -2,9 +2,12 @@ import httplib import json import os import urllib +import logging import requests +LOG = logging.getLogger(__name__) + class ClientManager(object): headers = {'Content-type': 'application/json', 'Accept': 'text/plain'} @@ -12,19 +15,33 @@ class ClientManager(object): def __init__(self, cli_options=None): self.cli_options = cli_options self.session = requests.Session() + self._auth_completed = False + + @property + def auth_required(self): + return self._auth() + + def _auth(self): + return { + 'name': self.cli_options.u, + 'pass': self.cli_options.p + } if self.cli_options.u else None def auth(self): + + if self._auth_completed: + return + hostname = '{}{}{}'.format(os.environ.get('testapi_cas_auth_url'), urllib.quote(os.environ.get('testapi_url')), os.environ.get('testapi_cas_signin_return')) - data = { - 'name': self.cli_options.u, - 'pass': self.cli_options.p, - 'form_id': 'user_login' - } + data = self._auth() + data.update({'form_id': 'user_login'}) + LOG.debug('authenticating.....') response = self.session.post(hostname, data) if "login" in response.text: raise Exception('Authenticate failed') + self._auth_completed = True def get(self, url): return self._parse_response('Get', -- cgit 1.2.3-korg