summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--swift/1.4.8/plugins/DiskDir.py58
-rw-r--r--swift/1.4.8/swift.diff4
2 files changed, 27 insertions, 35 deletions
diff --git a/swift/1.4.8/plugins/DiskDir.py b/swift/1.4.8/plugins/DiskDir.py
index 5ce8e8c8368..e0d5eb77756 100644
--- a/swift/1.4.8/plugins/DiskDir.py
+++ b/swift/1.4.8/plugins/DiskDir.py
@@ -13,25 +13,34 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-import os
+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, \
- create_account_metadata, DEFAULT_GID, DEFAULT_UID, \
- validate_object, create_object_metadata, read_metadata, write_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.common.constraints import CONTAINER_LISTING_LIMIT, \
- check_mount
+from swift.common.constraints import CONTAINER_LISTING_LIMIT, check_mount
+from swift.common.utils import normalize_timestamp, TRUE_VALUES
-from swift.plugins.utils import 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
DATADIR = 'containers'
# Create a dummy db_file in /etc/swift
-_db_file = '/etc/swift/db_file.db'
+_unittests_enabled = os.getenv('GLUSTER_UNIT_TEST_ENABLED', 'no')
+if _unittests_enabled in TRUE_VALUES:
+ _tmp_dir = '/tmp/gluster_unit_tests'
+ try:
+ os.mkdir(_tmp_dir)
+ except OSError as e:
+ if e.errno != errno.EEXIST:
+ raise
+ _db_file = os.path.join(_tmp_dir, 'db_file.db')
+else:
+ _db_file = '/etc/swift/db_file.db'
if not os.path.exists(_db_file):
file(_db_file, 'w+')
@@ -125,11 +134,6 @@ class DiskCommon(object):
return filtered_objs
- def update_account(self, metadata):
- acc_path = self.datadir
- write_metadata(acc_path, metadata)
- self.metadata = metadata
-
class DiskDir(DiskCommon):
"""
@@ -279,11 +283,6 @@ class DiskDir(DiskCommon):
if delimiter and not prefix:
prefix = ''
- objects = []
- object_count = 0
- bytes_used = 0
- container_list = []
-
objects, object_count, bytes_used = get_container_details(self.datadir)
if int(self.metadata[X_OBJECTS_COUNT][0]) != object_count or \
@@ -311,6 +310,7 @@ class DiskDir(DiskCommon):
if len(objects) > limit:
objects = self.filter_limit(objects, limit)
+ container_list = []
if objects:
for obj in objects:
list_item = []
@@ -353,7 +353,7 @@ class DiskDir(DiskCommon):
if int(self.metadata[X_CONTAINER_COUNT][0]) != container_count:
self.metadata[X_CONTAINER_COUNT] = (container_count, 0)
- self.update_account(self.metadata)
+ self.update_container(self.metadata)
def get_info(self, include_metadata=False):
"""
@@ -416,15 +416,9 @@ class DiskDir(DiskCommon):
class DiskAccount(DiskDir):
- def __init__(self, root, account):
- self.root = root
- self.account = account
- self.datadir = os.path.join(self.root, self.account)
- if not check_mount(root, account):
- check_valid_account(account)
- self.metadata = _read_metadata(self.datadir)
- if not self.metadata or not validate_account(self.metadata):
- self.metadata = create_account_metadata(self.datadir)
+ def __init__(self, root, account, logger):
+ super(DiskAccount, self).__init__(root, None, None, account, None, logger)
+ assert self.dir_exists
def list_containers_iter(self, limit, marker, end_marker,
prefix, delimiter):
@@ -434,15 +428,12 @@ class DiskAccount(DiskDir):
"""
if delimiter and not prefix:
prefix = ''
- containers = []
- container_count = 0
- account_list = []
containers, container_count = get_account_details(self.datadir)
if int(self.metadata[X_CONTAINER_COUNT][0]) != container_count:
self.metadata[X_CONTAINER_COUNT] = (container_count, 0)
- self.update_account(self.metadata)
+ self.update_container(self.metadata)
if containers:
containers.sort()
@@ -463,6 +454,7 @@ class DiskAccount(DiskDir):
if len(containers) > limit:
containers = self.filter_limit(containers, limit)
+ account_list = []
if containers:
for cont in containers:
list_item = []
diff --git a/swift/1.4.8/swift.diff b/swift/1.4.8/swift.diff
index 522e651cb0d..889a3b1cd21 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..ba13786 100644
+index 800b3c0..78fbf07 100644
--- a/swift/account/server.py
+++ b/swift/account/server.py
@@ -1,4 +1,5 @@
@@ -59,7 +59,7 @@ index 800b3c0..ba13786 100644
def _get_account_broker(self, drive, part, account):
+ if Gluster_enabled():
-+ return DiskAccount(self.root, account)
++ return DiskAccount(self.root, account, self.logger)
hsh = hash_path(account)
db_dir = storage_directory(DATADIR, part, hsh)
db_path = os.path.join(self.root, drive, db_dir, hsh + '.db')