Support keystone authentication on cli
Contains changes to support keystone authentication for cli (protonclient). This is required since we enabled keystone support on REST APIs. Change-Id: I63ebc7f801bce172bb930d270f93dcab36dbb516 Implements: blueprint gluon-auth
This commit is contained in:
parent
5cda5853c3
commit
ae61dd568e
|
@ -84,8 +84,40 @@ def load_model(package_name, model_dir, model_name):
|
|||
return model
|
||||
|
||||
|
||||
def get_token():
|
||||
auth_url = os.environ.get('OS_AUTH_URL')
|
||||
tenant = os.environ.get('OS_TENANT_NAME')
|
||||
user = os.environ.get('OS_USERNAME')
|
||||
password = os.environ.get('OS_PASSWORD')
|
||||
|
||||
if not auth_url or not tenant or not user or not password:
|
||||
return None
|
||||
|
||||
auth_info = {'auth': {
|
||||
'tenantName': tenant,
|
||||
'passwordCredentials':
|
||||
{'username': user, 'password': password}
|
||||
}}
|
||||
|
||||
headers = {'Accept': 'application/json',
|
||||
'Content-Type': 'application/json'}
|
||||
|
||||
resp = post(auth_url + '/v2.0/tokens', json=auth_info, headers=headers)
|
||||
|
||||
if resp.status_code != 200 and resp.status_code != 201:
|
||||
raise exc.GluonClientException('Bad return status %d'
|
||||
% resp.status_code,
|
||||
status_code=resp.status_code)
|
||||
|
||||
json_resp = resp.json()
|
||||
|
||||
return json_resp.get('access').get('token').get('id')
|
||||
|
||||
|
||||
def json_get(url):
|
||||
resp = get(url)
|
||||
headers = {'X-Auth-Token': get_token()}
|
||||
resp = get(url, headers=headers)
|
||||
|
||||
if resp.status_code != 200:
|
||||
raise exc.GluonClientException('Bad return status %d'
|
||||
% resp.status_code,
|
||||
|
@ -99,7 +131,9 @@ def json_get(url):
|
|||
|
||||
|
||||
def do_delete(url):
|
||||
resp = delete(url)
|
||||
headers = {'X-Auth-Token': get_token()}
|
||||
resp = delete(url, headers=headers)
|
||||
|
||||
if resp.status_code != 200 and resp.status_code != 204:
|
||||
raise exc.GluonClientException('Bad return status %d'
|
||||
% resp.status_code,
|
||||
|
@ -107,7 +141,9 @@ def do_delete(url):
|
|||
|
||||
|
||||
def do_post(url, values):
|
||||
resp = post(url, json=values)
|
||||
headers = {'X-Auth-Token': get_token()}
|
||||
resp = post(url, json=values, headers=headers)
|
||||
|
||||
if resp.status_code != 200 and resp.status_code != 201:
|
||||
raise exc.GluonClientException('Bad return status %d'
|
||||
% resp.status_code,
|
||||
|
@ -121,7 +157,9 @@ def do_post(url, values):
|
|||
|
||||
|
||||
def do_put(url, values):
|
||||
resp = put(url, json=values)
|
||||
headers = {'X-Auth-Token': get_token()}
|
||||
resp = put(url, json=values, headers=headers)
|
||||
|
||||
if resp.status_code != 200:
|
||||
raise exc.GluonClientException('Bad return status %d'
|
||||
% resp.status_code,
|
||||
|
|
Loading…
Reference in New Issue