41bf72a5cc5dbda1192732930c78a1fd91282f98
1433 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
Christian Ohanaja
|
bd27fc6baf |
cleaning up and fixing some links
Verified every changed link works by building and testing manually Change-Id: I4bb6cc238d4e567e3edc6c15a58d4a5f9a41e273 Signed-off-by: Christian Ohanaja <cohanaja@nvidia.com> |
||
|
Zuul
|
e10c2bafcb | Merge "proxy-logging: create field for access_user_id" | ||
|
Vitaly Bordyug
|
32eaab20b1 |
proxy-logging: create field for access_user_id
Added the new field to be able to log the access key during the s3api calls, while reserving the field to be filled with auth relevant information in case of other middlewares. Added respective code to the tempauth and keystone middlewares. Since s3api creates a copy of the environ dict for the downstream request object when translating the s3req.to_swift_req the environ dict that is seen/modifed in other mw module is not the same instance seen in proxy-logging - using mutable objects get transfered into the swift_req.environ. Change the assert in test_proxy_logging from "the last field" to the index 21 in the interests of maintainability. Also added some regression tests for object, bucket and s3 v4 apis and updated the documentation with the details about the new field. Signed-off-by: Vitaly Bordyug <vbordug@gmail.com> Change-Id: I0ce4e92458e2b05a4848cc7675604c1aa2b64d64 |
||
|
Tim Burke
|
aa3a4eeb27 |
docs: Fix python3 package names
Closes-Bug: #2120783 Signed-off-by: Tim Burke <tim.burke@gmail.com> Change-Id: Id175329d717bb4959def8b43765fec668aa26696 |
||
|
Tim Burke
|
ae062f8b09 |
ring: Introduce a v2 ring format
There's a bunch of moving pieces here: - Add a new RingWriter class. Stick it in a new swift.common.ring.io module. You *can* use it like the old gzip file, but you can also define named sections which can be referenced later on read. Section names may be arbitrary strings, but the "swift/" prefix is reserved for upstream use. Sections must contain a single length-value encoded BLOB. If sections are used, an additional BLOB is written at the end containing a JSON section-index, followed by an uncompressed offset for the index. Move RingReader to ring/io.py, too. - Clean up some ring metadata handling: - Drop MD5 tracking in RingReader. It was brittle at best anyway, and nothing uses it. YAGNI - Fix size/raw_size attributes when loading only metadata. - Add the ability to seek within RingReaders, though you need to know what you're doing and only seek to flush points. - Let RingBuilder objects change how wide their replica2part2dev_id arrays are. Add a dev_id_bytes key to serialized ring metadata. dev_id_bytes may be either 2 or 4, but 4 requires v2 rings. We considered allowing dev_id_bytes of 1, but dropped it as unnecessary complexity for a niche use case. - swift-ring-builder version subcommand added, which takes a ring. This lets operators see the serialization format of a ring on disk: $ swift-ring-builder object.ring.gz version object.ring.gz: Serialization version: 2 (2-byte IDs), build version: 54 Signed-off-by: Tim Burke <tim.burke@gmail.com> Change-Id: Ia0ac4ea2006d8965d7fdb6659d355c77386adb70 |
||
|
Tim Burke
|
be56c1e258 |
s3api: Validate additional checksums on upload
See https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html for some background. This covers both "normal" objects and part-uploads for MPUs. Note that because we don't write down any client-provided checksums during initiate-MPU calls, we can't do any verification during complete-MPU calls. crc64nvme checksums are not yet supported; clients attempting to use them will get back 501s. Adds crt as a boto3 extra to test-requirements. The extra lib provides crc32c and crc64nvme checksum support in boto3. Co-Authored-By: Ashwin Nair <ashnair@nvidia.com> Co-Authored-By: Alistair Coles <alistairncoles@gmail.com> Signed-off-by: Tim Burke <tim.burke@gmail.com> Signed-off-by: Alistair Coles <alistairncoles@gmail.com> Change-Id: Id39fd71bc59875a5b88d1d012542136acf880019 |
||
|
Zuul
|
b2a0d96f6d | Merge "Update SAIO document" | ||
|
Takashi Kajinami
|
89ad202f73 |
Update SAIO document
The existing doc is quite outdated and is based on ancient versions. Update it according to the following points, so that it works in recent versions. * Use python3- packages instead of python-/python2- packages * xinetd is no longer available in recent CentOS * Remove old unused test dependencies such as nose and mock * Remove netifaces which is no longer a hard dependency Change-Id: I8bf87f858406dc1a32139a0071b53cfb90864108 |
||
|
Zuul
|
84a70769b1 |
Merge "s3api: Allow PUT with if-none-match: *"
|
||
|
Tim Burke
|
edd5eb29d7 |
s3api: Allow PUT with if-none-match: *
Swift already supports that much, at least. AWS used to not support any conditional PUTs, but that's changed somewhat recently; see - https://aws.amazon.com/about-aws/whats-new/2024/08/amazon-s3-conditional-writes/ - https://aws.amazon.com/about-aws/whats-new/2024/11/amazon-s3-functionality-conditional-writes/ Drive-By: Fix retry of a CompleteMultipartUpload with changed parts; it should 404 rather than succeed in writing the new manifest. Change-Id: I2e57dacb342b5758f16b502bb91372a2443d0182 |
||
|
Ivan Anfimov
|
296e894f79 |
Remove installation guide for openSUSE/SLES
openSUSE stopped providing OpenStack packages some time ago. Co-authored-by: Takashi Kajinami <kajinamit@oss.nttdata.com> Change-Id: I60fcbac1cb6ec370de565903375be411e8fc3415 |
||
|
Clay Gerrard
|
0e2791a88a |
Remove deprecated statsd label_mode
Hopefully if we never do a release that supports signalfx no one will ever use it and we won't have to maintain it. Drive-by: refactor label model dispatch to fix a weird bug where a config name could be a class attribute and blow up weird. Change-Id: I2c67b59820c5ca094077bf47628426f4b0445ba0 |
||
|
Tim Burke
|
7e5235894b |
stats: API for native labeled metrics
Introduce a LabeledStatsdClient API; no callers yet. Include three config options: - statsd_label_mode, which specifies which label format to use - statsd_emit_legacy, which dictates whether to emit old-style metrics dotted metrics - statsd_user_label_<name> = <value>, which supports user defined labels in restricted ASCII characters Co-Authored-By: yanxiao@nvidia.com Co-Authored-By: alistairncoles@gmail.com Change-Id: I115ffb1dc601652a979895d7944e011b951a91c1 |
||
|
Zuul
|
73201cc12d | Merge "Deprecate expirer options" | ||
|
Clay Gerrard
|
b69a2bef45 |
Deprecate expirer options
The following configuration options are deprecated: * expiring_objects_container_divisor * expiring_objects_account_name The upstream maintainers are not aware of any clusters where these have been configured to non-default values. UpgradeImpact: Operators are encouraged to remove their "container_divisor" setting and use the default value of 86400. If a cluster was deployed with a non-standard "account_name", operators should remove the option from all configs so they are using a supported configuration going forward, but will need to deploy stand-alone expirer processes with legacy expirer config to clean-up old expiration tasks from the previously configured account name. Co-Authored-By: Alistair Coles <alistairncoles@gmail.com> Co-Authored-By: Jianjian Huo <jhuo@nvidia.com> Change-Id: I5ea9e6dc8b44c8c5f55837debe24dd76be7d6248 |
||
|
Tim Burke
|
0dfa38d025 |
docs: Fix version call-out for stale_worker_timeout
Related-Change: I8227939d04fda8db66fb2f131f2c71ce8741c7d9 Change-Id: I149a2df2d942bba02049947865b000c9cf1a89bc |
||
|
Tim Burke
|
ae6300af86 |
wsgi: Reap stale workers (after a timeout) following a reload
Add a new tunable, `stale_worker_timeout`, defaulting to 86400 (i.e. 24 hours). Once this time elapses following a reload, the manager process will issue SIGKILLs to any remaining stale workers. This gives operators a way to configure a limit for how long old code and configs may still be running in their cluster. To enable this, the temporary reload child (which waits for the reload to complete then closes the accept socket on all the old workers) has grown the ability to send state to the re-exec'ed manager. Currently, this is limited to just the set of pre-re-exec child PIDs and their reload times, though it was designed to be reasonably extensible. This allows the new manager to recognize stale workers as they exit instead of logging Ignoring wait() result from unknown PID ... With the improved knowledge of subprocesses, we can kick the log level for the above message up from info to warning; we no longer expect it to trigger in practice. Drive-by: Add logging to ServersPerPortStrategy.register_worker_exit that's comparable to what WorkersStrategy does. Change-Id: I8227939d04fda8db66fb2f131f2c71ce8741c7d9 |
||
|
Tim Burke
|
128124cdd8 |
Remove py2-only code paths
Change-Id: Ic66b9ae89837afe31929ce07cc625dfc28314ea3 |
||
|
Zuul
|
06e09b9ece | Merge "Drop py2 support" | ||
|
Tim Burke
|
7367907c58 |
Drop py2 support
* Remove py2 gate jobs. * Build non-universal, py3-only wheels. * Specify minimum python version in package metadata. * Clean up requirements/constraints/bindep (a little, anyway). Change-Id: I53153c4fde043e964e1daa7bbf2089e0471dede2 |
||
|
ngcjny
|
17f77b2d76 |
docs: Changed OS version to RHEL 9 and CentOS Stream 9.
Changed OS version from RHEL 7 and CentOS 7 to RHEL 9 and CentOS Stream 9. Changed python to python3. Changed yum command to dnf command. Change-Id: Ie1e815c0434255e77ef5e9103576f85d9d6490ae |
||
|
Zuul
|
71696d3a83 | Merge "Remove PrefixLoggerAdapter and SwiftLoggerAdapter" | ||
|
Shreeya Deshpande
|
f88efdb4df |
Remove PrefixLoggerAdapter and SwiftLoggerAdapter
In order to modernize swift's statsd configuration we're working to separate it from logging. This change is a pre-requisite for the Related-Change in order to simplfy the stdlib base logger instance wrapping in a single extended SwiftLogAdapter (previously LogAdapter) which supports all the features swift's servers/daemons need from our logger instance interface. Related-Change-Id: I44694b92264066ca427bb96456d6f944e09b31c0 Change-Id: I8988c0add6bb4a65cc8be38f0bf527f141aac48a |
||
|
Zuul
|
38556600d7 | Merge "docs: add new utils modules to source doc" | ||
|
Clay Gerrard
|
df22032d79 |
object-expirer: add round_robin_cache_size option
Drive-Bys: * DRY out redundent configuration examples in expiring objects overview documentation. * Add missing delay_reaping man page docs. Co-Authored-By: Alistair Coles <alistairncoles@gmail.com> Change-Id: I8879dbd13527233c878dff764ec411ce9619ee39 |
||
|
Alistair Coles
|
c877efb7ec |
docs: add new utils modules to source doc
Some submodules have previously been broken out of the utils module. This patch adds automodule directives for the new modules to the source documentation. Change-Id: I985205fda95f01d226e81dcbfe0d6dbbb5b69c96 Related-Change: Ic4b5005e3efffa8dba17d91a41e46d5c68533f9a |
||
|
Takashi Natsume
|
29b0e478a7 |
Replace deprecated datetime.utcfromtimestamp()
The datetime.utcfromtimestamp() is deprecated in Python 3.12. Replace datetime.utcfromtimestamp() with datetime.fromtimestamp(). Change-Id: I01d6b94de394413aa13a045ab2c36504e65a6f5a Signed-off-by: Takashi Natsume <takanattie@gmail.com> |
||
|
Zuul
|
6a0153f545 | Merge "docs: Simplify reload-process-tree SVGs" | ||
|
Tim Burke
|
2e11ac32da |
docs: Simplify reload-process-tree SVGs
Those were so unwieldy as to be uneditable before. Change-Id: Ic9f4a0ea6b8e18e1624c516890ab69884a299773 |
||
|
Tim Burke
|
5be20f46df |
CI: update known failures for the ceph tests
For some reason, when we switched from py36 on centos8 to py39 on centos9, these two tests started failing. Looks like a disagreement about whether the canonical path for a bucket request should have a trailing slash or not. Mark them as known-failures for now so we can stay aware of any other new breakage brought on by swift code changes. Related-Change: I4f6b9c07af7bc768654f1a5d0c66b048e0f2c9c1 Change-Id: If990752c7ef7667182dbe18e49679e48c0e3d42d |
||
|
Zuul
|
82debd2cda | Merge "docs: Add tempurl/formpost metrics" | ||
|
Tim Burke
|
a3ee04152d |
docs: Update further-reading URL for cross-domain policies
The old one now just redirects to https://developer.adobe.com/ Change-Id: Iba281bb8dceedef9bbb702abf0b93473bf91d9f7 |
||
|
indianwhocodes
|
11eb17d3b2 |
support x-open-expired header for expired objects
If the global configuration option 'enable_open_expired' is set to true in the config, then the client will be able to make a request with the header 'x-open-expired' set to true in order to access an object that has expired, provided it is in its grace period. If this config flag is set to false, the client will not be able to access any expired objects, even with the header, which is the default behavior unless the flag is set. When a client sets a 'x-open-expired' header to a true value for a GET/HEAD/POST request the proxy will forward x-backend-open-expired to storage server. The storage server will allow clients that set x-backend-open-expired to open and read an object that has not yet been reaped by the object-expirer, even after the x-delete-at time has passed. The header is always ignored when used with temporary URLs. Co-Authored-By: Anish Kachinthaya <akachinthaya@nvidia.com> Related-Change: I106103438c4162a561486ac73a09436e998ae1f0 Change-Id: Ibe7dde0e3bf587d77e14808b169c02f8fb3dddb3 |
||
|
Mandell Degerness
|
5961ba0ca7 |
expirer: account and container level delay_reaping
The object expirer can be configured to delay the reaping of objects from disk after their expiration time using account and container level delay_reaping values. The delay_reaping value of accounts and containers in seconds is configured in the object server config. The object expirer references these configured values to only reap objects from specified accounts and containers after their corresponding delays. The goal of the delay_reaping feature is to prevent accidental or premature data loss if an object marked for deletion with the 'x-delete-at' feature should not be reaped immediately, for whatever reason. Configuring the delay_reaping value at a granular account and container level is beneficial for being able to keep storage capacity consumption in control while maintaining a desired data recovery window. This patch also adds a sample configuration, documentation, and tests for bad configurations and grace period functionality. Co-Authored-By: Anish Kachinthaya <akachinthaya@nvidia.com> Change-Id: I106103438c4162a561486ac73a09436e998ae1f0 |
||
|
Alistair Coles
|
cc27780042 |
docs: add discussion of content-type metadata
Change-Id: I2aa13e2b23bda86c51ef6aaa69ea3fd0075bb9ad |
||
|
Clay Gerrard
|
5af7719ef3 |
Support swift.proxy_logging_status in request env
When logging a request, if the request environ has a swift.proxy_logging_status item then use its value for the log message status int. The swift.proxy_logging_status hint may be used by other middlewares when the desired logged status is different from the wire_status_int. If the proxy_logging middleware detects a client disconnect then any swift.proxy_logging_status item is ignored and a 499 status int is logged, as per current behaviour. i.e.: * client disconnect overrides swift.proxy_logging_status and the response status * swift.proxy_logging_status overrides the response status If the proxy_logging middleware catches an exception then the logged status int will be 500 regardless of any swift.proxy_logging_status item. Co-Authored-By: Alistair Coles <alistairncoles@gmail.com> Change-Id: I9b5cc6d5fb69a2957b8c4846ce1feed8c115e6b6 |
||
|
Zuul
|
966340aeed | Merge "Remove per-service auto_create_account_prefix" | ||
|
Takashi Kajinami
|
49b19613d2 |
Remove per-service auto_create_account_prefix
The per-service option was deprecated almost 4 years ago[1].
[1]
|
||
|
Tim Burke
|
c94e1c1513 |
docs: Document WSGI server process management
Talk about graceful shutdowns, seamless reloads, and the swift-reload helper. Change-Id: I9c86d1ce9853840d73e2107a6d79b2454c21438a |
||
|
Tim Burke
|
fcf1110ab2 |
CI: Fix some known-failure formatting
Related-Change: Icff8cf57474dfad975a4f45bf2d500c2682c1129 Change-Id: Ic2283fab0d18ea03c6beb353c6b934344606c15e |
||
|
Matthew Oliver
|
0996433fe5 |
s3api: Add basic GET object-lock support
Some tooling out there, like Ansible, will always call to see if object-lock is enabled on a bucket/container. This fails as Swift doesn't understand the object-lock or the get object lock api[0]. When you use the get-object-lock-configuration to a bucket in s3 that doesn't have it applied it returns a specific 404: GET /?object-lock HTTP/1.1" 404 None ... <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>ObjectLockConfigurationNotFoundError</Code> <Message>Object Lock configuration does not exist for this bucket</Message> <BucketName>bucket_name</BucketName> <RequestId>83VQBYP0SENV3VP4</RequestId> </Error>' This patch doesn't add support for get_object lock, instead it always returns a similar 404 as supplied by s3, so clients know it's not enabled. Also add a object-lock PUT 501 response. [0] https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html Change-Id: Icff8cf57474dfad975a4f45bf2d500c2682c1129 |
||
|
Jake Yip
|
8a2c8b128b |
Update doc for include_service_catalog with app cred
If swift is used with an Application Credential with access_rules [1], the catalog needs to be sent with the token for it to be evaluated by keystonemiddleware. [1]: https://docs.openstack.org/keystone/2023.1/user/application_credentials.html#access-rules Change-Id: I0b02821722ffc819bc8a97281a33391072242ffc |
||
|
Tim Burke
|
0c9b545ea7 |
docs: Clean up proxy logging docs
Change-Id: I6ef909e826d3901f24d3c42a78d2ab1e4e47bb64 |
||
|
Zuul
|
1f9937b245 | Merge "docs/SAIO: Make reconciler use the SAIO convention for logs" | ||
|
Pete Zaitcev
|
27120b0523 |
docs/SAIO: Make reconciler use the SAIO convention for logs
Personally I'm not a big fan of how we arrange logs for SAIO, but it is a historic standard. The reconciler has to conform. Change-Id: I45a25ff406b31b6b1b403e213554aaabfebc6eb5 |
||
|
Pete Zaitcev
|
dd664c47db |
doc/SAIO: Update the Fedora section
The never ending changes in package names march on. This is for Fedora 38. Change-Id: Idffd1df7e2f23681eb7d7bf1717471b594612dbc |
||
|
Alistair Coles
|
8e051c5b8e |
docs: Fix link to sphinx project page
Change-Id: I5e75a359660315a34ec36f5cb748808257f4185a |
||
|
Jianjian Huo
|
cb1e584e64 |
Object-server: keep SLO manifest files in page cache.
Currently, SLO manifest files will be evicted from page cache after reading it, which cause hard drives very busy when user requests a lot of parallel byte range GETs for a particular SLO object. This patch will add a new config 'keep_cache_slo_manifest', and try keeping the manifest files in page cache by not evicting them after reading if config settings allow so. Co-Authored-By: Tim Burke <tim.burke@gmail.com> Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Co-Authored-By: Alistair Coles <alistairncoles@gmail.com> Change-Id: I557bd01643375d7ad68c3031430899b85908a54f |
||
|
Tim Burke
|
9b8e5a5c95 |
docs: Add tempurl/formpost metrics
Change-Id: I04478c44957032e911069bcd4859caf3baaddb63 |
||
|
Tim Burke
|
1f298714af |
docs: Format metrics in fixed-width font, not italics
Change-Id: I6fc9eaf0903bdbe4ccb82c4e7647478a1eef9785 |