Add transaction id to errors to help troubleshoot, including error
when downloading object with truncted/missing segment, stat'ing or
listing non-existent container.
Change response headers returned by client.py Connection APIs
such as get_object() from lowercase dict to CaseInsensitiveDict,
as some error paths rely on this to retrieve the transaction id,
while there are existing code paths using response.headers which
is CaseInsensitiveDict from requests lib.
Change-Id: Ice9cc9fe68684563f18ee527996e5a4292230a96
Without up-reving hacking python 3.12 can't be used for pep8/flake8
checks. Also address a few new pyflakes issues that seem reasonable
to enforce:
E275 missing whitespace after keyword
H214 Use assertIn/NotIn(A, B) rather than
assertTrue/False(A in/not in B)
H211 do not compare types, use assert{Is,IsNot}Instance
Add F811 (redefinition of unused 'function'), as this check makes
client.py fail.
And noqa some longer lines that we're happy to carry.
Change-Id: Ic97698a310ffe7114b668b8c4bc0195f6997bb45
...provided it isn't something to do with certification validation.
Closes-Bug: #1641363
Closes-Bug: #2011731
Change-Id: Ic3acbf431e444fcd8bc0fe79571fe2db4140cf22
We have seen middlewares that return ratelimit responses as 498 or 429,
so tolerate either.
Closes-Bug: #1879572
Change-Id: I027222157f6c2ad7882a0508302c9de097baae4c
UpgradeImpact
=============
The Connection class now enables retry_on_ratelimit by default.
If you need to return to the old behavior, explicitly pass
retry_on_ratelimit=False as a keyword arg.
The SwiftService class will now enables the retry_on_ratelimit option by
default. If you need to return to the old behavior, explicitly set it to
false in your options dict.
Change-Id: I3221fda84f0b8031c50128aa600e2c19deb5b102
Since Python 3.4, the unittest module has provided mock, negating the
need for the external dependancy. Switch to using unittest.mock.
Change-Id: Idec3aaed2fddd1ece3ed86ee0bcc48f7616d56fa
All strings are unicode by default in Python 3. No need to mark them as
such.
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Change-Id: I68fb60ef271abfddebcc9d2137424f5db2a17e92
All classes subclass from object by default in Python 3.
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Change-Id: I5a1ad57bcc092861ce969759b06a07c880ad3d35
This mostly affects tests. Nothing too complicated
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Change-Id: Iabc78f651e1d48db35638280722f8019798eccd6
This also upgrades the Requests dependency to 2.4+ (released in 2014)
to avoid having to do version comparisons altogether.
Refs https://bugs.launchpad.net/python-swiftclient/+bug/1904551
Signed-off-by: Aarni Koskela <akx@iki.fi>
Change-Id: I58399f6c526b0b78462f31739c43076314ba9e76
There's a lot of cleanup possible, but this is a start.
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Change-Id: Ia1176b7fd5434d52070d482a37abfbb98800cdb3
It's fairly annoying getting a traceback in swift's probe tests then
only having a URL and status code to go searching for in logs.
Leave the shell.py output untouched, though, since we output the
transaction ID on a new line anyway.
Change-Id: Idb849848ec08b6c04812b088467c9a687c2a7e27
It fixes get_capabilities() method to process
correctly endpoints like: 'https://<ip>:<port>/v1',
'https://<ip>:<port>/swift/v1'.
Co-Authored-By: Daniel Cech <dcech@mirantis.com>
Change-Id: Ib4037d0b49da1bce959947100629370805f510d5
Closes-bug: #1712358
In addition to being less confusing for devs, this lets us actually run
tempauth tests in swiftclient dsvm jobs.
The job definition (over in the swift repo) specifies test/sample.conf,
which does not exist in this repo. As a result, those tests would skip
with
SKIPPING FUNCTIONAL TESTS DUE TO NO CONFIG
Change-Id: I558dbf9a657d442e6e19468e543bbec855129eeb