def prepare_to_run_command(self, cmd):
self.LOG.debug('prepare_to_run_command %s', cmd.__class__.__name__)
- if self.options.u:
+ if self.client_manager.auth_required:
self.client_manager.auth()
def clean_up(self, cmd, result, err):
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'}
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',