Repository navigation
Accept GLACIER/DEEP_ARCHIVE as cold locations, advertise the Veeam archive tier - #6329
Conversation
Hello francoisferrand,My role is to assist you with the merge of this Available options
Available commands
Status report is not available. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files
... and 1 file with indirect coverage changes @@ Coverage Diff @@
## development/9.5 #6329 +/- ##
===================================================
+ Coverage 90.22% 90.23% +0.01%
===================================================
Files 206 206
Lines 38589 38673 +84
===================================================
+ Hits 34817 34897 +80
- Misses 3772 3776 +4
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Request integration branchesWaiting for integration branch creation to be requested by the user. To request integration branches, please comment on this pull request with the following command: Alternatively, the |
6957fbd to
6b5a944
Compare
93118d6 to
b60553f
Compare
b5780c1 to
bb1089d
Compare
Standard S3 clients (AWS CLI, Veeam...) only accept the official storage class names, so they cannot write directly to a cold location: the location names are lower case, and cannot be created with an upper case name anyway. GLACIER and DEEP_ARCHIVE in x-amz-storage-class are now mapped to a location of the same (lower case) name, when the header is validated by the object write APIs. IAM policies are evaluated before that (by Vault, on the signed header), so they apply to the storage class as sent by the client; bucket policies are evaluated afterwards, so they apply to the location name. Conversely, an object stored in a location named after one of these classes is reported with the AWS name in HeadObject, GetObject, ListObjects(Versions), GetObjectAttributes, ListParts and ListMultipartUploads. Issue: CLDSRV-988
Veeam only offers a bucket as an on-premises archive tier when its system.xml declares the EnableOnPremArchiveTier capability. The field is now part of the SOSAPI schema. Whether the archive tier can actually be used depends on the deployment: Veeam writes to it with the GLACIER storage class, which needs direct-to-cold writes and a cold location named glacier. This can change after system.xml was written, so the served value is computed on read: what is supported when the field is not set, and otherwise the stored value, still restricted to what is supported. Setting it to true is rejected when not supported, rather than silently serving false. Issue: CLDSRV-988
RestoreObject rejected the Bulk and Expedited tiers with NotImplemented, although there is nothing to implement: the restore from a cold location is the same whatever the tier, which is only an AWS pricing/latency option. Veeam (and any client exposing the option) could not restore from the archive tier with a non-default tier. All three tiers are now accepted, and ignored. Issue: CLDSRV-988
Issue: CLDSRV-988
bb1089d to
76eed95
Compare
|
/approve |
|
I have successfully merged the changeset of this pull request
The following branches have NOT changed:
This pull request did not target the following hotfix branch(es) so they
Please check the status of the associated issue CLDSRV-988. Goodbye francoisferrand. The following options are set: approve |
Veeam and the AWS CLI only know the official S3 storage classes, so there was no way for them to write directly to a cold location: locations have lower case names, and our UI does not let you create one named
GLACIERanyway. This makes the Veeam archive tier (and basic testing with the CLI) impossible.The PR fills the gap:
GLACIERandDEEP_ARCHIVEare accepted as storage classes and resolve to the cold location of the same name (glacier,deep_archive). Objects stored there are reported back with the AWS name, so clients see what they sent. Internally nothing changes: metadata keeps the location name, and the transition works as before.system.xmlcan carry theEnableOnPremArchiveTiercapability. What Veeam gets told reflects what the deployment actually supports (direct-to-cold enabled, and aglaciercold location) rather than a value frozen when the file was written, and trying to enable it on a deployment that cannot do it is refused.BulkandExpeditedtiers instead of answering NotImplemented. Veeam may send them; they don't make no difference for us (a restore is a restore), so they are simply ignored.A note on policies: IAM policies see the storage class as sent (
GLACIER), bucket policies see the location name (glacier), because the former are evaluated on the signed request before we touch the header and the latter afterwards.Issue: CLDSRV-988