- # right now it is assumed that xapps respond with JSON payloads
- # it is further assumed that they include a field "status" and that the value "SUCCESS" indicates a good policy change
- try:
- rpj = json.loads(return_payload)
- return (rpj, 200) if rpj["status"] == "SUCCESS" else ({"reason": "BAD STATUS", "return_payload": rpj}, 502)
- except json.decoder.JSONDecodeError:
- return {"reason": "NOT JSON", "return_payload": return_payload}, 502
- except KeyError:
- return {"reason": "NO STATUS", "return_payload": rpj}, 502
+def get_healthcheck():
+ """
+ Handles healthcheck GET
+ Currently, this basically checks the server is alive
+ """
+ return "", 200
+
+
+# Policy types
+
+
+def get_all_policy_types():
+ """
+ Handles GET /a1-p/policytypes
+ """
+ return _try_func_return(data.get_type_list)
+
+
+def create_policy_type(policy_type_id):
+ """
+ Handles PUT /a1-p/policytypes/policy_type_id
+ """
+
+ def put_type_handler():
+ data.store_policy_type(policy_type_id, body)
+ return "", 201
+
+ body = connexion.request.json
+ return _try_func_return(put_type_handler)
+
+
+def get_policy_type(policy_type_id):
+ """
+ Handles GET /a1-p/policytypes/policy_type_id
+ """
+ return _try_func_return(lambda: data.get_policy_type(policy_type_id))
+
+
+def delete_policy_type(policy_type_id):
+ """
+ Handles DELETE /a1-p/policytypes/policy_type_id
+ """
+
+ def delete_policy_type_handler():
+ data.delete_policy_type(policy_type_id)
+ return "", 204
+
+ return _try_func_return(delete_policy_type_handler)
+
+
+# Policy instances
+
+
+def get_all_instances_for_type(policy_type_id):
+ """
+ Handles GET /a1-p/policytypes/policy_type_id/policies
+ """
+ return _try_func_return(lambda: data.get_instance_list(policy_type_id))
+
+
+def get_policy_instance(policy_type_id, policy_instance_id):
+ """
+ Handles GET /a1-p/policytypes/polidyid/policies/policy_instance_id
+ """
+ return _try_func_return(lambda: data.get_policy_instance(policy_type_id, policy_instance_id))
+
+
+def get_policy_instance_status(policy_type_id, policy_instance_id):
+ """
+ Handles GET /a1-p/policytypes/polidyid/policies/policy_instance_id/status