From c5b4dc9751b0d2dfa68fa731607ac029e7f7fd7a Mon Sep 17 00:00:00 2001 From: Lea Morschel Date: Fri, 31 Mar 2023 14:29:35 +0200 Subject: [PATCH] bulk: let bulk propagate Subject for pin/stage Motivation: When making pin, stage or unpin requests via `PinManager`, the bulk service currently does not propagate the subject to PinManager. If it did, that information would be used by PinManager/PoolManager to enforce permissions such as if a subject is allowed to stage. Modification: Add the known subject to `PinManagerPinRequest` and `PinManagerUnpinMessage` messages issued by bulk. Result: Better enforcement of subject-based permissions. Target: master Request: 9.0 Request: 8.2 Request: 8.1 Request: 8.0 Request: 7.2 Requires-notes: no Requires-book: no Patch: https://rb.dcache.org/r/13949/ Acked-by: Albert Rossi --- .../dcache/services/bulk/activity/plugin/pin/PinActivity.java | 3 ++- .../services/bulk/activity/plugin/pin/PinManagerActivity.java | 1 + .../services/bulk/activity/plugin/pin/StageActivity.java | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/dcache-bulk/src/main/java/org/dcache/services/bulk/activity/plugin/pin/PinActivity.java b/modules/dcache-bulk/src/main/java/org/dcache/services/bulk/activity/plugin/pin/PinActivity.java index 8f43452001c..96e7eeabe3a 100644 --- a/modules/dcache-bulk/src/main/java/org/dcache/services/bulk/activity/plugin/pin/PinActivity.java +++ b/modules/dcache-bulk/src/main/java/org/dcache/services/bulk/activity/plugin/pin/PinActivity.java @@ -116,6 +116,7 @@ public ListenableFuture perform(String rid, long tid, FsPath target, PinManagerPinMessage message = new PinManagerPinMessage(attributes, getProtocolInfo(), id, lifetimeInMillis); + message.setSubject(subject); return pinManager.send(message, Long.MAX_VALUE); } catch (URISyntaxException | CacheException e) { return Futures.immediateFailedFuture(e); @@ -133,7 +134,7 @@ protected void configure(Map arguments) { String expire = arguments.get(LIFETIME.getName()); String unit = arguments.get(LIFETIME_UNIT.getName()); - Long value = (long)(Double.parseDouble(expire)); + Long value = (long) (Double.parseDouble(expire)); lifetimeInMillis = expire == null ? defaultUnit.toMillis(defaultValue) : unit == null ? defaultUnit.toMillis(value) diff --git a/modules/dcache-bulk/src/main/java/org/dcache/services/bulk/activity/plugin/pin/PinManagerActivity.java b/modules/dcache-bulk/src/main/java/org/dcache/services/bulk/activity/plugin/pin/PinManagerActivity.java index 3f381bd7530..6a80e0607ed 100644 --- a/modules/dcache-bulk/src/main/java/org/dcache/services/bulk/activity/plugin/pin/PinManagerActivity.java +++ b/modules/dcache-bulk/src/main/java/org/dcache/services/bulk/activity/plugin/pin/PinManagerActivity.java @@ -132,6 +132,7 @@ protected PinManagerUnpinMessage unpinMessage(String id, BulkRequestTarget targe protected PinManagerUnpinMessage unpinMessage(String id, PnfsId pnfsId) { PinManagerUnpinMessage message = new PinManagerUnpinMessage(pnfsId); + message.setSubject(subject); message.setRequestId(id); return message; } diff --git a/modules/dcache-bulk/src/main/java/org/dcache/services/bulk/activity/plugin/pin/StageActivity.java b/modules/dcache-bulk/src/main/java/org/dcache/services/bulk/activity/plugin/pin/StageActivity.java index 7d3fafd92a8..9b392a633d6 100644 --- a/modules/dcache-bulk/src/main/java/org/dcache/services/bulk/activity/plugin/pin/StageActivity.java +++ b/modules/dcache-bulk/src/main/java/org/dcache/services/bulk/activity/plugin/pin/StageActivity.java @@ -124,6 +124,7 @@ public ListenableFuture perform(String rid, long tid, FsPath target, PinManagerPinMessage message = new PinManagerPinMessage(attributes, getProtocolInfo(), id, getLifetimeInMillis(target)); + message.setSubject(subject); return pinManager.send(message, Long.MAX_VALUE); } catch (URISyntaxException | CacheException e) { return Futures.immediateFailedFuture(e);