From 3435c59ba3a679867adffa84719b8648c9fbf601 Mon Sep 17 00:00:00 2001 From: Peter Portante Date: Fri, 24 May 2013 11:35:59 -0400 Subject: Forward port PDQ 3489: turn off cont & act updates This is a simple sub-classing of the proper update methods to just no-op their behavior. Change-Id: Ib1ae5234d372cbce572da34cfe702235b78f2310 Signed-off-by: Peter Portante Reviewed-on: http://review.gluster.org/5088 Reviewed-by: Luis Pabon Tested-by: Luis Pabon --- gluster/swift/container/server.py | 26 +++++++++++++++++++++++++- gluster/swift/obj/server.py | 30 +++++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) (limited to 'gluster/swift') diff --git a/gluster/swift/container/server.py b/gluster/swift/container/server.py index ee284c9..36632a6 100644 --- a/gluster/swift/container/server.py +++ b/gluster/swift/container/server.py @@ -24,6 +24,15 @@ from gluster.swift.common.DiskDir import DiskDir class ContainerController(server.ContainerController): + """ + Subclass of the container server's ContainerController which replaces the + _get_container_broker() method so that we can use Gluster's DiskDir + duck-type of the container DatabaseBroker object, and make the + account_update() method a no-op (information is simply stored on disk and + already updated by virtue of performaing the file system operations + directly). + """ + def _get_container_broker(self, drive, part, account, container): """ Overriden to provide the GlusterFS specific broker that talks to @@ -34,10 +43,25 @@ class ContainerController(server.ContainerController): :param part: partition the container is in :param account: account name :param container: container name - :returns: DiskDir object + :returns: DiskDir object, a duck-type of DatabaseBroker """ return DiskDir(self.root, drive, account, container, self.logger) + def account_update(self, req, account, container, broker): + """ + Update the account server(s) with latest container info. + + For Gluster, this is just a no-op, since an account is just the + directory holding all the container directories. + + :param req: swob.Request object + :param account: account name + :param container: container name + :param broker: container DB broker object + :returns: None. + """ + return None + def app_factory(global_conf, **local_conf): """paste.deploy app factory for creating WSGI container server apps.""" diff --git a/gluster/swift/obj/server.py b/gluster/swift/obj/server.py index 1223036..084346a 100644 --- a/gluster/swift/obj/server.py +++ b/gluster/swift/obj/server.py @@ -27,8 +27,36 @@ from gluster.swift.common.DiskFile import Gluster_DiskFile server.DiskFile = Gluster_DiskFile +class ObjectController(server.ObjectController): + """ + Subclass of the object server's ObjectController which replaces the + container_update method with one that is a no-op (information is simply + stored on disk and already updated by virtue of performing the file system + operations directly). + """ + + def container_update(self, op, account, container, obj, request, + headers_out, objdevice): + """ + Update the container when objects are updated. + + For Gluster, this is just a no-op, since a container is just the + directory holding all the objects (sub-directory hierarchy of files). + + :param op: operation performed (ex: 'PUT', or 'DELETE') + :param account: account name for the object + :param container: container name for the object + :param obj: object name + :param request: the original request object driving the update + :param headers_out: dictionary of headers to send in the container + request(s) + :param objdevice: device name that the object is in + """ + return + + def app_factory(global_conf, **local_conf): """paste.deploy app factory for creating WSGI object server apps""" conf = global_conf.copy() conf.update(local_conf) - return server.ObjectController(conf) + return ObjectController(conf) -- cgit