@@ -145,7 +145,7 @@ func registerBucketsHandlers(api *operations.ConsoleAPI) {
145145 })
146146 // get bucket object locking status
147147 api .UserAPIGetBucketObjectLockingStatusHandler = user_api .GetBucketObjectLockingStatusHandlerFunc (func (params user_api.GetBucketObjectLockingStatusParams , session * models.Principal ) middleware.Responder {
148- getBucketObjectLockingStatus , err := getBucketObLockingResponse (session , params .BucketName )
148+ getBucketObjectLockingStatus , err := getBucketObjectLockingResponse (session , params .BucketName )
149149 if err != nil {
150150 return user_api .NewGetBucketObjectLockingStatusDefault (500 ).WithPayload (& models.Error {Code : 500 , Message : swag .String (err .Error ())})
151151 }
@@ -710,30 +710,48 @@ func getBucketRetentionConfig(ctx context.Context, client MinioClient, bucketNam
710710 }
711711 return nil , err
712712 }
713+
714+ // These values can be empty when all are empty, it means
715+ // object was created with object locking enabled but
716+ // does not have any default object locking configuration.
717+ if m == nil && v == nil && u == nil {
718+ return & models.GetBucketRetentionConfig {}, nil
719+ }
720+
713721 var mode models.ObjectRetentionMode
714722 var unit models.ObjectRetentionUnit
715- switch * m {
716- case minio .Governance :
717- mode = models .ObjectRetentionModeGovernance
718- case minio .Compliance :
719- mode = models .ObjectRetentionModeCompliance
720- default :
721- return nil , errors .New ("invalid retention mode" )
723+
724+ if m != nil {
725+ switch * m {
726+ case minio .Governance :
727+ mode = models .ObjectRetentionModeGovernance
728+ case minio .Compliance :
729+ mode = models .ObjectRetentionModeCompliance
730+ default :
731+ return nil , errors .New ("invalid retention mode" )
732+ }
722733 }
723734
724- switch * u {
725- case minio .Days :
726- unit = models .ObjectRetentionUnitDays
727- case minio .Years :
728- unit = models .ObjectRetentionUnitYears
729- default :
730- return nil , errors .New ("invalid retention unit" )
735+ if u != nil {
736+ switch * u {
737+ case minio .Days :
738+ unit = models .ObjectRetentionUnitDays
739+ case minio .Years :
740+ unit = models .ObjectRetentionUnitYears
741+ default :
742+ return nil , errors .New ("invalid retention unit" )
743+ }
744+ }
745+
746+ var validity int32
747+ if v != nil {
748+ validity = int32 (* v )
731749 }
732750
733751 config := & models.GetBucketRetentionConfig {
734752 Mode : mode ,
735753 Unit : unit ,
736- Validity : int32 ( * v ) ,
754+ Validity : validity ,
737755 }
738756 return config , nil
739757}
@@ -745,6 +763,7 @@ func getBucketRetentionConfigResponse(session *models.Principal, bucketName stri
745763 if err != nil {
746764 return nil , prepareError (err )
747765 }
766+
748767 // create a minioClient interface implementation
749768 // defining the client to be used
750769 minioClient := minioClient {client : mClient }
@@ -756,7 +775,7 @@ func getBucketRetentionConfigResponse(session *models.Principal, bucketName stri
756775 return config , nil
757776}
758777
759- func getBucketObLockingResponse (session * models.Principal , bucketName string ) (* models.BucketObLockingResponse , error ) {
778+ func getBucketObjectLockingResponse (session * models.Principal , bucketName string ) (* models.BucketObLockingResponse , error ) {
760779 ctx , cancel := context .WithTimeout (context .Background (), time .Second * 20 )
761780 defer cancel ()
762781
@@ -772,19 +791,18 @@ func getBucketObLockingResponse(session *models.Principal, bucketName string) (*
772791 // we will tolerate this call failing
773792 _ , _ , _ , _ , err = minioClient .getObjectLockConfig (ctx , bucketName )
774793 if err != nil {
775- if err . Error () == "Object Lock configuration does not exist for this bucket " {
794+ if minio . ToErrorResponse ( err ). Code == "ObjectLockConfigurationNotFoundError " {
776795 return & models.BucketObLockingResponse {
777796 ObjectLockingEnabled : false ,
778797 }, nil
779798 }
780- LogError ( "error object locking bucket: %v" , err )
799+ return nil , err
781800 }
782801
783802 // serialize output
784- listBucketsResponse := & models.BucketObLockingResponse {
803+ return & models.BucketObLockingResponse {
785804 ObjectLockingEnabled : true ,
786- }
787- return listBucketsResponse , nil
805+ }, nil
788806}
789807
790808func getBucketRewindResponse (session * models.Principal , params user_api.GetBucketRewindParams ) (* models.RewindResponse , * models.Error ) {
0 commit comments