summaryrefslogtreecommitdiff
path: root/ChangeLog
blob: 501491bfd5a1df97bd43488c72588d8a083c184f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
3.8.1
-----

* Deleting or overwriting a symlink to an SLO or DLO will no longer attempt
  to clean up the large object's segments.

* Fixed an issue sending non-ASCII metadata keys on Python 3.
  Note that receiving such metadata on py3 is still broken;
  see https://bugs.python.org/issue37093

* Documentation can now be rendered as a PDF.

* Dropped Python 3.5 testing.


3.8.0
-----

* Added a new `--json` option to `swift list`.

* Fixed an issue introduced in 3.5.0 where re-uploading an SLO with
  the same size, mtime, and segment size would delete all of the
  just-uploaded segments.

* Various other minor bug fixes and improvements.


3.7.0
-----

* Added the delimiter keyword parameter to `get_account()` to match the
  functionality of `get_container()`.

* Fixed an issue in the client module where socket connections weren't
  closed properly before being dereferenced.

* Various other minor bug fixes and improvements.


3.6.0
-----

* Add the `--prompt` option for the CLI which will cause the user to be
  prompted to enter a password. Any password otherwise specified by
  `--key`, `--os-password` or an environment variable will be ignored.

* Added bash completion support to the `swift` CLI. Enable this by sourcing
  the included `tools/swift.bash_completion` file. Make it permanent by
  including this file in the system's `/etc/bash_completion.d` directory.

* Add ability to generate a temporary URL with an IP range restriction.
  TempURLs with IP restrictions are supported in Swift 2.19.0 or later.

* The client.py SDK now supports a `query_string` option on the
  `head_object()` method. This is useful for finding information on
  SLO/DLO manifests without fetching the entire manifest.

* The client.py SDK now respects `region_name` when using sessions.

* Added a `.close()` method to an object response, allowing clients to give
  up on reading the rest of the response body, if they so choose.

* Fixed a bug where using `--debug` in the CLI with unicode account names
  would cause a client crash.

* Make OS_AUTH_URL work in DevStack (for testing) by default.

* Dropped Python 3.4 testing.

* Various other minor bug fixes and improvements.


3.5.0
-----

* Allow for object uploads > 5GB from stdin.

  When uploading from standard input, swiftclient will turn the upload
  into an SLO in the case of large objects. By default, input larger
  than 10MB will be uploaded as an SLO with 10MB segment sizes. Users
  can also supply the ``--segment-size`` option to alter that
  threshold and the SLO segment size. One segment is buffered in
  memory (which is why 10MB default was chosen).

* The ``--meta`` option can now be set on the upload command.

* Updated PyPy test dependency references to be more accurate
  on different distros.

* Various other minor bug fixes and improvements.

3.4.0
-----

* The `swift` CLI now supports streaming from stdin. If "-" is given
  as the source, the object content is read from stdin. The
  `--object-name` must be given when content is loaded from stdin.

* Tolerate RFC-compliant ETags returned from the server.

* Skip checksum validation on partial downloads.

* Buffer reads from disk, resulting in much faster upload throughput.

* Added support for ISO 8601 timestamps for tempurl, matching the
  feature in Swift 2.13.0.

* Added an option to ignore mtime metadata entry (`--ignore-mtime`).

* When using SwiftService to delete many objects, the bulk delete page
  size will now be respected. Previously, exceeding this limit would
  prevent any objects from being deleted.

* Expose `--prefix` as an option for st_delete.

* Imported docs content from openstack-manuals project.

* Various other minor bug fixes and improvements.

3.3.0
-----

* Added support for prefix-based tempurls. This allows you to create a
  tempurl that is valid for all objects which share a given prefix and
  matches the feature in Swift 2.12.0 and later.

* In the SDK, we previously only accepted iterables of strings like
  'Header: Value'. Now, we'll also accept lists of tuples like
  ('Header', 'Value') as well as dictionaries like {'Header': 'Value'}.

* Improved help message strings

* Various other minor bug fixes and improvements.

3.2.0
-----

* Added Keystone session support and a "v1password" plugin for Keystone.
  This plugin provides a way for Keystone sessions (and clients that
  use them, like python-openstackclient) to communicate with old auth
  endpoints that still use this mechanism.

* HEAD, GET, and DELETE now support sending additional headers to match
  existing functionality on PUT requests.

* Various other minor bug fixes and improvements.

3.1.0
-----

* Added a copy object method.

* Arbitrary query strings can now be passed into container functions.

* Client certificate and key can now be specified via CLI
  options (--os-cert/--os-key) or environment variables ($OS_CERT/$OS_KEY).

* A new CLI option `--ignore-checksum` can be specified to turn off
  checksum validation. In the SDK, the new `checksum=True` parameter can
  be used for the same purpose.

* Added --json option to `swift capabilities` / `swift info`

* Default to v3 auth if we find a (user|project)-domain-(name|id) option.

* Added a Python version constraint of >= Py27.

* `client.py` will now retry on a 401 (auth error) even if `retries` is
  set to zero.

* Fixed `swift download` when `marker` was specified.

* Object segments uploaded via swiftclient are now given the content type
  "application/swiftclient-segment".

* "Directory marker" objects are now given a "application/directory"
  content type to match both Swift's `staticweb` feature and other
  ecosystem tools.

* Strip leading/trailing whitespace from headers (otherwise, new versions
  of the requests library will raise an InvalidHeader error). Additionally,
  header values with standard types (integer, float, or bool) are coerced
  to strings before being sent to a socket.

* Non-python dependencies are now specified in bindep.txt. Currently this
  only lists a single dependency for testing (PyPy), but if future
  dependencies are added, they will be included in this file.

* Client exceptions now include response headers. One benefit is that
  this allows clients to see transaction IDs without needing to turn on
  debug logging.

* Client connections now accept gzip-encoded responses.

* Various other minor bug fixes and improvements.

3.0.0
-----

* Python 2.6 and Python 3.3 support has been removed. Currently
  supported and tested versions of Python are Python 2.7 and Python 3.4.

* Do not reveal sensitive headers in swiftclient log messages by default.
  This is controlled by the client.logger_settings dictionary. Setting the
  `redact_sensitive_headers` key to False prevents the information hiding. If
  the value is True (the default), the `reveal_sensitive_prefix` controls
  the maximum length of any sensitive header value logged. The default is
  16 to match the default in Swift.

* Object downloads that fail partway through will now retry with a Range
  request to read the rest of the object.

* Object uploads will be retried if the source supports seek/tell or has a
  reset() method.

* Delete requests will use the cluster's bulk delete feature, if available,
  for requests that would require a lot of individual deletes.

* The delete CLI option now accepts a --prefix option to delete objects that
  start with the given prefix (similar to the same-named option for list).

* Add support for the auth-version to be specified using
  --os-identity-api-version or OS_IDENTITY_API_VERSION
  for compatibility with other openstack client command
  line options.

* --debug and --info command-line options now work anywhere in the command.

* Objects can now be uploaded to pseudo-directories with the CLI.

* Fixed an issue with uploading a large object that includes a unicode path.

* swiftclient can now auth against Keystone using only a project (tenant)
  and a token. This is useful when the client doesn't have access to the
  password for a user but otherwise has been granted access.

* Various other minor bug fixes and improvements.

2.7.0
-----

* This is the very last release to support Python 2.6. Any further
  development on the 2.7.x release series will only be for security bugfixes.

* Added content type to CLI object list long-form output

* client.get_container() and client.head_object now accept a headers parameter

* Fixed bug when setting Content-Type on upload from CLI

* Fixed bug when deleting DLOs with unicode characters

* Updated man pages and docstrings

* Suppress iso8601 logging in --debug output

* Various other minor bug fixes and improvements.

2.6.0
-----

* Several CLI options have learned short options. The usage strings have
  been updated to reflect this.

* Added --no-shuffle option to the CLI download command.

* Added --absolute option for CLI TempURL generation and the corresponding
  parameter to utils.generate_temp_url(). This allows for an exact, specific
  time to be used for the TempURL expiry time.

* CLI arguments are now always decoded as UTF-8.

* Stop Connection class modifying os_options parameter.

* Reduce memory usage for download/delete.

* The swift service API now logs and reports the traceback
  on failed operations.

* Increase httplib._MAXHEADERS to 256 to work around header limits in recent
  Python releases.

* Added minimal working service token support to client.py.

* Various other minor bug fixes and improvements.


2.5.0
-----

* The CLI learned an "auth" subcommand which returns bash environment
  snippets for auth credentials.

* The CLI --version option is now more explicit by calling itself
  "python-swiftclient" rather than the name of the binary.

* Now validates the checksum of each chunk of a large object as it is
  uploaded.

* Fixes uploading an object with a relative path.

* Added the ability to download objects to a particular folder.

* Now correctly removes all old segments of an object when replacing a
  Dynamic Large Object (DLO).

* The --skip-identical option now works properly when downloading
  large objects.

* The client.get_object() response learned a .read([length]) method.

* Fixed an issue where an intermediate caching/proxy service could cause
  object content to be improperly decoded.

* Added a timeout parameter to HTTPConnection objects for socket-level
  read timeouts.

* Removed a dependency on simplejson.

* Various other minor bug fixes and improvements.

2.4.0
-----

* Mention --segment-size option after 413 response
* Add improvements to MD5 validation
* Unindent a chunk of st_list
* Release connection after consuming the content
* Verify MD5 of uploaded objects
* Fix crash with -l, -d /, and pseudo folders
* add functional tox target
* Fix crash when stat'ing objects with non-ascii names
* Add help message for "<subcommand> --help"
* Fix missing ca-certificate parameter to get_auth
* Fix deleting SLO segments on overwrite
* This patch fixes downloading files to stdout
* Fix environment sanitization for TestServiceUtils
* Fix cross account upload using --os-storage-url
* Change tests to use CaptureOutput class
* Print info message about incorrect --totals usage when neither -l nor --lh is provided. Added test coverage for --totals
* Make preauth params work
* Fix misplaced check for None in SwiftUploadObject
* Fix misnamed dictionary key
* Change tests to use new CaptureOutput class
* Workflow documentation is now in infra-manual
* Show warning when auth_version >= 2 and keystoneclient is missing
* Capture test output better
* Suppress 'No handlers...' message from keystoneclient logger
* Add unit tests for _encode_meta_headers
* Fix misnamed variable in SwiftReader
* Check that content_type header exists before using
* Adds user friendly message when --segment-size is a non-integer
* Make swift post output an error message when failing
* Replaces Stacktraces with useful error messages
* Fix KeyError raised from client Connection
* Fix race in shell when testing for errors to raise SysExit
* Fix race between container create jobs during upload
* Fix the info command with --insecure
* Allow segment size to be specified in a human readable way
* Use skipTest from testtools instead of inherited Exception
* Add tests for account listing using --lh switch
* Do not crash with "swift list --lh" for Ceph RadosGW

2.3.1
-----

* Remove a debugging print statement
* Fix unit tests failing when OS_ env vars are set
* Fix bug with some OS options not being passed to client
* Add per policy container count to account stat output
* Stop creating extraneous directories

2.3.0
-----

* Work toward Python 3.4 support and testing
* Add importable SwiftService incorporating shell.py logic
* Adds console script entry point
* Do not create an empty directory 'pseudo/'
* fixed unit tests when env vars are set
* Fix crash when downloading a pseudo-directory
* Clean up raw policy stats in account stat
* Update theme for docs
* Add a tox job for generating docs
* Add keystone v3 auth support

2.2.0
-----

* Fix context sensitive help for info and tempurl
* Allow to specify storage policy when uploading objects
* Adding Swift Temporary URL support
* Add CONTRIBUTING.md
* Add context sensitive help
* Relax requirement for tenant_name in get_auth()
* replace string format arguments with function parameters
* Removed now unnecessary workaround for PyPy
* Use Emacs-friendly coding line
* Remove extra double quote from docstring
* Fix wrong assertions in unit tests
* fixed several pep8 issues

2.1.0
-----

* Fix Python3 bugs
* Remove testtools.main() call from tests
* Move test_shell.py under tests/unit/
* Mark swiftclient as being a universal wheel
* change assert_ to assertTrue
* change assertEquals to assertEqual
* Provide a link to the documentation to the README
* fixed typos found by RETF rules
* Fix running the unittests under py3
* Add "." for help strings
* Declare that we support Python 3
* Make the function tests Python3-import friendly
* Only encode metadata for user customed headers
* Add functional tests for python-swiftclient
* Removed a duplicate word in a docstring
* Mock auth_end_time in test_shell.test_download
* Don't utf8 encode urls
* Fixed several shell tests on Python3
* Fix up StringIO use in tests for py3
* Updated test_shell for Python3
* Fix test_raw_upload test
* Remove validate_headers
* Use quote/unquote from six module for py3
* Makes use of requests.Session
* Fix test_multithreading on Python 3
* Add tests for bin/swift
* Fix swiftclient.client.quote() for Python 3
* Add requests related unit-tests
* Update help message to specify unit of --segment-size option
* Python 3: fix tests on HTTP headers
* Updated from global requirements
* Use the standard library's copy of mock when it's available
* Replaced print statements with print function
* Removed usage of tuple unpacking in parameters
* don't use mutable defaults in kwargs
* set user-agent header
* Python 3: Get compatible types from six
* Python 3: Fix module names in import
* Python 3: Add six dependency
* Replace dict.iteritems() with dict.items()
* Python 3: Replace iter.next() with six.next(iter)
* Make bin/swift testable part 2
* Make bin/swift testable part 1
* Python 3: Fix tests using temporary text files
* Python 3: cast map() result to list
* Fix temporary pypy gate issue with setuptools
* Decode HTTP responses, fixes bug #1282861
* Copy Swift's .mailmap to swiftclient repo
* Improve help strings
* TCP port is appended two time in ClientException
* add "info" as an alias to "capabilities"
* Use six.StringIO instead of StringIO.StringIO

2.0.3
-----

* Help string format persistent
* Make the help strings constant
* Add LengthWrapper in put_object to honor content_length param
* Updated from global requirements
* Remove useless statement
* swift.1 manpage fix for groff warnings

2.0.2
-----

* Remove multipart/form-data file upload

2.0.1
-----

* Fix --insecure option on auth
* Only run flake8 on swiftclient code

2.0
---


1.9.0
-----

* Remove extraneous vim configuration comments
* Rename Openstack to OpenStack
* Port to python-requests
* Add option to skip downloading/uploading identical files
* Remove tox locale overrides
* Fix swiftclient help
* Fix misspellings in python swiftclient
* changed things because reasons
* Add missing backslash
* match hacking rules in swift
* Updated from global requirements
* Install manpage in share/man/man1 instead of man/man1
* assertEquals is deprecated, use assertEqual
* Add capabilities option
* Install swiftclient manpage
* Replace xrange in for loop with range
* Add --object-name
* retry on ratelimit
* Fix help of some optional arguments
* Updates tox.ini to use new features
* Fix Sphinx version issue
* Enable usage of proxies defined in environment (http(s)_proxy)
* Don't crash when header is value of None
* Fix download bandwidth for swift command
* Updates .gitignore
* Allow custom headers when using swift download (CLI)
* Replaced two references to Cloud Files with Swift
* Fix a typo in help text: "downlad"
* Add close to swiftclient.client.Connection
* enhance swiftclient logging
* Clarify main help for post subcommand
* Fixes python-swiftclient debugging message

1.8.0
-----

* Make pbr only a build-time dependency
* Add verbose output to all stat commands
* assertEquals is deprecated, use assertEqual (H602)
* Skip sniffing and resetting if retry is disabled
* user defined headers added to swift post queries

1.7.0
-----

* Sync with global requirements
* fix bug with replace old *LOs
* Extend usage message for `swift download`

1.6.0
-----

* Added support for running the tests under PyPy with tox
* Remove redundant unit suffix
* Reformat help outputs
* Add a NullHandler when setting up library logging
* Assignment to reserved built-in symbol "file"
* Added headers argument support to get_object()
* Move multi-threading code to a library
* fix(gitignore) : Ignore *.egg files
* python3: Start of adding basic python3 support
* Added log statements in swift client
* Update docstring for swiftclient.Connection.__init__
* Refuse carriage return in header value
* Adds max-backoff for retries in Connection
* Allow setting # of retries in the binary

1.5.0
-----

* Note '-V 2' is necessary for auth 2.0
* Allow storage url override for both auth vers
* Add *.swp into .gitignore
* Add -p option to download command
* add -t for totals to list command and --lh to stat
* add optional 'response_dict' parameters to many calls into which they'll return a dictionary of the response status, reason and headers
* Fixes re-auth flow with expired tokens
* Remove explicit distribute depend
* Add -l and --lh switches to swift 'list' command
* Changed the call to set_tunnel to work in python 2.6 or python 2.7 since its name changed between versions
* Add option to disable SSL compression
* python3: Introduce py33 to tox.ini
* Rename requires files to standard names
* remove busy-wait so that swift client won't use up all CPU cycles
* log get_auth request url instead of x-storage-url
* Update the man page
* Add .coveragerc file to show correct code coverage
* do not warn about etag for slo
* Eradicate eventlet and fix bug lp:959221
* Add end_marker and path query parameters
* Switch to pbr for setup
* Switch to flake8
* Improve Python 3.x compatibility
* Confirm we have auth creds before clearing preauth

1.4.0
-----

* Improve auth option help
* Static large object support
* Fixed pep8 errors in test directory
* Allow user to specify headers at the command line
* Enhance put_object to inform when chunk is ignored
* Allow v2 to use storage_url/storage_token directly
* Add client man page swift.1
* Allow to specify segment container
* Added "/" check when list containers
* Print useful message when keystoneclient is not installed
* Fix reporting version

1.3.0
-----

* Use testr instead of nose
* Update to latest oslo version/setup
* Add generated files to .gitignore
* Add env[SWIFTCLIENT_INSECURE]
* Fix debug feature and add --debug to swift
* Use testtools as base class for test cases
* Add --os-cacert
* Add --insecure option to fix bug #1077869
* Don't segment objects smaller than --segment-size
* Don't add trailing slash to auth URL
* Adding segment size as another x-object-manifest component
* Stop loss of precision when writing 'x-object-meta-mtime'
* Remove unused json_request
* fixed inconsistencies in parameter descriptions
* tell nose to explicity test the 'tests' directory
* Fixes setup compatibility issue on Windows
* Force utf-8 encode of HTTPConnection params
* swiftclient Connection : default optional arguments to None
* Add OpenStack trove classifier for PyPI
* Resolves issue with empty os_options for swift-bench & swift-dispersion-report
* Catch authorization failures
* Do not use dictionaries as default parameters

1.2.0
-----

* Add region_name support
* Allow endpoint type to be specified
* PEP8 cleanup
* PEP8 issues fixed
* Add ability to download without writing to disk
* Fix PEP8 issues
* Change '_' to '-' in options
* Fix swiftclient 400 error when OS_AUTH_URL is set
* Add nosehtmloutput as a test dependency
* Shuffle download order (of containers and objects)
* Add timing stats to verbose download output
* Ensure Content-Length header when PUT/POST a container
* Make python-keystoneclient optional
* Fix container delete throughput and 409 retries
* Consume version info from pkg_resources
* Use keystoneclient for authentication
* Removes the title "Swift Web" from landing page

1.1.1
-----

* Now url encodes/decodes x-object-manifest values
* Configurable concurrency for swift client
* Allow specify tenant:user in user
* Make swift exit on ctrl-c
* Add post-tag versioning
* Don't suppress openstack auth options
* Make swift not hang on error
* Fix pep8 errors w/pep8==1.3
* Add missing test/tools files to the tarball
* Add build_sphinx options
* Make CLI exit nonzero on error
* Add doc and version in swiftclient.__init__.py
* Raise ClientException for invalid auth version
* Version bump after pypi release

1.1.0
-----

* Removed now-unused .cache.bundle references
* Added setup.cfg for verbose test output
* Add run_tests.sh script here
* Adding fake_http_connect to test.utils
* Add openstack project infrastructure
* Add logging
* Defined version to 1.0
* Add CHANGELOG LICENSE and MANIFEST.in
* Delete old test_client and add a gitignore
* Rename client to swiftclient
* Fix links
* Import script from swift to run unittests
* Add test_client from original swift repository
* Add AUTHORS file
* Make sure we get a header StorageURL with 1.0
* Allow specify the tenant in user
* First commit