diff options
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java | 2 | ||||
-rw-r--r-- | testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java | 23 |
2 files changed, 23 insertions, 2 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java index 1121db99399..2ce49ae383a 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java @@ -149,7 +149,7 @@ public class UnixPath { public UnixPath setGroup(String group) { return setGroup(group, "group"); } public UnixPath setGroupId(int gid) { return setGroup(String.valueOf(gid), "gid"); } - public UnixPath setGroup(String group, String type) { + private UnixPath setGroup(String group, String type) { UserPrincipalLookupService service = path.getFileSystem().getUserPrincipalLookupService(); GroupPrincipal principal = uncheck( () -> service.lookupPrincipalByGroupName(group), diff --git a/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java b/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java index 2b1b0231b4f..13c51851540 100644 --- a/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java +++ b/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java @@ -72,7 +72,8 @@ public class UnixUidGidAttributeProvider extends AttributeProvider { } private int getUniqueId(UserPrincipal user) { - return idCache.computeIfAbsent(user, id -> maybeNumber(id.getName()).orElseGet(uidGenerator::incrementAndGet)); + return maybeNumber(user.getName()) + .orElseGet(() -> idCache.computeIfAbsent(user, id -> uidGenerator.incrementAndGet())); } @SuppressWarnings("unchecked") @@ -106,6 +107,14 @@ public class UnixUidGidAttributeProvider extends AttributeProvider { @Override public void set(File file, String view, String attribute, Object value, boolean create) { + switch (attribute) { + case "uid": + file.setAttribute("owner", "owner", new BasicUserPrincipal(String.valueOf(value))); + return; + case "gid": + file.setAttribute("posix", "group", new BasicGroupPrincipal(String.valueOf(value))); + return; + } throw unsettable(view, attribute); } @@ -158,4 +167,16 @@ public class UnixUidGidAttributeProvider extends AttributeProvider { return Optional.empty(); } } + + private static class BasicUserPrincipal implements UserPrincipal { + private final String name; + private BasicUserPrincipal(String name) { this.name = name; } + + @Override public String getName() { return name; } + @Override public String toString() { return name; } + } + + private static class BasicGroupPrincipal extends BasicUserPrincipal implements GroupPrincipal { + private BasicGroupPrincipal(String name) { super(name); } + } } |