
Updated pep8 requirements and fixed resulting codes to fix broken pep8 job. Updated docker image build process to use roles to ensure docker rather than using manual docker install process to fix broken ranger image job. Co-Authored-By: Jeremy Houser <jeremyhouser@protonmail.com> Co-Authored-By: Chi Lo <cl566n@att.com> Change-Id: I28df0a27e4b354dd53c17fbb1a9468cb7ff5bc16
108 lines
3.9 KiB
Python
Executable File
108 lines
3.9 KiB
Python
Executable File
import json
|
|
import pprint
|
|
import requests
|
|
|
|
from orm.common.orm_common.injector import injector
|
|
from orm.services.image_manager.ims.logger import get_logger
|
|
from orm.services.image_manager.ims.logic.error_base import ErrorStatus
|
|
|
|
from pecan import conf, request
|
|
|
|
di = injector.get_di()
|
|
|
|
LOG = get_logger(__name__)
|
|
|
|
headers = {'content-type': 'application/json'}
|
|
|
|
|
|
def send_image(image_dict, transaction_id, action="put"):
|
|
# action can be "post" for creating image or "delete" for deleting image
|
|
|
|
data = {
|
|
"service_template": {
|
|
"resource": {
|
|
"resource_type": "image"
|
|
},
|
|
"model": str(json.dumps(image_dict)),
|
|
"tracking": {
|
|
"external_id": "",
|
|
"tracking_id": transaction_id
|
|
}
|
|
}
|
|
}
|
|
|
|
data_to_display = {
|
|
"service_template": {
|
|
"resource": {
|
|
"resource_type": "image"
|
|
},
|
|
"model": image_dict,
|
|
"tracking": {
|
|
"external_id": "",
|
|
"tracking_id": transaction_id
|
|
}
|
|
}
|
|
}
|
|
|
|
try:
|
|
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 {1}".format(action, pretty_text))
|
|
LOG.info("Sending to RDS Server: " + conf.api.rds_server.base + conf.api.rds_server.resources)
|
|
if action == "post":
|
|
resp = requests.post(conf.api.rds_server.base + conf.api.rds_server.resources,
|
|
data=wrapper_json,
|
|
headers=headers, verify=conf.verify)
|
|
elif action == "put":
|
|
resp = requests.put(conf.api.rds_server.base + conf.api.rds_server.resources,
|
|
data=wrapper_json,
|
|
headers=headers, verify=conf.verify)
|
|
elif action == "delete":
|
|
resp = requests.delete(conf.api.rds_server.base + conf.api.rds_server.resources,
|
|
data=wrapper_json,
|
|
headers=headers, verify=conf.verify)
|
|
else:
|
|
raise Exception("Invalid action in RdxProxy.send_image("
|
|
"image_dict, transaction_id, action) "
|
|
"action can be post or delete, "
|
|
"got {0}".format(action))
|
|
|
|
content = resp.content
|
|
LOG.debug("return from rds server status code: {0} "
|
|
"content: {1}".format(resp.status_code, resp.content))
|
|
if resp.content and 200 <= resp.status_code < 300:
|
|
content = resp.json()
|
|
else:
|
|
# In case of error from rds, the response is WSME format response.
|
|
# the error message is within the 'faultstring'
|
|
raise ErrorStatus(resp.status_code,
|
|
json.loads(content)["faultstring"])
|
|
|
|
except Exception as exp:
|
|
LOG.log_exception("ImageLogic - Failed to update image", exp)
|
|
raise exp
|
|
|
|
return content
|
|
|
|
|
|
def get_status(resource_id, json_convert=True):
|
|
resp = requests.get(conf.api.rds_server.base + conf.api.rds_server.status + resource_id, verify=conf.verify)
|
|
if json_convert:
|
|
resp = resp.json()
|
|
return resp
|