jh629g baecd4b567 Update Error Types, Log Heat Errors
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
2020-11-05 20:28:51 +00:00

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)