- if enforceStatus == "NOT_ENFORCED":
- if enforceReason in ["100", "200", "300", "800"]:
- policy_status.pop(policyId)
- ps = {}
- ps["policyId"] = policyId
- ps["enforceStatus"] = enforceStatus
- ps["enforceReason"] = enforceReason
- policy_status[policyId] = ps
- return("Status updated for policy: " + policyId, 200)
- else:
- return("enforceReason should be one of \"100\", \"200\", \"300\" or \"800\"", 400)
+ if policy_type_per_instance[policyId] == "UNDEFINED":
+ ps = {}
+ ps["policyId"] = policyId
+ ps["enforceStatus"] = enforceStatus
+ ps["enforceReason"] = enforceReason
+ else:
+ policy_type_id = policy_type_per_instance[policyId]
+ status_schema = policy_types[policy_type_id]["statusSchema"]
+ ps = {}
+ ps["policyId"] = policyId
+ ps["enforceStatus"] = enforceStatus
+ ps["enforceReason"] = enforceReason
+ try:
+ validate(instance=ps, schema=status_schema)
+ except:
+ return(set_error(None, "The json does not validate against the status schema.", 400, None, None, None, None, None))
+ policy_status.pop(policyId)
+ policy_status[policyId] = ps
+ return("Status updated for policy: " + policyId, 200)
+
+#Metrics function
+
+@app.route('/counter/<string:countername>', methods=['GET'])
+def getCounter(countername):
+ if (countername == "num_instances"):
+ return str(len(policy_instances)),200
+ elif (countername == "num_types"):
+ return str(len(policy_types)),200