c581f85b7f6255895e5e58c40dbb394e331637c3
31 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
Tim Burke
|
0c9b545ea7 |
docs: Clean up proxy logging docs
Change-Id: I6ef909e826d3901f24d3c42a78d2ab1e4e47bb64 |
||
|
Aymeric Ducroquetz
|
1831658b33 |
proxy-logging: Allow to add domain in log messages
Change-Id: Id441688aac1088041e243b8ee70710d9c5d7911b |
||
|
Clay Gerrard
|
fb08d477eb |
New proxy logging field for wire status
Capture the on the wire status code for logging because we change the logged status code sometimes. Closes-Bug: #1896518 Change-Id: I27feabe923a6520e983637a9c68a19ec7174a0df |
||
|
Tim Burke
|
e10af5d263 |
docs: Clarify request_time in storage logs
It does *not* include transfer time; it's just the time until response is started. Change-Id: I67c5c37c8c669e1e2de2cbfca8bcec02dc98659f |
||
|
Zuul
|
e73619b25a | Merge "proxy-logging: add fields ttfb and pid" | ||
|
Romain LE DISEZ
|
d8821c75bd |
proxy-logging: add fields ttfb and pid
Change-Id: I1611e34846e586703e9d3709fa64e8df41f2d685 |
||
|
Romain LE DISEZ
|
27fd97cef9 |
Middleware that allows a user to have quoted Etags
Users have complained for a while that Swift's ETags don't match the expected RFC formats. We've resisted fixing this for just as long, worrying that the fix would break innumerable clients that expect the value to be a hex-encoded MD5 digest and *nothing else*. But, users keep asking for it, and some consumers (including some CDNs) break if we *don't* have quoted etags -- so, let's make it an option. With this middleware, Swift users can set metadata per-account or even per-container to explicitly request RFC compliant etags or not. Swift operators also get an option to change the default behavior cluster-wide; it defaults to the old, non-compliant format. See also: - https://tools.ietf.org/html/rfc2616#section-3.11 - https://tools.ietf.org/html/rfc7232#section-2.3 Closes-Bug: 1099087 Closes-Bug: 1424614 Co-Authored-By: Tim Burke <tim.burke@gmail.com> Change-Id: I380c6e34949d857158e11eb428b3eda9975d855d |
||
|
Clay Gerrard
|
2759d5d51c |
New Object Versioning mode
This patch adds a new object versioning mode. This new mode provides a new set of APIs for users to interact with older versions of an object. It also changes the naming scheme of older versions and adds a version-id to each object. This new mode is not backwards compatible or interchangeable with the other two modes (i.e., stack and history), especially due to the changes in the namimg scheme of older versions. This new mode will also serve as a foundation for adding S3 versioning compatibility in the s3api middleware. Note that this does not (yet) support using a versioned container as a source in container-sync. Container sync should be enhanced to sync previous versions of objects. Change-Id: Ic7d39ba425ca324eeb4543a2ce8d03428e2225a1 Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Co-Authored-By: Tim Burke <tim.burke@gmail.com> Co-Authored-By: Thiago da Silva <thiagodasilva@gmail.com> |
||
|
Zuul
|
f97c34d77d | Merge "Set swift_source more in s3api middleware" | ||
|
Tim Burke
|
da4e07164e |
Set swift_source more in s3api middleware
Change-Id: I89f3a4b5a3a8c160afb298aad726acce09c65265 |
||
|
Tim Burke
|
c35ab2e1d8 |
Set swift_source in account_quotas middleware
Change-Id: Ib54a65a920fc335c1e0a496cb91c0de3003e2cc5 |
||
|
Gilles Biannic
|
a4cc353375 |
Make log format for requests configurable
Add the log_msg_template option in proxy-server.conf and log_format in a/c/o-server.conf. It is a string parsable by Python's format() function. Some fields containing user data might be anonymized by using log_anonymization_method and log_anonymization_salt. Change-Id: I29e30ef45fe3f8a026e7897127ffae08a6a80cd9 |
||
|
John Dickinson
|
11e81cfc8f |
added note about double url quoting
Change-Id: I196fc4212b5405c410c9bfb850cd0d4737094c47 |
||
|
Greg Lange
|
5d601b78f3 |
Adds read_only middleware
This patch adds a read_only middleware to swift. It gives the ability to make an entire cluster or individual accounts read only. When a cluster or an account is in read only mode, requests that would result in writes to the cluser are not allowed. DocImpact Change-Id: I7e0743aecd60b171bbcefcc8b6e1f3fd4cef2478 |
||
|
Alistair Coles
|
5c5b08d047 |
Add container sharding documentation
Co-Authored-By: Matthew Oliver <matt@oliver.net.au> Co-Authored-By: Tim Burke <tim.burke@gmail.com> Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Co-Authored-By: John Dickinson <me@not.mn> Change-Id: I0693e54c1d7f3b77f53c3df5c616a16f74723b97 |
||
|
Robert Francis
|
99b89aea10 |
Symlink implementation.
Add a symbolic link ("symlink") object support to Swift. This
object will reference another object. GET and HEAD
requests for a symlink object will operate on the referenced object.
DELETE and PUT requests for a symlink object will operate on the
symlink object, not the referenced object, and will delete or
overwrite it, respectively.
POST requests are *not* forwarded to the referenced object and should
be sent directly. POST requests sent to a symlink object will
result in a 307 Error.
Historical information on symlink design can be found here:
https://github.com/openstack/swift-specs/blob/master/specs/in_progress/symlinks.rst.
https://etherpad.openstack.org/p/swift_symlinks
Co-Authored-By: Thiago da Silva <thiago@redhat.com>
Co-Authored-By: Janie Richling <jrichli@us.ibm.com>
Co-Authored-By: Kazuhiro MIYAHARA <miyahara.kazuhiro@lab.ntt.co.jp>
Co-Authored-By: Kota Tsuyuzaki <tsuyuzaki.kota@lab.ntt.co.jp>
Change-Id: I838ed71bacb3e33916db8dd42c7880d5bb9f8e18
Signed-off-by: Thiago da Silva <thiago@redhat.com>
|
||
|
Prashanth Pai
|
46d61a4dcd |
Refactor server side copy as middleware
Rewrite server side copy and 'object post as copy' feature as middleware to simplify the PUT method in the object controller code. COPY is no longer a verb implemented as public method in Proxy application. The server side copy middleware is inserted to the left of dlo, slo and versioned_writes middlewares in the proxy server pipeline. As a result, dlo and slo copy_hooks are no longer required. SLO manifests are now validated when copied so when copying a manifest to another account the referenced segments must be readable in that account for the manifest copy to succeed (previously this validation was not made, meaning the manifest was copied but could be unusable if the segments were not readable). With this change, there should be no change in functionality or existing behavior. This is asserted with (almost) no changes required to existing functional tests. Some notes (for operators): * Middleware required to be auto-inserted before slo and dlo and versioned_writes * Turning off server side copy is not configurable. * object_post_as_copy is no longer a configurable option of proxy server but of this middleware. However, for smooth upgrade, config option set in proxy server app is also read. DocImpact: Introducing server side copy as middleware Co-Authored-By: Alistair Coles <alistair.coles@hpe.com> Co-Authored-By: Thiago da Silva <thiago@redhat.com> Change-Id: Ic96a92e938589a2f6add35a40741fd062f1c29eb Signed-off-by: Prashanth Pai <ppai@redhat.com> Signed-off-by: Thiago da Silva <thiago@redhat.com> |
||
|
Thiago da Silva
|
035a411660 |
versioned writes middleware
Rewrite object versioning as middleware to simplify the PUT method in the object controller. The functionality remains basically the same with the only major difference being the ability to now version slo manifest files. dlo manifests are still not supported as part of this patch. Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> DocImpact Change-Id: Ie899290b3312e201979eafefb253d1a60b65b837 Signed-off-by: Thiago da Silva <thiago@redhat.com> Signed-off-by: Prashanth Pai <ppai@redhat.com> |
||
|
Atsushi SAKAI
|
964869accc |
Fix six typos on swift documentation
mechanisim => mechanism http://docs.openstack.org/developer/swift/cors.html overridde => override http://docs.openstack.org/developer/swift/deployment_guide.html extentsions => extensions http://docs.openstack.org/developer/swift/development_ondisk_backends.html reuqest => request http://docs.openstack.org/developer/swift/logs.html suport => support http://docs.openstack.org/developer/swift/overview_architecture.html mininum => minimum http://docs.openstack.org/developer/swift/overview_erasure_code.html $ git diff | diffstat cors.rst | 2 +- deployment_guide.rst | 2 +- development_ondisk_backends.rst | 2 +- logs.rst | 2 +- overview_architecture.rst | 2 +- overview_erasure_code.rst | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) Change-Id: I8e095f4c216b2cfae48dff1e17d387048349f73c Closes-Bug: #1477877 |
||
|
John Dickinson
|
7acc291129 |
added swift_source to ratelimit info calls
Change-Id: I2b4ccb809c0f4505098e261f546f53c27440dd43 |
||
|
Daisuke Morita
|
afdbf73f12 |
Output logs of policy index
To make it easier for Swift operators to specify problematic devices, a policy index will be recorded in log files of proxy and storage servers for each user request which is related to storage policy. This patch simply adds 'storage_policy_index' field in a log format. If there is no specified policy index, '-' is output in this field. Extra fix: Doc about the log line of storage nodes now properly reflects 'server_pid' field. DocImpact Change-Id: I7286ae85bcbcec73b5377dc115cbdb0f57d1b025 Implements: blueprint logging-policy-number |
||
|
anc
|
a4f634bd89 |
Restrict keystone cross-tenant ACLs to IDs
The keystoneauth middleware supports cross-tenant access control using the syntax <tenant>:<user> in container ACLs, where <tenant> and <user> may currently be either a unique id or a name. As a result of the keystone v3 API introducing domains, names are no longer globally unique and are only unique within a domain. The use of unqualified tenant and user names in this ACL syntax is therefore not 'safe' in a keystone v3 environment. This patch modifies keystoneauth to restrict cross-tenant ACL matching to use only ids for accounts that are not in the default domain. For backwards compatibility, names will still be matched in ACLs when both the requesting user and tenant are known to be in the default domain AND the account's tenant is also in the default domain (the default domain being the domain to which existing tenants are migrated). Accounts existing prior to this patch are assumed to be for tenants in the default domain. New accounts created using a v2 token scoped on the tenant are also assumed to be in the default domain. New accounts created using a v3 token scoped on the tenant will learn their domain membership from the token info. New accounts created using any unscoped token, (i.e. with a reselleradmin role) will have unknown domain membership and therefore be assumed to NOT be in the default domain. Despite this provision for backwards compatibility, names must no longer be used when setting new ACLs in any account, including new accounts in the default domain. This change obviously impacts users accustomed to specifying cross-tenant ACLs in terms of names, and further work will be necessary to restore those use cases. Some ideas are discussed under the bug report. With that caveat, this patch removes the reported vulnerability when using swift/keystoneauth with a keystone v3 API. Note: to observe the new 'restricted' behaviour you will need to setup keystone user(s) and tenant(s) in a non-default domain and set auth_version = v3.0 in the auth_token middleware config section of proxy-server.conf. You may also benefit from the keystone v3 enabled swiftclient patch under review here: https://review.openstack.org/#/c/91788/ DocImpact blueprint keystone-v3-support Closes-Bug: #1299146 Change-Id: Ib32df093f7450f704127da77ff06b595f57615cb |
||
|
Jenkins
|
46d325d343 | Merge "Update doc for list_endpoints v2 API" | ||
|
anc
|
665c95331f |
Update doc for list_endpoints v2 API
Adds some v2 doc to list_endpoints module. Also adds LE to list of swift sources in logs.rst Change-Id: I6ccbcf677b12f5aa7db0f9d81e43ce5ca990cc57 |
||
|
Jenkins
|
8aefe579b4 | Merge "Object services user-agent string uses full name" | ||
|
John Dickinson
|
7ab2afe5bd |
added process pid to the end of storage node log lines
Change-Id: I1c2709d85575fc7d4868fafd9ee757fd01868436 |
||
|
Steven Lang
|
7573fbd498 |
Object services user-agent string uses full name
It does not appear that, aside from the user-agent string, the strings "obj-server", "obj-updater", or "obj-replicator" (or "obj-<anything>"*) appear in the swift code base, aside from the directory containing the object services code being named "obj". Furthermore, the container, account, and proxy services construct their user-agent string, as reported in the logs, using their full name. In addition, this full name also shows up as the name of the process via "ps" or "top", etc., which can make it easier for admins to match log entries with other tools. For consistency, we update the object services to use an "object-" prefix rather than "obj-" in its user agent string. * obj-etag does appear in a unit test, but not part of the regular code. Change-Id: I914fc189514207df2535731eda10cb4b3d30cc6c |
||
|
gholt
|
2d00f7b7ba |
New log_max_line_length option.
Log lines can get quite large, as we previously noticed with rsync error log lines. We added a setting to cap those, but it really looks like we should have just done this overall limit. We noticed the issue when we switched to UDP syslogging and it would occasionally blow past the 16436 lo MTU! This causes Python's logging code to get an error and hilarity ensues. Change-Id: I44bdbe68babd58da58c14360379e8fef8a6b75f7 |
||
|
Greg Lange
|
d32dc8d49c |
Unify backend logging
Make account, object, and container servers construct log lines using the same utility function so they will produce identically formatted lines. This change reorders the fields logged for the account server. This change also adds the "additional info" field to the two servers that didn't log that field. This makes the log lines identical across all 3 servers. If people don't like that, I can take that out. I think it makes the documentation, parsing of the log lines, and the code a tad cleaner. DocImpact Change-Id: I268dc0df9dd07afa5382592a28ea37b96c6c2f44 Closes-Bug: 1280955 |
||
|
John Dickinson
|
ab98fe3d74 |
Added docs about the swift_source log field
Change-Id: I934230a006c856de844d8580f3b57f38a9845844 |
||
|
John Dickinson
|
86903eab2c |
Documentation of the logs formats used in Swift
Change-Id: I402014627bab7113105a6a63c0b0ce1267735ca0 |