diff options
author | Peter Portante <peter.portante@redhat.com> | 2013-09-20 11:25:04 -0400 |
---|---|---|
committer | Luis Pabon <lpabon@redhat.com> | 2013-10-29 07:25:59 -0700 |
commit | 100d6b01bd40d8b01335e5ecd4a592df79e75b63 (patch) | |
tree | fb6875e07b37808b56aa2f0078040c9ef480a58e /gluster/swift/obj/server.py | |
parent | 70a4cef96c42fe30e62d23ae816a330d3d35df63 (diff) |
Rebase to lastest OpenStack Swift DiskFile API
As of October 28th, 2013, we rebase to OpenStack Swift master (commit
4bfe674) to pick up the lastest officially supported DiskFile API
changes. We use a snapshot of OpenStack Swift stored in the
gluster-swift launchpad downloads area so that we can deliberately
rebase at our own pace.
With this refactoring, all the code for handling I/O is wholly
contained in the swift tree for object operations. This will allow us
to use a different fs_utils implementation in the future (for example,
one based on a yet-to-be-implemented python bindings over libgfapi).
This also means the "Fake_file" class has been removed entirely.
Change-Id: I767983f88c59786e30b6c64da16d1cb6ab3c3e7f
Signed-off-by: Peter Portante <peter.portante@redhat.com>
Reviewed-on: http://review.gluster.org/5993
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Diffstat (limited to 'gluster/swift/obj/server.py')
-rw-r--r-- | gluster/swift/obj/server.py | 59 |
1 files changed, 39 insertions, 20 deletions
diff --git a/gluster/swift/obj/server.py b/gluster/swift/obj/server.py index 433879f..6417475 100644 --- a/gluster/swift/obj/server.py +++ b/gluster/swift/obj/server.py @@ -21,7 +21,7 @@ import gluster.swift.common.constraints # noqa from swift.obj import server -from gluster.swift.obj.diskfile import DiskFile +from gluster.swift.obj.diskfile import OnDiskManager class ObjectController(server.ObjectController): @@ -31,33 +31,52 @@ class ObjectController(server.ObjectController): stored on disk and already updated by virtue of performing the file system operations directly). """ + def setup(self, conf): + """ + Implementation specific setup. This method is called at the very end + by the constructor to allow a specific implementation to modify + existing attributes or add its own attributes. + + :param conf: WSGI configuration parameter + """ + # FIXME: Gluster currently does not support x-delete-at, as there is + # no mechanism in GlusterFS itself to expire an object, or an external + # process that will cull expired objects. + try: + self.allowed_headers.remove('x-delete-at') + except KeyError: + pass + # Common on-disk hierarchy shared across account, container and object + # servers. + self._ondisk_mgr = OnDiskManager(conf, self.logger) + + def get_diskfile(self, device, partition, account, container, obj, + **kwargs): + """ + Utility method for instantiating a DiskFile object supporting a given + REST API. - def _diskfile(self, device, partition, account, container, obj, **kwargs): - """Utility method for instantiating a DiskFile.""" - kwargs.setdefault('mount_check', self.mount_check) - kwargs.setdefault('bytes_per_sync', self.bytes_per_sync) - kwargs.setdefault('disk_chunk_size', self.disk_chunk_size) - kwargs.setdefault('threadpool', self.threadpools[device]) - kwargs.setdefault('obj_dir', server.DATADIR) - return DiskFile(self.devices, device, partition, account, - container, obj, self.logger, **kwargs) + An implementation of the object server that wants to use a different + DiskFile class would simply over-ride this method to provide that + behavior. + """ + return self._ondisk_mgr.get_diskfile(device, account, container, obj, + **kwargs) - def container_update(self, op, account, container, obj, request, - headers_out, objdevice): + def container_update(self, *args, **kwargs): """ 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). + """ + return + + def delete_at_update(self, *args, **kwargs): + """ + Update the expiring objects container when objects are updated. - :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 + FIXME: Gluster currently does not support delete_at headers. """ return |