From 56887f32083e751edb21c8f4702f737f18f3870a Mon Sep 17 00:00:00 2001 From: Shubhendu Date: Thu, 22 Feb 2024 01:58:34 +0530 Subject: [PATCH] Add DeleteAll with expiry days non zero value only (#19095) Signed-off-by: Shubhendu Ram Tripathi --- internal/bucket/lifecycle/expiration.go | 6 ++++++ internal/bucket/lifecycle/expiration_test.go | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/bucket/lifecycle/expiration.go b/internal/bucket/lifecycle/expiration.go index 4ba095dca..16a5fd14b 100644 --- a/internal/bucket/lifecycle/expiration.go +++ b/internal/bucket/lifecycle/expiration.go @@ -28,6 +28,7 @@ var ( errLifecycleInvalidExpiration = Errorf("Exactly one of Days (positive integer) or Date (positive ISO 8601 format) should be present inside Expiration.") errLifecycleInvalidDeleteMarker = Errorf("Delete marker cannot be specified with Days or Date in a Lifecycle Expiration Policy") errLifecycleDateNotMidnight = Errorf("'Date' must be at midnight GMT") + errLifecycleInvalidDeleteAll = Errorf("Days (positive integer) should be present inside Expiration with ExpiredObjectAllVersions.") ) // ExpirationDays is a type alias to unmarshal Days in Expiration @@ -186,6 +187,11 @@ func (e Expiration) Validate() error { return errLifecycleInvalidExpiration } + // DeleteAll set without expiration days + if e.DeleteAll.set && e.IsDaysNull() { + return errLifecycleInvalidDeleteAll + } + return nil } diff --git a/internal/bucket/lifecycle/expiration_test.go b/internal/bucket/lifecycle/expiration_test.go index 50cfd7b68..76cac74d2 100644 --- a/internal/bucket/lifecycle/expiration_test.go +++ b/internal/bucket/lifecycle/expiration_test.go @@ -106,7 +106,7 @@ func TestInvalidExpiration(t *testing.T) { 2019-04-20T00:00:00Z true `, - expectedErr: nil, + expectedErr: errLifecycleInvalidDeleteAll, }, } for i, tc := range validationTestCases {