a4f7a3a7e1b6f7254c416cab7548b97ea7e30a65
[it/otf.git] / a1-sdnc-vth / app / helpers / action_helper.py
1 import json\r
2 import ast\r
3 from app.helpers import response_helper as ResponseHelper\r
4 from flask import current_app, jsonify\r
5 from app.errors.bad_request_exception import BadRequestException\r
6 import requests\r
7 \r
8 \r
9 def execute_action(request, response_dict, config):\r
10     headers = ResponseHelper.create_headers();\r
11     request_data = request.json\r
12     action_request = request_data.get("action").lower()\r
13     \r
14     creds = ResponseHelper.get_credentials(request_data, config)\r
15     proxies = ResponseHelper.get_proxies(config)\r
16     url = ResponseHelper.create_url(config=config, uri_path="/restconf/operations/A1-ADAPTER-API:"+action_request)\r
17 #    ret_url = request.args.get('retURL')\r
18 \r
19     json_req = ast.literal_eval(request_data["action_data"]["jsonBody"])\r
20     current_app.logger.info("Requesting Url: {}, body: {}, auth: {}, proxies: {}".format(url, json_req, creds, proxies))\r
21     try:\r
22         res = requests.post(url, proxies=proxies, auth=creds, headers=headers, json=json_req)\r
23         response = {\r
24                 "status_code":res.status_code,\r
25                 "result": res.json()\r
26                 }\r
27     except(json.decoder.JSONDecodeError):\r
28         response = {\r
29                 "status_code":res.status_code,\r
30                 "result": res.reason\r
31                 }\r
32     except requests.exceptions.RequestException:\r
33         response = {\r
34                 "status_code":504,\r
35                 "result": "Something Happned"\r
36                 }\r
37     finally:\r
38         response_dict['vthResponse']['resultData'] = response\r
39 #        if ret_url is not None:\r
40 #            ResponseHelper.sendCallback(ret_url,response_dict)\r
41 #            return '',200\r
42         return response_dict\r