2bc511c69f
Initial commit for orm_client by adding the codebase. Change-Id: I24f17561e6a426e6af9dbbe04e4a66599344d265
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
import config
|
|
import json
|
|
import requests
|
|
|
|
OK_CODE = 200
|
|
|
|
ORM_CLIENT_KWARGS = {'type': str, 'help': 'client name', 'default': None,
|
|
'nargs': '?'}
|
|
|
|
|
|
class MissingArgumentError(Exception):
|
|
"""Should be raised when an argument was found missing by CLI logic."""
|
|
pass
|
|
|
|
|
|
def get_keystone_ep(rms_url, region_name):
|
|
"""Get the Keystone EP from RMS.
|
|
|
|
:param rms_url: RMS server URL
|
|
:param region_name: The region name
|
|
:return: Keystone EP (string), None if it was not found
|
|
"""
|
|
try:
|
|
response = requests.get('%s/v2/orm/regions?regionname=%s' % (
|
|
rms_url, region_name, ), verify=config.verify)
|
|
except requests.exceptions.ConnectionError as e:
|
|
print('Could not connect to RMS, URL: {}'.format(rms_url))
|
|
return None
|
|
|
|
if response.status_code != OK_CODE:
|
|
print('RMS returned status: {}, content: {}'.format(
|
|
response.status_code, response.content))
|
|
return None
|
|
|
|
# RMS returned 200
|
|
lcp = response.json()
|
|
try:
|
|
for endpoint in lcp['regions'][0]['endpoints']:
|
|
if endpoint['type'] == 'identity':
|
|
return endpoint['publicURL']
|
|
except KeyError:
|
|
print('Response from RMS came in an unsupported format. '
|
|
'Make sure that you are using RMS 3.5')
|
|
return None
|
|
|
|
# Keystone EP not found in the response
|
|
print('No identity endpoint was found in the response from RMS')
|
|
return None
|
|
|
|
|
|
def pretty_print_json(json_to_print):
|
|
"""Print a json without the u' prefix."""
|
|
print(json.dumps(json_to_print))
|