object-storage: fix account mapping

Fix the account mapping so that we always use what is provided by the request.

With this fix, "/mnt/gluster-object/AUTH_ufo0" directory hierachies won't be
created. But this fix does not restore the one-to-one account to gluster
volume name mapping.

When the user runs the /usr/bin/gluster-swift-gen-builders script, it still
only allows one cluster volume, and that is the only volume that is used. So
the account names are effectively ignored. A future set of changes will
address that problem.

Change-Id: I2df608de2f00fd356a09c500d49fe12cc1a0a574
BUG: 870589
Signed-off-by: Peter Portante <peter.portante@redhat.com>
Reviewed-on: http://review.gluster.org/4222
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Tested-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Reviewed-by: Mohammed Junaid <junaid@redhat.com>
This commit is contained in:
Peter Portante 2012-11-21 16:42:15 -05:00
parent f1b668029a
commit c48dcdceb5
4 changed files with 8 additions and 10 deletions

View File

@ -35,7 +35,7 @@ class AccountController(server.AccountController):
:param account: account name
:returns: DiskDir object
"""
return DiskAccount(self.root, account, self.logger)
return DiskAccount(self.root, drive, account, self.logger)
def app_factory(global_conf, **local_conf):

View File

@ -142,6 +142,7 @@ class DiskDir(DiskCommon):
Manage object files on disk.
:param path: path to devices on the node
:param drive: gluster volume drive name
:param account: account name for the object
:param container: container name for the object
:param logger: account or container server logging object
@ -149,7 +150,7 @@ class DiskDir(DiskCommon):
:param gid: group ID container object should assume
"""
def __init__(self, path, account, container, logger,
def __init__(self, path, drive, account, container, logger,
uid=DEFAULT_UID, gid=DEFAULT_GID):
self.root = path
if container:
@ -157,11 +158,9 @@ class DiskDir(DiskCommon):
else:
self.container = None
if self.container:
self.datadir = os.path.join(path, account, self.container)
self.datadir = os.path.join(path, drive, self.container)
else:
self.datadir = os.path.join(path, account)
# Note that the account name has a one-to-one mapping to the gluster
# mount point, or volume name.
self.datadir = os.path.join(path, drive)
self.account = account
assert logger is not None
self.logger = logger
@ -415,8 +414,8 @@ class DiskDir(DiskCommon):
class DiskAccount(DiskDir):
def __init__(self, root, account, logger):
super(DiskAccount, self).__init__(root, account, None, logger)
def __init__(self, root, drive, account, logger):
super(DiskAccount, self).__init__(root, drive, account, None, logger)
assert self.dir_exists
def list_containers_iter(self, limit, marker, end_marker,

View File

@ -57,7 +57,6 @@ class Gluster_DiskFile(DiskFile):
logger, keep_data_fp=False, disk_chunk_size=65536,
uid=DEFAULT_UID, gid=DEFAULT_GID):
self.disk_chunk_size = disk_chunk_size
device = account
#Don't support obj_name ending/begining with '/', like /a, a/, /a/b/ etc
obj = obj.strip('/')
if '/' in obj:

View File

@ -36,7 +36,7 @@ class ContainerController(server.ContainerController):
:param container: container name
:returns: DiskDir object
"""
return DiskDir(self.root, account, container, self.logger)
return DiskDir(self.root, drive, account, container, self.logger)
def app_factory(global_conf, **local_conf):