From dc62c40a01a5c7456cfad5a8db1d0a9bbfea1bf5 Mon Sep 17 00:00:00 2001 From: Christopher Bartz Date: Wed, 13 Jul 2016 17:26:38 +0200 Subject: [PATCH] Config option to (dis)allow purgelock header Before this commit, users could submit a file with a purge lock by adding a specific HTTP header. This is not desired for every HPSS deployment. This commit adds a boolean option, which indicates if the header should be ignored or processed. Change-Id: I39a9da6537fd4984e9af01c0235ec10f938b8238 --- swiftonhpss/swift/obj/server.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/swiftonhpss/swift/obj/server.py b/swiftonhpss/swift/obj/server.py index 7e7ddd8..63d6537 100644 --- a/swiftonhpss/swift/obj/server.py +++ b/swiftonhpss/swift/obj/server.py @@ -86,6 +86,8 @@ class ObjectController(server.ObjectController): # future releases utils.read_pickled_metadata = \ config_true_value(conf.get('read_pickled_metadata', 'no')) + self.allow_purgelock = \ + config_true_value(conf.get('allow_purgelock', True)) def get_container_ring(self): """Get the container ring. Load it, if it hasn't been yet.""" @@ -160,8 +162,12 @@ class ObjectController(server.ObjectController): # (HPSS) Check for HPSS-specific metadata headers cos = request.headers.get('X-Hpss-Class-Of-Service-Id', None) - purgelock = config_true_value( - request.headers.get('X-Hpss-Purgelock-Status', 'false')) + + if self.allow_purgelock: + purgelock = config_true_value( + request.headers.get('X-Hpss-Purgelock-Status', 'false')) + else: + purgelock = False try: # Feed DiskFile our HPSS-specific stuff @@ -490,7 +496,11 @@ class ObjectController(server.ObjectController): return HTTPInsufficientStorage(drive=device, request=request) # Set Purgelock status if we got it - purgelock = request.headers.get('X-HPSS-Purgelock-Status') + if self.allow_purgelock: + purgelock = request.headers.get('X-HPSS-Purgelock-Status') + else: + purgelock = False + if purgelock: try: hpssfs.ioctl(disk_file._fd, hpssfs.HPSSFS_PURGE_LOCK,