diff options
| -rw-r--r-- | swift/1.4.8/gluster-swift-plugin.spec | 2 | ||||
| -rw-r--r-- | swift/1.4.8/gluster-swift.spec | 8 | ||||
| -rw-r--r-- | swift/1.4.8/plugins/DiskDir.py | 85 | ||||
| -rw-r--r-- | swift/1.4.8/swift.diff | 24 | 
4 files changed, 47 insertions, 72 deletions
diff --git a/swift/1.4.8/gluster-swift-plugin.spec b/swift/1.4.8/gluster-swift-plugin.spec index 50731bc844f..0dbf187e092 100644 --- a/swift/1.4.8/gluster-swift-plugin.spec +++ b/swift/1.4.8/gluster-swift-plugin.spec @@ -13,7 +13,7 @@  %define _confdir     /etc/swift  %define _swiftdir    /usr/lib/python2.6/site-packages/swift  %define _ufo_version 1.0 -%define _ufo_release 6 +%define _ufo_release 7  Summary  : GlusterFS Unified File and Object Storage.  Name     : gluster-swift-plugin diff --git a/swift/1.4.8/gluster-swift.spec b/swift/1.4.8/gluster-swift.spec index 47fafcb3203..02dfe814934 100644 --- a/swift/1.4.8/gluster-swift.spec +++ b/swift/1.4.8/gluster-swift.spec @@ -4,7 +4,7 @@  Name:             gluster-swift  Version:          1.4.8 -Release:          6%{?dist} +Release:          7%{?dist}  Summary:          OpenStack Object Storage (swift)  Group:            Development/Languages @@ -152,7 +152,7 @@ mkdir -p doc/build  #SPHINX_DEBUG=1 sphinx-1.0-build -b html doc/source doc/build/html  #SPHINX_DEBUG=1 sphinx-1.0-build -b man doc/source doc/build/man  #%endif -# Fix hidden-file-or-dir warning  +# Fix hidden-file-or-dir warning  #rm doc/build/html/.buildinfo  %install @@ -324,7 +324,7 @@ fi  %files doc  %defattr(-,root,root,-) -%doc LICENSE  +%doc LICENSE  #%doc doc/build/html  %changelog @@ -369,7 +369,7 @@ fi  - Update to 1.4.0  * Fri May 20 2011 David Nalley <david@gnsa.us> - 1.3.0-1 -- Update to 1.3.0  +- Update to 1.3.0  * Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.1.0-2  - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild diff --git a/swift/1.4.8/plugins/DiskDir.py b/swift/1.4.8/plugins/DiskDir.py index af924f1fef9..6887bec6c13 100644 --- a/swift/1.4.8/plugins/DiskDir.py +++ b/swift/1.4.8/plugins/DiskDir.py @@ -17,11 +17,13 @@ import os, errno  from swift.plugins.utils import clean_metadata, dir_empty, rmdirs, mkdirs, \       validate_account, validate_container, check_valid_account, is_marker, \ -     get_container_details, get_account_details, create_container_metadata, \ +     get_container_details, get_account_details, get_container_metadata, \ +     create_container_metadata, \       create_account_metadata, DEFAULT_GID, DEFAULT_UID, validate_object, \       create_object_metadata, read_metadata, write_metadata, X_CONTENT_TYPE, \       X_CONTENT_LENGTH, X_TIMESTAMP, X_PUT_TIMESTAMP, X_TYPE, X_ETAG, \       X_OBJECTS_COUNT, X_BYTES_USED, X_CONTAINER_COUNT, CONTAINER +from swift.plugins import Glusterfs  from swift.common.constraints import CONTAINER_LISTING_LIMIT, check_mount  from swift.common.utils import normalize_timestamp, TRUE_VALUES @@ -166,6 +168,8 @@ class DiskDir(DiskCommon):          assert logger is not None          self.logger = logger          self.metadata = {} +        self.container_info = None +        self.object_info = None          self.uid = int(uid)          self.gid = int(gid)          self.db_file = _db_file @@ -281,13 +285,9 @@ class DiskDir(DiskCommon):          if delimiter and not prefix:              prefix = '' -        objects, object_count, bytes_used = get_container_details(self.datadir) +        self.update_object_count() -        if int(self.metadata[X_OBJECTS_COUNT][0]) != object_count or \ -           int(self.metadata[X_BYTES_USED][0]) != bytes_used: -            self.metadata[X_OBJECTS_COUNT] = (object_count, 0) -            self.metadata[X_BYTES_USED] = (bytes_used, 0) -            self.update_container(self.metadata) +        objects, object_count, bytes_used = self.object_info          if objects:              objects.sort() @@ -326,32 +326,30 @@ class DiskDir(DiskCommon):          return container_list -    def update_container(self, metadata): -        cont_path = self.datadir -        write_metadata(cont_path, metadata) -        self.metadata = metadata -      def update_object_count(self): -        objects = [] -        object_count = 0 -        bytes_used = 0 -        objects, object_count, bytes_used = get_container_details(self.datadir) +        if not self.object_info: +            self.object_info = get_container_details(self.datadir) -        if int(self.metadata[X_OBJECTS_COUNT][0]) != object_count or \ -           int(self.metadata[X_BYTES_USED][0]) != bytes_used: +        objects, object_count, bytes_used = self.object_info + +        if X_OBJECTS_COUNT not in self.metadata \ +                or int(self.metadata[X_OBJECTS_COUNT][0]) != object_count \ +                or X_BYTES_USED not in self.metadata \ +                or int(self.metadata[X_BYTES_USED][0]) != bytes_used:              self.metadata[X_OBJECTS_COUNT] = (object_count, 0)              self.metadata[X_BYTES_USED] = (bytes_used, 0) -            self.update_container(self.metadata) +            write_metadata(self.datadir, self.metadata)      def update_container_count(self): -        containers = [] -        container_count = 0 +        if not self.container_info: +            self.container_info = get_account_details(self.datadir) -        containers, container_count = get_account_details(self.datadir) +        containers, container_count = self.container_info -        if int(self.metadata[X_CONTAINER_COUNT][0]) != container_count: +        if X_CONTAINER_COUNT not in self.metadata \ +                or int(self.metadata[X_CONTAINER_COUNT][0]) != container_count:              self.metadata[X_CONTAINER_COUNT] = (container_count, 0) -            self.update_container(self.metadata) +            write_metadata(self.datadir, self.metadata)      def get_info(self, include_metadata=False):          """ @@ -366,21 +364,21 @@ class DiskDir(DiskCommon):          # TODO: delete_timestamp, reported_put_timestamp          #       reported_delete_timestamp, reported_object_count,          #       reported_bytes_used, created_at - -        metadata = {} -        if os.path.exists(self.datadir): -            metadata = _read_metadata(self.datadir) +        if not Glusterfs.OBJECT_ONLY: +            # If we are not configured for object only environments, we should +            # update the object counts in case they changed behind our back. +            self.update_object_count()          data = {'account' : self.account, 'container' : self.container, -                'object_count' : metadata.get(X_OBJECTS_COUNT, ('0', 0))[0], -                'bytes_used' : metadata.get(X_BYTES_USED, ('0',0))[0], +                'object_count' : self.metadata.get(X_OBJECTS_COUNT, ('0', 0))[0], +                'bytes_used' : self.metadata.get(X_BYTES_USED, ('0',0))[0],                  'hash': '', 'id' : '', 'created_at' : '1', -                'put_timestamp' : metadata.get(X_PUT_TIMESTAMP, ('0',0))[0], +                'put_timestamp' : self.metadata.get(X_PUT_TIMESTAMP, ('0',0))[0],                  'delete_timestamp' : '1',                  'reported_put_timestamp' : '1', 'reported_delete_timestamp' : '1',                  'reported_object_count' : '1', 'reported_bytes_used' : '1'}          if include_metadata: -            data['metadata'] = metadata +            data['metadata'] = self.metadata          return data      def put_object(self, name, timestamp, size, content_type, @@ -432,11 +430,9 @@ class DiskAccount(DiskDir):          if delimiter and not prefix:              prefix = '' -        containers, container_count = get_account_details(self.datadir) +        self.update_container_count() -        if int(self.metadata[X_CONTAINER_COUNT][0]) != container_count: -            self.metadata[X_CONTAINER_COUNT] = (container_count, 0) -            self.update_container(self.metadata) +        containers, container_count = self.container_info          if containers:              containers.sort() @@ -483,19 +479,18 @@ class DiskAccount(DiskDir):                    delete_timestamp, container_count, object_count,                    bytes_used, hash, id          """ -        metadata = {} -        if (os.path.exists(self.datadir)): -            metadata = _read_metadata(self.datadir) -            if not metadata: -                metadata = create_account_metadata(self.datadir) +        if not Glusterfs.OBJECT_ONLY: +            # If we are not configured for object only environments, we should +            # update the container counts in case they changed behind our back. +            self.update_container_count()          data = {'account' : self.account, 'created_at' : '1',                  'put_timestamp' : '1', 'delete_timestamp' : '1', -                'container_count' : metadata.get(X_CONTAINER_COUNT, (0,0))[0], -                'object_count' : metadata.get(X_OBJECTS_COUNT, (0,0))[0], -                'bytes_used' : metadata.get(X_BYTES_USED, (0,0))[0], +                'container_count' : self.metadata.get(X_CONTAINER_COUNT, (0,0))[0], +                'object_count' : self.metadata.get(X_OBJECTS_COUNT, (0,0))[0], +                'bytes_used' : self.metadata.get(X_BYTES_USED, (0,0))[0],                  'hash' : '', 'id' : ''}          if include_metadata: -            data['metadata'] = metadata +            data['metadata'] = self.metadata          return data diff --git a/swift/1.4.8/swift.diff b/swift/1.4.8/swift.diff index 5ce314f5525..c29199461e2 100644 --- a/swift/1.4.8/swift.diff +++ b/swift/1.4.8/swift.diff @@ -18,7 +18,7 @@ index d195d34..ef625ff 100644           },       )  diff --git a/swift/account/server.py b/swift/account/server.py -index 800b3c0..78fbf07 100644 +index 800b3c0..c34d967 100644  --- a/swift/account/server.py  +++ b/swift/account/server.py  @@ -1,4 +1,5 @@ @@ -63,18 +63,8 @@ index 800b3c0..78fbf07 100644           hsh = hash_path(account)           db_dir = storage_directory(DATADIR, part, hsh)           db_path = os.path.join(self.root, drive, db_dir, hsh + '.db') -@@ -153,6 +164,9 @@ class AccountController(object): -             broker.stale_reads_ok = True -         if broker.is_deleted(): -             return HTTPNotFound(request=req) -+        if Gluster_enabled() and not Glusterfs.OBJECT_ONLY: -+            broker.list_containers_iter(None, None,None, -+                                        None, None) -         info = broker.get_info() -         headers = { -             'X-Account-Container-Count': info['container_count'],  diff --git a/swift/container/server.py b/swift/container/server.py -index 8a18cfd..e39f5ef 100644 +index 8a18cfd..f5346ce 100644  --- a/swift/container/server.py  +++ b/swift/container/server.py  @@ -1,4 +1,5 @@ @@ -121,16 +111,6 @@ index 8a18cfd..e39f5ef 100644           hsh = hash_path(account, container)           db_dir = storage_directory(DATADIR, part, hsh)           db_path = os.path.join(self.root, drive, db_dir, hsh + '.db') -@@ -245,6 +257,9 @@ class ContainerController(object): -         broker.stale_reads_ok = True -         if broker.is_deleted(): -             return HTTPNotFound(request=req) -+        if Gluster_enabled() and not Glusterfs.OBJECT_ONLY: -+            broker.list_objects_iter(None, None, None, None, -+                                     None, None) -         info = broker.get_info() -         headers = { -             'X-Container-Object-Count': info['object_count'],  diff --git a/swift/obj/server.py b/swift/obj/server.py  index 9cca16b..7a671c2 100644  --- a/swift/obj/server.py  | 
