Dear Ceph developers,

Recently in the context of reviewing PR: https://github.com/ceph/ceph/pull/28787 we got into a conversation about what would be a good practice to introduce an AWS-S3 unsupported feature in Ceph and how upstream libraries/SDKs would react to the new feature addition.

More specifically, I'm intending to introduce a feature through which a bucket can be deleted by lifecycle (LC) configuration upon expiry, subject to a few conditions such as the bucket being empty + it should be past the expiry date (or aged beyond expiry_days since ctime).

The RFC here is around how the end-user should specify this LC-Rule for bucket expiry. I've chosen to convert the 'State' field in the LC-Rule into a tri-state from a boolean i.e. 'Disabled'/'Enabled'/'Purge_Enabled' (instead of having only the first two states) and it has the following advantages:
a) It is non-intrusive i.e. existing users of LC who have no interest in bucket purge need not make any changes to their code
b) It can be easily enabled by interested users without requiring a patch on their SDKs (which allow a pass-through of the Status string).

Does the community feel that this approach is good or are there any better suggestions?

Thanks,
K.Prasad