Enable console to set expired-object-all-versions (#3226)
Signed-off-by: Shubhendu Ram Tripathi <shubhendu@minio.io>
This commit is contained in:
4
Makefile
4
Makefile
@@ -33,6 +33,10 @@ lint:
|
||||
@GO111MODULE=on ${GOPATH}/bin/golangci-lint cache clean
|
||||
@GO111MODULE=on ${GOPATH}/bin/golangci-lint run --timeout=5m --config ./.golangci.yml
|
||||
|
||||
lint-fix: getdeps ## runs golangci-lint suite of linters with automatic fixes
|
||||
@echo "Running $@ check"
|
||||
@GO111MODULE=on ${GOPATH}/bin/golangci-lint run --timeout=5m --config ./.golangci.yml --fix
|
||||
|
||||
install: console
|
||||
@echo "Installing console binary to '$(GOPATH)/bin/console'"
|
||||
@mkdir -p $(GOPATH)/bin && cp -f $(PWD)/console $(GOPATH)/bin/console
|
||||
|
||||
@@ -5373,6 +5373,10 @@ func init() {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
},
|
||||
"expired_object_delete_all": {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
},
|
||||
"expired_object_delete_marker": {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
@@ -5475,6 +5479,10 @@ func init() {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"expired_object_delete_all": {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
},
|
||||
"expired_object_delete_marker": {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
@@ -6180,6 +6188,9 @@ func init() {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"delete_all": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"delete_marker": {
|
||||
"type": "boolean"
|
||||
},
|
||||
@@ -8838,6 +8849,10 @@ func init() {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
},
|
||||
"expired_object_delete_all": {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
},
|
||||
"expired_object_delete_marker": {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
@@ -14729,6 +14744,10 @@ func init() {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
},
|
||||
"expired_object_delete_all": {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
},
|
||||
"expired_object_delete_marker": {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
@@ -14831,6 +14850,10 @@ func init() {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"expired_object_delete_all": {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
},
|
||||
"expired_object_delete_marker": {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
@@ -15531,6 +15554,9 @@ func init() {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"delete_all": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"delete_marker": {
|
||||
"type": "boolean"
|
||||
},
|
||||
@@ -18172,6 +18198,10 @@ func init() {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
},
|
||||
"expired_object_delete_all": {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
},
|
||||
"expired_object_delete_marker": {
|
||||
"description": "Non required, toggle to disable or enable rule",
|
||||
"type": "boolean"
|
||||
|
||||
@@ -117,6 +117,7 @@ func getBucketLifecycle(ctx context.Context, client MinioClient, bucketName stri
|
||||
Date: rule.Expiration.Date.Format(time.RFC3339),
|
||||
Days: int64(rule.Expiration.Days),
|
||||
DeleteMarker: rule.Expiration.DeleteMarker.IsEnabled(),
|
||||
DeleteAll: bool(rule.Expiration.DeleteAll),
|
||||
NoncurrentExpirationDays: int64(rule.NoncurrentVersionExpiration.NoncurrentDays),
|
||||
NewerNoncurrentExpirationVersions: int64(rule.NoncurrentVersionExpiration.NewerNoncurrentVersions),
|
||||
},
|
||||
@@ -188,6 +189,7 @@ func addBucketLifecycle(ctx context.Context, client MinioClient, params bucketAp
|
||||
Status: &status,
|
||||
Tags: ¶ms.Body.Tags,
|
||||
ExpiredObjectDeleteMarker: ¶ms.Body.ExpiredObjectDeleteMarker,
|
||||
ExpiredObjectAllversions: ¶ms.Body.ExpiredObjectDeleteAll,
|
||||
}
|
||||
|
||||
if params.Body.NoncurrentversionTransitionDays > 0 {
|
||||
@@ -219,6 +221,7 @@ func addBucketLifecycle(ctx context.Context, client MinioClient, params bucketAp
|
||||
Status: &status,
|
||||
Tags: ¶ms.Body.Tags,
|
||||
ExpiredObjectDeleteMarker: ¶ms.Body.ExpiredObjectDeleteMarker,
|
||||
ExpiredObjectAllversions: ¶ms.Body.ExpiredObjectDeleteAll,
|
||||
}
|
||||
|
||||
if params.Body.NewerNoncurrentversionExpirationVersions > 0 {
|
||||
@@ -298,6 +301,7 @@ func editBucketLifecycle(ctx context.Context, client MinioClient, params bucketA
|
||||
Status: &status,
|
||||
Tags: ¶ms.Body.Tags,
|
||||
ExpiredObjectDeleteMarker: ¶ms.Body.ExpiredObjectDeleteMarker,
|
||||
ExpiredObjectAllversions: ¶ms.Body.ExpiredObjectDeleteAll,
|
||||
}
|
||||
|
||||
if params.Body.NoncurrentversionTransitionDays > 0 {
|
||||
@@ -328,6 +332,7 @@ func editBucketLifecycle(ctx context.Context, client MinioClient, params bucketA
|
||||
Status: &status,
|
||||
Tags: ¶ms.Body.Tags,
|
||||
ExpiredObjectDeleteMarker: ¶ms.Body.ExpiredObjectDeleteMarker,
|
||||
ExpiredObjectAllversions: ¶ms.Body.ExpiredObjectDeleteAll,
|
||||
}
|
||||
|
||||
if params.Body.NoncurrentversionExpirationDays > 0 {
|
||||
@@ -456,6 +461,7 @@ func addMultiBucketLifecycle(ctx context.Context, client MinioClient, params buc
|
||||
ExpiryDays: params.Body.ExpiryDays,
|
||||
Disable: false,
|
||||
ExpiredObjectDeleteMarker: params.Body.ExpiredObjectDeleteMarker,
|
||||
ExpiredObjectDeleteAll: params.Body.ExpiredObjectDeleteMarker,
|
||||
}
|
||||
|
||||
go func() {
|
||||
|
||||
2
go.mod
2
go.mod
@@ -22,7 +22,7 @@ require (
|
||||
github.com/minio/highwayhash v1.0.2
|
||||
github.com/minio/kes v0.23.0
|
||||
github.com/minio/madmin-go/v3 v3.0.46
|
||||
github.com/minio/mc v0.0.0-20240209221824-669cb0a9a475
|
||||
github.com/minio/mc v0.0.0-20240224013320-f17313e7ab89
|
||||
github.com/minio/minio-go/v7 v7.0.67
|
||||
github.com/minio/selfupdate v0.6.0
|
||||
github.com/minio/websocket v1.6.0
|
||||
|
||||
4
go.sum
4
go.sum
@@ -189,8 +189,8 @@ github.com/minio/kes-go v0.2.1 h1:KnqS+p6xoSFJZbQhmJaz/PbxeA6nQyRqT/ywrn5lU2o=
|
||||
github.com/minio/kes-go v0.2.1/go.mod h1:76xf7l41Wrh+IifisABXK2S8uZWYgWV1IGBKC3GdOJk=
|
||||
github.com/minio/madmin-go/v3 v3.0.46 h1:DabFt+aUph5Vu/SOat2RWN/xVagPBU7qzxhAQ03hH/k=
|
||||
github.com/minio/madmin-go/v3 v3.0.46/go.mod h1:ZDF7kf5fhmxLhbGTqyq5efs4ao0v4eWf7nOuef/ljJs=
|
||||
github.com/minio/mc v0.0.0-20240209221824-669cb0a9a475 h1:yfLzMougcV2xkVlWgwYwVRoT8pnXrcCV4oOQW+pI2EQ=
|
||||
github.com/minio/mc v0.0.0-20240209221824-669cb0a9a475/go.mod h1:MmDLdb7NWd/OYhcKcXKvwErq2GNa/Zq6xtTWuhdC4II=
|
||||
github.com/minio/mc v0.0.0-20240224013320-f17313e7ab89 h1:XM7YTVWU46a1P+8h7+xMCQXJEIdU+MEFp9BZM7ImeVI=
|
||||
github.com/minio/mc v0.0.0-20240224013320-f17313e7ab89/go.mod h1:RBhdjMeCia7yxC9jQ2onV7kPvruzWBgtSa/h2zm1egc=
|
||||
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
|
||||
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
|
||||
github.com/minio/minio-go/v7 v7.0.67 h1:BeBvZWAS+kRJm1vGTMJYVjKUNoo0FoEt/wUWdUtfmh8=
|
||||
|
||||
@@ -40,6 +40,9 @@ type AddBucketLifecycle struct {
|
||||
// Non required, toggle to disable or enable rule
|
||||
Disable bool `json:"disable,omitempty"`
|
||||
|
||||
// Non required, toggle to disable or enable rule
|
||||
ExpiredObjectDeleteAll bool `json:"expired_object_delete_all,omitempty"`
|
||||
|
||||
// Non required, toggle to disable or enable rule
|
||||
ExpiredObjectDeleteMarker bool `json:"expired_object_delete_marker,omitempty"`
|
||||
|
||||
|
||||
@@ -41,6 +41,9 @@ type AddMultiBucketLifecycle struct {
|
||||
// Required: true
|
||||
Buckets []string `json:"buckets"`
|
||||
|
||||
// Non required, toggle to disable or enable rule
|
||||
ExpiredObjectDeleteAll bool `json:"expired_object_delete_all,omitempty"`
|
||||
|
||||
// Non required, toggle to disable or enable rule
|
||||
ExpiredObjectDeleteMarker bool `json:"expired_object_delete_marker,omitempty"`
|
||||
|
||||
|
||||
@@ -40,6 +40,9 @@ type ExpirationResponse struct {
|
||||
// days
|
||||
Days int64 `json:"days,omitempty"`
|
||||
|
||||
// delete all
|
||||
DeleteAll bool `json:"delete_all,omitempty"`
|
||||
|
||||
// delete marker
|
||||
DeleteMarker bool `json:"delete_marker,omitempty"`
|
||||
|
||||
|
||||
@@ -40,6 +40,9 @@ type UpdateBucketLifecycle struct {
|
||||
// Non required, toggle to disable or enable rule
|
||||
Disable bool `json:"disable,omitempty"`
|
||||
|
||||
// Non required, toggle to disable or enable rule
|
||||
ExpiredObjectDeleteAll bool `json:"expired_object_delete_all,omitempty"`
|
||||
|
||||
// Non required, toggle to disable or enable rule
|
||||
ExpiredObjectDeleteMarker bool `json:"expired_object_delete_marker,omitempty"`
|
||||
|
||||
|
||||
11
swagger.yml
11
swagger.yml
@@ -5109,6 +5109,8 @@ definitions:
|
||||
format: int64
|
||||
delete_marker:
|
||||
type: boolean
|
||||
delete_all:
|
||||
type: boolean
|
||||
noncurrent_expiration_days:
|
||||
type: integer
|
||||
format: int64
|
||||
@@ -5192,6 +5194,9 @@ definitions:
|
||||
expired_object_delete_marker:
|
||||
description: Non required, toggle to disable or enable rule
|
||||
type: boolean
|
||||
expired_object_delete_all:
|
||||
description: Non required, toggle to disable or enable rule
|
||||
type: boolean
|
||||
noncurrentversion_expiration_days:
|
||||
description: Non required, can be set in case of expiration is enabled
|
||||
type: integer
|
||||
@@ -5247,6 +5252,9 @@ definitions:
|
||||
expired_object_delete_marker:
|
||||
description: Non required, toggle to disable or enable rule
|
||||
type: boolean
|
||||
expired_object_delete_all:
|
||||
description: Non required, toggle to disable or enable rule
|
||||
type: boolean
|
||||
noncurrentversion_expiration_days:
|
||||
description: Non required, can be set in case of expiration is enabled
|
||||
type: integer
|
||||
@@ -5299,6 +5307,9 @@ definitions:
|
||||
expired_object_delete_marker:
|
||||
description: Non required, toggle to disable or enable rule
|
||||
type: boolean
|
||||
expired_object_delete_all:
|
||||
description: Non required, toggle to disable or enable rule
|
||||
type: boolean
|
||||
noncurrentversion_expiration_days:
|
||||
description: Non required, can be set in case of expiration is enabled
|
||||
type: integer
|
||||
|
||||
@@ -903,6 +903,7 @@ export interface ExpirationResponse {
|
||||
/** @format int64 */
|
||||
days?: number;
|
||||
delete_marker?: boolean;
|
||||
delete_all?: boolean;
|
||||
/** @format int64 */
|
||||
noncurrent_expiration_days?: number;
|
||||
/** @format int64 */
|
||||
@@ -958,6 +959,8 @@ export interface AddBucketLifecycle {
|
||||
disable?: boolean;
|
||||
/** Non required, toggle to disable or enable rule */
|
||||
expired_object_delete_marker?: boolean;
|
||||
/** Non required, toggle to disable or enable rule */
|
||||
expired_object_delete_all?: boolean;
|
||||
/**
|
||||
* Non required, can be set in case of expiration is enabled
|
||||
* @format int32
|
||||
@@ -1005,6 +1008,8 @@ export interface UpdateBucketLifecycle {
|
||||
disable?: boolean;
|
||||
/** Non required, toggle to disable or enable rule */
|
||||
expired_object_delete_marker?: boolean;
|
||||
/** Non required, toggle to disable or enable rule */
|
||||
expired_object_delete_all?: boolean;
|
||||
/**
|
||||
* Non required, can be set in case of expiration is enabled
|
||||
* @format int32
|
||||
@@ -1045,6 +1050,8 @@ export interface AddMultiBucketLifecycle {
|
||||
storage_class?: string;
|
||||
/** Non required, toggle to disable or enable rule */
|
||||
expired_object_delete_marker?: boolean;
|
||||
/** Non required, toggle to disable or enable rule */
|
||||
expired_object_delete_all?: boolean;
|
||||
/**
|
||||
* Non required, can be set in case of expiration is enabled
|
||||
* @format int32
|
||||
|
||||
@@ -73,6 +73,8 @@ const AddLifecycleModal = ({
|
||||
const [lifecycleDays, setLifecycleDays] = useState<string>("");
|
||||
const [isFormValid, setIsFormValid] = useState<boolean>(false);
|
||||
const [expiredObjectDM, setExpiredObjectDM] = useState<boolean>(false);
|
||||
const [expiredAllVersionsDM, setExpiredAllVersionsDM] =
|
||||
useState<boolean>(false);
|
||||
const [loadingVersioning, setLoadingVersioning] = useState<boolean>(true);
|
||||
const [expandedAdv, setExpandedAdv] = useState<boolean>(false);
|
||||
const [expanded, setExpanded] = useState<boolean>(false);
|
||||
@@ -183,6 +185,7 @@ const AddLifecycleModal = ({
|
||||
prefix,
|
||||
tags,
|
||||
expired_object_delete_marker: expiredObjectDM,
|
||||
expired_object_delete_all: expiredAllVersionsDM,
|
||||
...rules,
|
||||
};
|
||||
|
||||
@@ -437,6 +440,21 @@ const AddLifecycleModal = ({
|
||||
"Remove the reference to the object if no versions are left"
|
||||
}
|
||||
/>
|
||||
<Switch
|
||||
value="expired_delete_all"
|
||||
id="expired_delete_all"
|
||||
name="expired_delete_all"
|
||||
checked={expiredAllVersionsDM}
|
||||
onChange={(
|
||||
event: React.ChangeEvent<HTMLInputElement>,
|
||||
) => {
|
||||
setExpiredAllVersionsDM(event.target.checked);
|
||||
}}
|
||||
label={"Expire All Versions"}
|
||||
description={
|
||||
"Removes all the versions of the object already expired"
|
||||
}
|
||||
/>
|
||||
</Grid>
|
||||
</Accordion>
|
||||
</Grid>
|
||||
|
||||
@@ -62,6 +62,8 @@ const EditLifecycleConfiguration = ({
|
||||
const [storageClass, setStorageClass] = useState("");
|
||||
const [NCTransitionSC, setNCTransitionSC] = useState("");
|
||||
const [expiredObjectDM, setExpiredObjectDM] = useState<boolean>(false);
|
||||
const [expiredAllVersionsDM, setExpiredAllVersionsDM] =
|
||||
useState<boolean>(false);
|
||||
const [NCExpirationDays, setNCExpirationDays] = useState<string>("0");
|
||||
const [NCTransitionDays, setNCTransitionDays] = useState<string>("0");
|
||||
const [ilmType, setIlmType] = useState<"transition" | "expiry">("expiry");
|
||||
@@ -199,6 +201,7 @@ const EditLifecycleConfiguration = ({
|
||||
}
|
||||
|
||||
setExpiredObjectDM(!!lifecycleRule.expiration?.delete_marker);
|
||||
setExpiredAllVersionsDM(!!lifecycleRule.expiration?.delete_all);
|
||||
setPrefix(lifecycleRule.prefix || "");
|
||||
|
||||
if (lifecycleRule.tags) {
|
||||
@@ -270,6 +273,7 @@ const EditLifecycleConfiguration = ({
|
||||
prefix,
|
||||
tags,
|
||||
expired_object_delete_marker: expiredObjectDM,
|
||||
expired_object_delete_all: expiredAllVersionsDM,
|
||||
...rules,
|
||||
};
|
||||
|
||||
@@ -498,6 +502,18 @@ const EditLifecycleConfiguration = ({
|
||||
}}
|
||||
label={"Expired Object Delete Marker"}
|
||||
/>
|
||||
<Switch
|
||||
value="expired_delete_all"
|
||||
id="expired_delete_all"
|
||||
name="expired_delete_all"
|
||||
checked={expiredAllVersionsDM}
|
||||
onChange={(
|
||||
event: React.ChangeEvent<HTMLInputElement>,
|
||||
) => {
|
||||
setExpiredAllVersionsDM(event.target.checked);
|
||||
}}
|
||||
label={"Expired All Versions"}
|
||||
/>
|
||||
</Accordion>
|
||||
</Grid>
|
||||
)}
|
||||
|
||||
@@ -59,6 +59,8 @@ const AddBulkReplicationModal = ({
|
||||
const [storageClass, setStorageClass] = useState("");
|
||||
const [NCTransitionSC, setNCTransitionSC] = useState("");
|
||||
const [expiredObjectDM, setExpiredObjectDM] = useState<boolean>(false);
|
||||
const [expiredAllVersionsDM, setExpiredAllVersionsDM] =
|
||||
useState<boolean>(false);
|
||||
const [NCExpirationDays, setNCExpirationDays] = useState<string>("0");
|
||||
const [NCTransitionDays, setNCTransitionDays] = useState<string>("0");
|
||||
const [ilmType, setIlmType] = useState<"expiry" | "transition">("expiry");
|
||||
@@ -172,6 +174,7 @@ const AddBulkReplicationModal = ({
|
||||
prefix,
|
||||
tags,
|
||||
expired_object_delete_marker: expiredObjectDM,
|
||||
expired_object_delete_all: expiredAllVersionsDM,
|
||||
...rules,
|
||||
};
|
||||
|
||||
@@ -344,6 +347,18 @@ const AddBulkReplicationModal = ({
|
||||
}}
|
||||
label={"Expired Object Delete Marker"}
|
||||
/>
|
||||
<Switch
|
||||
value="expired_delete_all"
|
||||
id="expired_delete_all"
|
||||
name="expired_delete_all"
|
||||
checked={expiredAllVersionsDM}
|
||||
onChange={(
|
||||
event: React.ChangeEvent<HTMLInputElement>,
|
||||
) => {
|
||||
setExpiredAllVersionsDM(event.target.checked);
|
||||
}}
|
||||
label={"Expired All Versions"}
|
||||
/>
|
||||
</fieldset>
|
||||
</FormLayout>
|
||||
</Fragment>
|
||||
|
||||
@@ -41,6 +41,7 @@ interface IExpirationLifecycle {
|
||||
days: number;
|
||||
date: string;
|
||||
delete_marker?: boolean;
|
||||
delete_all?: boolean;
|
||||
noncurrent_expiration_days?: number;
|
||||
newer_noncurrent_expiration_versions?: number;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user