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
We've had SLO for nearly ten years, and it is preferable for most
use-cases. It's time to default to SLO rather than DLO.
Add a new --use-dlo option to give users a way to return to old
behavior; ensure there is still a --use-slo option so we don't break
existing scripts that may use it.
UpgradeImpact:
==============
The default segmented-upload behavior has changed; Static Large Objects
are now used by default rather than Dynamic Large Objects. To revert to
the old behavior:
* CLI users may use the new `--use-dlo` option
* Service API users may explicitly set `use_slo` to False in their
options dicts
Change-Id: Iebcd64ced8eab6efebb9f02a0c4be6bf6338cb3b
If the received content-length does not match expectations, of course
the etag won't match!
Co-Authored-By: Alistair Coles <alistairncoles@gmail.com>
Change-Id: I1a0c066c11b94718fffbb11e13b82d0b16e01626
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
This mostly affects tests. Nothing too complicated
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Change-Id: Iabc78f651e1d48db35638280722f8019798eccd6
These aren't needed in modern Python 3 versions.
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Change-Id: I5e81d6fb2e2cb8e4bfae4ed746da002f44e871c4
* add --versions to list
* add --versions to delete
* add --version-id to stat
* add --version-id to delete
* add --version-id to download
Change-Id: I89802064921778fee7efe57c7d60c976cdde3a27
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