google-cloud-cpp
google-cloud-cpp copied to clipboard
storage: add support for object retention
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 fieldsmode
which can be Unlocked or Locked, andretainUntilTime
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.
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.
Punting for now.
@scotthart @coryan : Can it be prioritized? Support for this API in Cpp library is important for us.
@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 : Thank you for the update !