Search in sources :

Example 1 with Result

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);
    }
}
Also used : CreateRequest(org.apache.zookeeper.proto.CreateRequest) SetACLRequest(org.apache.zookeeper.proto.SetACLRequest) SetDataRequest(org.apache.zookeeper.proto.SetDataRequest) DeleteRequest(org.apache.zookeeper.proto.DeleteRequest) Result(org.apache.zookeeper.audit.AuditEvent.Result) ProcessTxnResult(org.apache.zookeeper.server.DataTree.ProcessTxnResult)

Aggregations

Result (org.apache.zookeeper.audit.AuditEvent.Result)1 CreateRequest (org.apache.zookeeper.proto.CreateRequest)1 DeleteRequest (org.apache.zookeeper.proto.DeleteRequest)1 SetACLRequest (org.apache.zookeeper.proto.SetACLRequest)1 SetDataRequest (org.apache.zookeeper.proto.SetDataRequest)1 ProcessTxnResult (org.apache.zookeeper.server.DataTree.ProcessTxnResult)1