use of org.apache.zookeeper.audit.AuditEvent.Result in project zookeeper by apache.
the class AuditHelper method addAuditLog.
/**
* Add audit log if audit log is enabled and operation is of type which to be audit logged.
*
* @param request user request
* @param txnResult ProcessTxnResult
* @param failedTxn whether audit is being done failed transaction for normal transaction
*/
public static void addAuditLog(Request request, ProcessTxnResult txnResult, boolean failedTxn) {
if (!ZKAuditProvider.isAuditEnabled()) {
return;
}
String op = null;
// For failed transaction rc.path is null
String path = txnResult.path;
String acls = null;
String createMode = null;
try {
switch(request.type) {
case ZooDefs.OpCode.create:
case ZooDefs.OpCode.create2:
case ZooDefs.OpCode.createContainer:
op = AuditConstants.OP_CREATE;
CreateRequest createRequest = new CreateRequest();
deserialize(request, createRequest);
createMode = getCreateMode(createRequest);
if (failedTxn) {
path = createRequest.getPath();
}
break;
case ZooDefs.OpCode.delete:
case ZooDefs.OpCode.deleteContainer:
op = AuditConstants.OP_DELETE;
if (failedTxn) {
DeleteRequest deleteRequest = new DeleteRequest();
deserialize(request, deleteRequest);
path = deleteRequest.getPath();
}
break;
case ZooDefs.OpCode.setData:
op = AuditConstants.OP_SETDATA;
if (failedTxn) {
SetDataRequest setDataRequest = new SetDataRequest();
deserialize(request, setDataRequest);
path = setDataRequest.getPath();
}
break;
case ZooDefs.OpCode.setACL:
op = AuditConstants.OP_SETACL;
SetACLRequest setACLRequest = new SetACLRequest();
deserialize(request, setACLRequest);
acls = ZKUtil.aclToString(setACLRequest.getAcl());
if (failedTxn) {
path = setACLRequest.getPath();
}
break;
case ZooDefs.OpCode.multi:
if (failedTxn) {
op = AuditConstants.OP_MULTI_OP;
} else {
logMultiOperation(request, txnResult);
// operation si already logged
return;
}
break;
case ZooDefs.OpCode.reconfig:
op = AuditConstants.OP_RECONFIG;
break;
default:
// Not an audit log operation
return;
}
Result result = getResult(txnResult, failedTxn);
log(request, path, op, acls, createMode, result);
} catch (Throwable e) {
LOG.error("Failed to audit log request {}", request.type, e);
}
}
Aggregations