
Some error types were updated to recommendations which better fit their use cases, providing better information. Heat errors are now logged when seen in rds status checking, to make debugging of heat errors such as stack validation more readily apparent. Change-Id: Ifd11edaead65bf2fcd6d828e397bf41ba0816b63
210 lines
7.2 KiB
Python
Executable File
210 lines
7.2 KiB
Python
Executable File
import json
|
|
import pprint
|
|
|
|
import requests
|
|
|
|
from orm.common.orm_common.utils.error_base import ErrorStatus
|
|
from orm.services.customer_manager.cms_rest.logger import get_logger
|
|
from pecan import conf, request
|
|
|
|
LOG = get_logger(__name__)
|
|
headers = {'content-type': 'application/json'}
|
|
|
|
|
|
class RdsProxy(object):
|
|
|
|
@staticmethod
|
|
def get_status(resource_id):
|
|
try:
|
|
LOG.debug("Sending to RDS Server to get status: "
|
|
+ conf.api.rds_server.base
|
|
+ conf.api.rds_server.status
|
|
+ resource_id)
|
|
resp = requests.get(conf.api.rds_server.base
|
|
+ conf.api.rds_server.status
|
|
+ resource_id, verify=conf.verify)
|
|
LOG.debug("Sending to RDS Server to get status: "
|
|
+ conf.api.rds_server.base
|
|
+ conf.api.rds_server.status
|
|
+ resource_id)
|
|
pp = pprint.PrettyPrinter(width=30)
|
|
pretty_text = pp.pformat(resp.json())
|
|
LOG.debug("Response from RDS Server:\n" + pretty_text)
|
|
return resp
|
|
except Exception as exp:
|
|
LOG.log_exception("CustomerLogic - Failed to Get status for "
|
|
"customer : " + resource_id, exp)
|
|
raise
|
|
|
|
@staticmethod
|
|
def send_customer(customer, transaction_id, method):
|
|
# method is "POST" or "PUT"
|
|
return RdsProxy.send_customer_dict(customer.get_proxy_dict(),
|
|
transaction_id,
|
|
method)
|
|
|
|
@staticmethod
|
|
def send_customer_dict(customer_dict, transaction_id, method):
|
|
data = {
|
|
"service_template":
|
|
{
|
|
"resource": {
|
|
"resource_type": "customer"
|
|
},
|
|
"model": str(json.dumps(customer_dict)),
|
|
"tracking": {
|
|
"external_id": "",
|
|
"tracking_id": transaction_id
|
|
}
|
|
}
|
|
}
|
|
|
|
data_to_display = {
|
|
"service_template":
|
|
{
|
|
"resource": {
|
|
"resource_type": "customer"
|
|
},
|
|
"model": customer_dict,
|
|
"tracking": {
|
|
"external_id": "",
|
|
"tracking_id": transaction_id
|
|
}
|
|
}
|
|
}
|
|
|
|
pp = pprint.PrettyPrinter(width=30)
|
|
pretty_text = pp.pformat(data_to_display)
|
|
wrapper_json = json.dumps(data)
|
|
|
|
headers['X-RANGER-Client'] = request.headers[
|
|
'X-RANGER-Client'] if 'X-RANGER-Client' in request.headers else \
|
|
'NA'
|
|
headers['X-RANGER-Requester'] = request.headers[
|
|
'X-RANGER-Requester'] if 'X-RANGER-Requester' in \
|
|
request.headers else ''
|
|
headers['X-Auth-Region'] = request.headers[
|
|
'X-Auth-Region'] if 'X-Auth-Region' in \
|
|
request.headers else ''
|
|
headers['X-Auth-Token'] = request.headers[
|
|
'X-Auth-Token'] if 'X-Auth-Token' in \
|
|
request.headers else ''
|
|
headers['User-Domain'] = request.headers[
|
|
'User-Domain'] if 'User-Domain' in \
|
|
request.headers else ''
|
|
|
|
LOG.debug("Wrapper JSON before sending action: {0} to Rds "
|
|
"Proxy\n{1}".format(method, pretty_text))
|
|
LOG.info("Sending to RDS Server: "
|
|
+ conf.api.rds_server.base
|
|
+ conf.api.rds_server.resources)
|
|
|
|
wrapper_json = json.dumps(data)
|
|
|
|
if method == "POST":
|
|
resp = requests.post(
|
|
conf.api.rds_server.base + conf.api.rds_server.resources,
|
|
data=wrapper_json,
|
|
headers=headers,
|
|
verify=conf.verify)
|
|
else:
|
|
resp = requests.put(
|
|
conf.api.rds_server.base + conf.api.rds_server.resources,
|
|
data=wrapper_json,
|
|
headers=headers,
|
|
verify=conf.verify)
|
|
if resp.content:
|
|
LOG.debug(
|
|
"Response Content from rds server: {0}".format(resp.content))
|
|
|
|
content = resp.content
|
|
if resp.content:
|
|
content = resp.json()
|
|
|
|
if resp.content and 200 <= resp.status_code < 300:
|
|
content = resp.json()
|
|
return content
|
|
|
|
raise ErrorStatus(content, resp.status_code)
|
|
|
|
@staticmethod
|
|
def send_group_dict(group_dict, transaction_id, method):
|
|
data = {
|
|
"service_template":
|
|
{
|
|
"resource": {
|
|
"resource_type": "group"
|
|
},
|
|
"model": str(json.dumps(group_dict)),
|
|
"tracking": {
|
|
"external_id": "",
|
|
"tracking_id": transaction_id
|
|
}
|
|
}
|
|
}
|
|
|
|
data_to_display = {
|
|
"service_template":
|
|
{
|
|
"resource": {
|
|
"resource_type": "group"
|
|
},
|
|
"model": group_dict,
|
|
"tracking": {
|
|
"external_id": "",
|
|
"tracking_id": transaction_id
|
|
}
|
|
}
|
|
}
|
|
|
|
pp = pprint.PrettyPrinter(width=30)
|
|
pretty_text = pp.pformat(data_to_display)
|
|
wrapper_json = json.dumps(data)
|
|
|
|
headers['X-RANGER-Client'] = request.headers[
|
|
'X-RANGER-Client'] if 'X-RANGER-Client' in request.headers else \
|
|
'NA'
|
|
headers['X-RANGER-Requester'] = request.headers[
|
|
'X-RANGER-Requester'] if 'X-RANGER-Requester' in \
|
|
request.headers else ''
|
|
headers['X-Auth-Region'] = request.headers[
|
|
'X-Auth-Region'] if 'X-Auth-Region' in \
|
|
request.headers else ''
|
|
headers['X-Auth-Token'] = request.headers[
|
|
'X-Auth-Token'] if 'X-Auth-Token' in \
|
|
request.headers else ''
|
|
|
|
LOG.debug("Wrapper JSON before sending action: {0} to Rds "
|
|
"Proxy\n{1}".format(method, pretty_text))
|
|
LOG.info("Sending to RDS Server: "
|
|
+ conf.api.rds_server.base
|
|
+ conf.api.rds_server.resources)
|
|
|
|
wrapper_json = json.dumps(data)
|
|
|
|
if method == "POST":
|
|
resp = requests.post(
|
|
conf.api.rds_server.base + conf.api.rds_server.resources,
|
|
data=wrapper_json,
|
|
headers=headers,
|
|
verify=conf.verify)
|
|
else:
|
|
resp = requests.put(
|
|
conf.api.rds_server.base + conf.api.rds_server.resources,
|
|
data=wrapper_json,
|
|
headers=headers,
|
|
verify=conf.verify)
|
|
if resp.content:
|
|
LOG.debug(
|
|
"Response Content from rds server: {0}".format(resp.content))
|
|
|
|
content = resp.content
|
|
if resp.content:
|
|
content = resp.json()
|
|
|
|
if resp.content and 200 <= resp.status_code < 300:
|
|
content = resp.json()
|
|
return content
|
|
|
|
raise ErrorStatus(content, resp.status_code)
|