diff options
author | Håkon Hallingstad <hakon@oath.com> | 2018-11-23 17:30:13 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@oath.com> | 2018-11-23 17:30:13 +0100 |
commit | cadcac9a8c0501f86372eb05d107d7b089643d0a (patch) | |
tree | 9593cc78763cba8e790e49c21f28a19182002765 /node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java | |
parent | f67aa7bfa1553d8cc19ce4eef96f42ff8c31a320 (diff) |
Add flags module
FileFlagSource reads flags from files in /etc/vespa/flags and is a component
that can be injected in host admin, config server, etc. A flag named foo
corresponds to filename foo.
In general a FlagSource manages:
- Feature flags: A feature is either set (true/enabled) or otherwise false.
Touching a file foo means the feature flag foo is set (true).
- Value flags: Either a String or empty if not set. The String corresponds to
the file content.
The plan is to make the config server another source of flags. A unified
FlagSource can merge the two sources with some priority and used in e.g. parts
of node-admin. In other parts one would only have access to the file source.
Defines various flag facades:
- FeatureFlag: Used to test whether a feature has been enabled or not.
- IntFlag
- JacksonFlag: Deserializes JSON to Jackson class, or return default if unset.
- LongFlag
- OptionalJacksonFlag: Deserializes JSON to Jackson class, or empty if unset.
- OptionalStringFlag
- StringFlag
This is part of removing some of the last Chef recipes. Some minor tweaks have
been necessary as part of this and are included in this PR (test whether a
systemd service exists, task-friendly file deletion, allow capitalized letters
in YUM package name).
Diffstat (limited to 'node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java')
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java | 19 |
1 files changed, 9 insertions, 10 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 4bd3aad3f52..1b927cfc682 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 @@ -49,16 +49,6 @@ public class UnixPath { return path; } - public boolean createParents() { - Path parent = path.getParent(); - if (Files.isDirectory(parent)) { - return false; - } - - uncheck(() -> Files.createDirectories(parent)); - return true; - } - public String readUtf8File() { return new String(readBytes(), StandardCharsets.UTF_8); } @@ -141,6 +131,15 @@ public class UnixPath { return this; } + public UnixPath createParents() { + Path parent = path.getParent(); + if (!Files.isDirectory(parent)) { + uncheck(() -> Files.createDirectories(parent)); + } + + return this; + } + public UnixPath createDirectory(String permissions) { Set<PosixFilePermission> set = getPosixFilePermissionsFromString(permissions); FileAttribute<Set<PosixFilePermission>> attribute = PosixFilePermissions.asFileAttribute(set); |