5353import javax .ws .rs .core .Response ;
5454import org .apache .commons .lang3 .StringUtils ;
5555import org .apache .hadoop .ozone .OzoneAcl ;
56+ import org .apache .hadoop .ozone .audit .AuditEventStatus ;
57+ import org .apache .hadoop .ozone .audit .AuditMessage ;
5658import org .apache .hadoop .ozone .audit .S3GAction ;
5759import org .apache .hadoop .ozone .client .OzoneBucket ;
5860import org .apache .hadoop .ozone .client .OzoneKey ;
@@ -138,8 +140,7 @@ public Response get(
138140 s3GAction = S3GAction .GET_ACL ;
139141 S3BucketAcl result = getAcl (bucketName );
140142 getMetrics ().updateGetAclSuccessStats (startNanos );
141- AUDIT .logReadSuccess (
142- buildAuditMessageForSuccess (s3GAction , getAuditParameters ()));
143+ auditReadSuccess (s3GAction );
143144 return Response .ok (result , MediaType .APPLICATION_XML_TYPE ).build ();
144145 }
145146
@@ -175,8 +176,7 @@ public Response get(
175176 ozoneKeyIterator = bucket .listKeys (prefix , prevKey , shallow );
176177
177178 } catch (OMException ex ) {
178- AUDIT .logReadFailure (
179- buildAuditMessageForFailure (s3GAction , getAuditParameters (), ex ));
179+ auditReadFailure (s3GAction , ex );
180180 getMetrics ().updateGetBucketFailureStats (startNanos );
181181 if (isAccessDenied (ex )) {
182182 throw newError (S3ErrorTable .ACCESS_DENIED , bucketName , ex );
@@ -188,8 +188,7 @@ public Response get(
188188 }
189189 } catch (Exception ex ) {
190190 getMetrics ().updateGetBucketFailureStats (startNanos );
191- AUDIT .logReadFailure (
192- buildAuditMessageForFailure (s3GAction , getAuditParameters (), ex ));
191+ auditReadFailure (s3GAction , ex );
193192 throw ex ;
194193 }
195194
@@ -298,8 +297,7 @@ public Response get(
298297 getMetrics ().incListKeyCount (keyCount );
299298 perf .appendCount (keyCount );
300299 perf .appendOpLatencyNanos (opLatencyNs );
301- AUDIT .logReadSuccess (buildAuditMessageForSuccess (s3GAction ,
302- getAuditParameters (), perf ));
300+ auditReadSuccess (s3GAction , perf );
303301 response .setKeyCount (keyCount );
304302 return Response .ok (response ).build ();
305303 }
@@ -320,28 +318,15 @@ public Response put(@PathParam("bucket") String bucketName,
320318 S3GAction s3GAction = S3GAction .CREATE_BUCKET ;
321319
322320 try {
323- // Build map of query parameters
324- Map <String , String > queryParams = new HashMap <>();
325- queryParams .put ("acl" , aclMarker );
326- // Future handlers: queryParams.put("lifecycle", lifecycleMarker);
327-
328- // Check for subresource operations using handlers
329- String queryParam = HANDLER_FACTORY .findFirstSupportedQueryParam (queryParams );
330-
331- if (queryParam != null ) {
332- BucketOperationHandler handler = HANDLER_FACTORY .getHandler (queryParam );
333- // Delegate to specific handler
334- s3GAction = getActionForQueryParam (queryParam );
335- Response response = handler .handlePutRequest (
336- bucketName , body , getHeaders (), getBucketContext (), startNanos );
337- AUDIT .logWriteSuccess (
338- buildAuditMessageForSuccess (s3GAction , getAuditParameters ()));
321+ if (aclMarker != null ) {
322+ s3GAction = S3GAction .PUT_ACL ;
323+ Response response = putAcl (bucketName , body );
324+ auditWriteSuccess (s3GAction );
339325 return response ;
340326 }
341327
342328 String location = createS3Bucket (bucketName );
343- AUDIT .logWriteSuccess (
344- buildAuditMessageForSuccess (s3GAction , getAuditParameters ()));
329+ auditWriteSuccess (s3GAction );
345330 getMetrics ().updateCreateBucketSuccessStats (startNanos );
346331 return Response .status (HttpStatus .SC_OK ).header ("Location" , location )
347332 .build ();
@@ -353,8 +338,7 @@ public Response put(@PathParam("bucket") String bucketName,
353338 }
354339 throw exception ;
355340 } catch (Exception ex ) {
356- AUDIT .logWriteFailure (
357- buildAuditMessageForFailure (s3GAction , getAuditParameters (), ex ));
341+ auditWriteFailure (s3GAction , ex );
358342 throw ex ;
359343 }
360344 }
@@ -413,22 +397,18 @@ public Response listMultipartUploads(
413397 upload .getCreationTime (),
414398 S3StorageType .fromReplicationConfig (upload .getReplicationConfig ())
415399 )));
416- AUDIT .logReadSuccess (buildAuditMessageForSuccess (s3GAction ,
417- getAuditParameters ()));
400+ auditReadSuccess (s3GAction );
418401 getMetrics ().updateListMultipartUploadsSuccessStats (startNanos );
419402 return Response .ok (result ).build ();
420403 } catch (OMException exception ) {
421- AUDIT .logReadFailure (
422- buildAuditMessageForFailure (s3GAction , getAuditParameters (),
423- exception ));
404+ auditReadFailure (s3GAction , exception );
424405 getMetrics ().updateListMultipartUploadsFailureStats (startNanos );
425406 if (isAccessDenied (exception )) {
426407 throw newError (S3ErrorTable .ACCESS_DENIED , prefix , exception );
427408 }
428409 throw exception ;
429410 } catch (Exception ex ) {
430- AUDIT .logReadFailure (
431- buildAuditMessageForFailure (s3GAction , getAuditParameters (), ex ));
411+ auditReadFailure (s3GAction , ex );
432412 throw ex ;
433413 }
434414 }
@@ -447,13 +427,11 @@ public Response head(@PathParam("bucket") String bucketName)
447427 try {
448428 OzoneBucket bucket = getBucket (bucketName );
449429 S3Owner .verifyBucketOwnerCondition (getHeaders (), bucketName , bucket .getOwner ());
450- AUDIT .logReadSuccess (
451- buildAuditMessageForSuccess (s3GAction , getAuditParameters ()));
430+ auditReadSuccess (s3GAction );
452431 getMetrics ().updateHeadBucketSuccessStats (startNanos );
453432 return Response .ok ().build ();
454433 } catch (Exception e ) {
455- AUDIT .logReadFailure (
456- buildAuditMessageForFailure (s3GAction , getAuditParameters (), e ));
434+ auditReadFailure (s3GAction , e );
457435 throw e ;
458436 }
459437 }
@@ -477,8 +455,7 @@ public Response delete(@PathParam("bucket") String bucketName)
477455 }
478456 deleteS3Bucket (bucketName );
479457 } catch (OMException ex ) {
480- AUDIT .logWriteFailure (
481- buildAuditMessageForFailure (s3GAction , getAuditParameters (), ex ));
458+ auditWriteFailure (s3GAction , ex );
482459 getMetrics ().updateDeleteBucketFailureStats (startNanos );
483460 if (ex .getResult () == ResultCodes .BUCKET_NOT_EMPTY ) {
484461 throw newError (S3ErrorTable .BUCKET_NOT_EMPTY , bucketName , ex );
@@ -490,13 +467,11 @@ public Response delete(@PathParam("bucket") String bucketName)
490467 throw ex ;
491468 }
492469 } catch (Exception ex ) {
493- AUDIT .logWriteFailure (
494- buildAuditMessageForFailure (s3GAction , getAuditParameters (), ex ));
470+ auditWriteFailure (s3GAction , ex );
495471 throw ex ;
496472 }
497473
498- AUDIT .logWriteSuccess (buildAuditMessageForSuccess (s3GAction ,
499- getAuditParameters ()));
474+ auditWriteSuccess (s3GAction );
500475 getMetrics ().updateDeleteBucketSuccessStats (startNanos );
501476 return Response
502477 .status (HttpStatus .SC_NO_CONTENT )
@@ -555,15 +530,16 @@ public MultiDeleteResponse multiDelete(@PathParam("bucket") String bucketName,
555530 }
556531 }
557532
558- Map <String , String > auditMap = getAuditParameters ();
559- auditMap .put ("failedDeletes" , deleteKeys .toString ());
533+ AuditMessage .Builder message = auditMessageFor (s3GAction );
534+ message .getParams ().put ("failedDeletes" , deleteKeys .toString ());
535+
560536 if (!result .getErrors ().isEmpty ()) {
561- AUDIT .logWriteFailure (buildAuditMessageForFailure ( s3GAction ,
562- auditMap , new Exception ("MultiDelete Exception" )));
537+ AUDIT .logWriteFailure (message . withResult ( AuditEventStatus . FAILURE )
538+ . withException ( new Exception ("MultiDelete Exception" )). build ( ));
563539 } else {
564- AUDIT .logWriteSuccess (
565- buildAuditMessageForSuccess (s3GAction , auditMap ));
540+ AUDIT .logWriteSuccess (message .withResult (AuditEventStatus .SUCCESS ).build ());
566541 }
542+
567543 return result ;
568544 }
569545
0 commit comments