diff options
-rw-r--r-- | CHANGELOG | 61 | ||||
-rw-r--r-- | setup.py | 2 | ||||
-rw-r--r-- | swift/__init__.py | 18 | ||||
-rw-r--r-- | swift/common/bench.py | 3 | ||||
-rw-r--r-- | test/unit/common/test_init.py | 37 |
5 files changed, 113 insertions, 8 deletions
@@ -1,7 +1,58 @@ -swift (x.x.x) +swift (1.4.0) - The next Swift version is in development. A full change log will be - available on release. Until then, you can use the following bzr command to - see the commit history: + * swift-bench now cleans up containers it creates. - bzr log --log-format short --forward -rtag:1.3.0.. + * WSGI servers now load WSGI filters and applications after forking for + better plugin support. + + * swauth-cleanup-tokens now handles 404s on token containers and tokens + better. + + * Proxy logs the remote IP address as the client IP in the absence of + X-Forwarded-For and X-Cluster-Client-IP headers instead of - like it did + before. + + * Swift3 WSGI middleware added support for param-signed URLs. + + * swauth- scripts now exit with proper exit codes. + + * Fixed a bug where allowed_headers weren't honored for HEAD requests. + + * Double quarantining of corrupted sqlite3 databases now works. + + * Fix for Object replicator breaking when running object replicator with no + objects on the server. + + * Added the Accept-Ranges header to GET and HEAD requests. + + * When a single object has multiple async pending updates on a single + device, only latest async pending is now sent. + + * Fixed issue of Swift3 WSGI middleware not working correctly with '/' in + object names. + + * Renamed swift-stats-* to swift-dispersion-* to avoid confusion with log + stats stuff. + + * Added X-Trans-Id transaction id header to every response. + + * Fixed a Python 2.7 compatibility problem. + + * Now using bracketed notation for ip literals in rsync calls, so + compressed ipv6 literals work. + + * Added a container stats collector and refactoring some of the stats code. + + * Changed subdir nodes in XML formatted object listings to align with + object nodes. Now: <subdir name="foo"><name>foo</name></subdir> Before: + <subdir name="foo" />. + + * Fixed bug in Swauth to support for multiple swauth instances. + + * swift-ring-builder: Added list_parts command which shows common + partitions for a given list of devices. + + * Object auditor now shows better statistics updates in the logs. + + * Stats uploaders now allow overrides for source_filename_pattern and + new_log_cutoff values. @@ -23,7 +23,7 @@ try: except ImportError: frontend = None -from swift import __version__ as version +from swift import __canonical_version__ as version class local_sdist(sdist): diff --git a/swift/__init__.py b/swift/__init__.py index 441e13d5e..c26a554fb 100644 --- a/swift/__init__.py +++ b/swift/__init__.py @@ -1,5 +1,21 @@ import gettext -__version__ = '1.4-dev' +class Version(object): + def __init__(self, canonical_version, final): + self.canonical_version = canonical_version + self.final = final + + @property + def pretty_version(self): + if self.final: + return self.canonical_version + else: + return '%s-dev' % (self.canonical_version,) + + +_version = Version('1.4.1', False) +__version__ = _version.pretty_version +__canonical_version__ = _version.canonical_version + gettext.install('swift') diff --git a/swift/common/bench.py b/swift/common/bench.py index c50049318..28d8c7e8d 100644 --- a/swift/common/bench.py +++ b/swift/common/bench.py @@ -244,5 +244,6 @@ class BenchPUT(Bench): except client.ClientException, e: self.logger.debug(str(e)) self.failures += 1 - self.names.append((device, partition, name, container_name)) + else: + self.names.append((device, partition, name, container_name)) self.complete += 1 diff --git a/test/unit/common/test_init.py b/test/unit/common/test_init.py new file mode 100644 index 000000000..b86e89d0b --- /dev/null +++ b/test/unit/common/test_init.py @@ -0,0 +1,37 @@ +# Copyright (c) 2010-2011 OpenStack, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import re +import unittest +import swift + +class TestVersioning(unittest.TestCase): + def test_canonical_version_is_clean(self): + """Ensure that a non-clean canonical_version never happens""" + pattern = re.compile('^\d+(\.\d+)*$') + self.assertTrue(pattern.match(swift.__canonical_version__) is not None) + + def test_canonical_version_equals_version_for_final(self): + version = swift.Version('7.8.9', True) + self.assertEquals(version.pretty_version, '7.8.9') + self.assertEquals(version.canonical_version, '7.8.9') + + def test_version_has_dev_suffix_for_non_final(self): + version = swift.Version('7.8.9', False) + self.assertEquals(version.pretty_version, '7.8.9-dev') + self.assertEquals(version.canonical_version, '7.8.9') + +if __name__ == '__main__': + unittest.main() |