google-cloud-cpp icon indicating copy to clipboard operation
google-cloud-cpp copied to clipboard

storage: add support for object retention

Open JesseLovelace opened this issue 1 year ago • 5 comments

Please implement the object retention feature. The following operations must be supported:

  • [x] Create a bucket with object retention enabled by using the enableObjectRetention bucket create boolean option at bucket create time
  • [x] Get the object retention enabled status of a bucket
  • [x] Create an object with retention enabled (on an retention enabled bucket) by populating the retention object at object create time (retention object has the fields mode which can be Unlocked or Locked, and retainUntilTime which is a timestamp)
  • [x] Update retention for an existing object with a patch operation, by passing the overrideUnlockedRetention boolean patch option
  • [x] Get the retention policy of an object
  • [x] Remove retention for an existing object the same way as above

Support for gRPC is blocked as the protos are not published.

  • [ ] Implement FromProto for BucketObjectRetention
  • [ ] Support EnableObjectRetention for gRPC plugin
  • [ ] Implement ToProto and FromProto for ObjectRetention
  • [ ] Support OverrideUnlockedRetention for gRPC plugin
  • [ ] Support bucket metadata for object retention in the testbench
  • [ ] Support object metadata for object retention in the testbench
  • [ ] Upgrade the testbench
  • [ ] Enable the object retention samples when running against the emulator

Details in go/gcs-object-retention-client-request

You can use the java implementation as a reference.

The kokoro test project should be allowlisted shortly, let me know if you need access to an allowlisted project for your own testing.

We're aiming to get this in by the November code freeze, let me know if you need any help.

JesseLovelace avatar Oct 27 '23 20:10 JesseLovelace

This is not going to happen by the 2023-11 C++ release (due in the first few business days of the month). I also don't see this feature in the protos:

https://github.com/googleapis/googleapis/blob/395600748bbfc4b61a941c4b0e8a04372a9b4d3b/google/storage/v2/storage.proto

Though I guess that could change in the next few days. We cannot add this to our CI until the protos are published.

coryan avatar Oct 27 '23 21:10 coryan

Punting for now.

scotthart avatar Apr 24 '24 19:04 scotthart

@scotthart @coryan : Can it be prioritized? Support for this API in Cpp library is important for us.

sourabh912 avatar Jun 14 '24 22:06 sourabh912

@sourabh912 I am sorry you are blocked because this API was missing. After #14351 gets merged (probably within the next few days) all the functionality should be available [^1] in the main branch using the JSON transport[^2]. These changes will be part of the next release, scheduled for early in 2024-07.

I will keep this bug open (and probably unassigned) until the gRPC-based implementation is unblocked.

[^1]: Unless you try to use this via the gRPC plugin. gRPC is under and allow list, please reach out to your support team if you need this implemented in gRPC too. A customer explicitly asking for gRPC support would help me escalate the gRPC implementation internally. [^2]: this is the default.

coryan avatar Jun 18 '24 21:06 coryan

@coryan : Thank you for the update !

sourabh912 avatar Jul 02 '24 22:07 sourabh912