aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java2
-rw-r--r--testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java23
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); }
+ }
}