ranger/orm/orm_client/ormcli/cli_common.py
raigax9 2bc511c69f Added orm_client codebase
Initial commit for orm_client by adding the codebase.

Change-Id: I24f17561e6a426e6af9dbbe04e4a66599344d265
2017-08-28 14:17:28 +00:00

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))