summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorvalerijf <valerijf@yahoo-inc.com>2016-07-20 14:33:44 +0200
committervalerijf <valerijf@yahoo-inc.com>2016-07-20 14:33:44 +0200
commit284b59f771f15de5e39d35acc0a91b443d95f489 (patch)
tree9dfe1889fe4a9e46bef1b0f4d525faa84b932487 /node-admin
parent1b6978ed36fdd979ad7a263fdba66fb0722e2838 (diff)
applicationStoragePathForNode now takes in ContainerName
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerImpl.java9
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/MaintenanceSchedulerImpl.java10
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/maintenance/Maintainer.java31
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerImplTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/maintenance/MaintainerTest.java3
5 files changed, 33 insertions, 22 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerImpl.java
index 02b9deb9b27..186a5a284f2 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerImpl.java
@@ -35,8 +35,6 @@ import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
@@ -45,7 +43,6 @@ import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
-import java.util.TimeZone;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -71,11 +68,9 @@ public class DockerImpl implements Docker {
private static final String LABEL_NAME_MANAGEDBY = "com.yahoo.vespa.managedby";
private static final String LABEL_VALUE_MANAGEDBY = "node-admin";
private static final Map<String,String> CONTAINER_LABELS = new HashMap<>();
- public static DateFormat filenameFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
static {
CONTAINER_LABELS.put(LABEL_NAME_MANAGEDBY, LABEL_VALUE_MANAGEDBY);
- filenameFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
}
private static final List<String> DIRECTORIES_TO_MOUNT = Arrays.asList(
@@ -209,7 +204,7 @@ public class DockerImpl implements Docker {
hostConfig(
HostConfig.builder()
.networkMode("none")
- .binds(applicationStorageToMount(containerName.asString()))
+ .binds(applicationStorageToMount(containerName))
.build())
.env("CONFIG_SERVER_ADDRESS=" + Joiner.on(',').join(Environment.getConfigServerHosts())).
hostname(hostName.s());
@@ -332,7 +327,7 @@ public class DockerImpl implements Docker {
}
}
- static List<String> applicationStorageToMount(String containerName) {
+ static List<String> applicationStorageToMount(ContainerName containerName) {
// From-paths when mapping volumes are as seen by the Docker daemon (host)
Path destination = Maintainer.applicationStoragePathForHost(containerName);
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/MaintenanceSchedulerImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/MaintenanceSchedulerImpl.java
index 9348fd0c8f2..204a50811f3 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/MaintenanceSchedulerImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/MaintenanceSchedulerImpl.java
@@ -3,7 +3,6 @@ package com.yahoo.vespa.hosted.node.admin.maintenance;
import com.yahoo.io.IOUtils;
import com.yahoo.log.LogLevel;
import com.yahoo.vespa.hosted.node.admin.docker.ContainerName;
-import com.yahoo.vespa.hosted.node.admin.docker.DockerImpl;
import com.yahoo.vespa.hosted.node.maintenance.DeleteOldAppData;
import com.yahoo.vespa.hosted.node.maintenance.Maintainer;
@@ -13,8 +12,6 @@ import java.io.InputStreamReader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.Duration;
-import java.time.Instant;
-import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -64,14 +61,13 @@ public class MaintenanceSchedulerImpl implements MaintenanceScheduler {
DeleteOldAppData.deleteDirectories(yVarDir.getAbsolutePath(), 0, null);
}
- Path from = Maintainer.applicationStoragePathForNode(containerName.asString());
+ Path from = Maintainer.applicationStoragePathForNode(containerName);
if (!Files.exists(from)) {
log.log(LogLevel.INFO, "The application storage at " + from + " doesn't exist");
return;
}
- Path to = Maintainer.applicationStoragePathForNode(Maintainer.APPLICATION_STORAGE_CLEANUP_PATH_PREFIX +
- containerName.asString() + "_" + DockerImpl.filenameFormatter.format(Date.from(Instant.now())));
+ Path to = Maintainer.applicationStoragePathForNodeCleanup(containerName);
log.log(LogLevel.INFO, "Deleting application storage by moving it from " + from + " to " + to);
//TODO: move to maintenance JVM
Files.move(from, to);
@@ -91,7 +87,7 @@ public class MaintenanceSchedulerImpl implements MaintenanceScheduler {
}
private File resolveContainerPath(ContainerName containerName, String relativePath) {
- return Maintainer.applicationStoragePathForNode(containerName.asString()).resolve(relativePath).toFile();
+ return Maintainer.applicationStoragePathForNode(containerName).resolve(relativePath).toFile();
}
private static String[] concatenateArrays(String[] ar1, String[] ar2) {
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/maintenance/Maintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/maintenance/Maintainer.java
index 47b2c905c3c..0243cc6b661 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/maintenance/Maintainer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/maintenance/Maintainer.java
@@ -1,5 +1,6 @@
package com.yahoo.vespa.hosted.node.maintenance;
+import com.yahoo.vespa.hosted.node.admin.docker.ContainerName;
import io.airlift.airline.Cli;
import io.airlift.airline.Command;
import io.airlift.airline.Help;
@@ -9,9 +10,14 @@ import io.airlift.airline.ParseOptionMissingException;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.time.Duration;
+import java.time.Instant;
import java.util.Arrays;
+import java.util.Date;
import java.util.List;
+import java.util.TimeZone;
import java.util.regex.Pattern;
/**
@@ -21,13 +27,18 @@ public class Maintainer {
private static final Path RELATIVE_APPLICATION_STORAGE_PATH = Paths.get("home/docker/container-storage");
private static final Path APPLICATION_STORAGE_PATH_FOR_NODE_ADMIN = Paths.get("/host").resolve(RELATIVE_APPLICATION_STORAGE_PATH);
private static final Path APPLICATION_STORAGE_PATH_FOR_HOST = Paths.get("/").resolve(RELATIVE_APPLICATION_STORAGE_PATH);
+ private static final String APPLICATION_STORAGE_CLEANUP_PATH_PREFIX = "cleanup_";
- public static final String APPLICATION_STORAGE_CLEANUP_PATH_PREFIX = "cleanup_";
+ private static DateFormat filenameFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
public static final String JOB_DELETE_OLD_APP_DATA = "delete-old-app-data";
public static final String JOB_CLEAN_CORE_DUMPS = "clean-core-dumps";
public static final String JOB_CLEAN_HOME = "clean-home";
+ static {
+ filenameFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
+ }
+
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Cli.CliBuilder<Runnable> builder = Cli.<Runnable>builder("maintainer.jar")
@@ -48,7 +59,7 @@ public class Maintainer {
public static class DeleteOldAppDataArguments implements Runnable {
@Override
public void run() {
- String path = applicationStoragePathForNode("/").toString();
+ String path = applicationStorageRootPathForNode().toString();
String regex = "^" + Pattern.quote(APPLICATION_STORAGE_CLEANUP_PATH_PREFIX);
DeleteOldAppData.deleteDirectories(path, Duration.ofDays(7).getSeconds(), regex);
@@ -85,12 +96,20 @@ public class Maintainer {
}
}
+ public static Path applicationStoragePathForHost(ContainerName containerName) {
+ return APPLICATION_STORAGE_PATH_FOR_HOST.resolve(containerName.asString());
+ }
+
+ public static Path applicationStorageRootPathForNode() {
+ return APPLICATION_STORAGE_PATH_FOR_NODE_ADMIN.toAbsolutePath();
+ }
- public static Path applicationStoragePathForHost(String containerName) {
- return APPLICATION_STORAGE_PATH_FOR_HOST.resolve(containerName);
+ public static Path applicationStoragePathForNode(ContainerName containerName) {
+ return APPLICATION_STORAGE_PATH_FOR_NODE_ADMIN.resolve(containerName.asString());
}
- public static Path applicationStoragePathForNode(String containerName) {
- return APPLICATION_STORAGE_PATH_FOR_NODE_ADMIN.resolve(containerName);
+ public static Path applicationStoragePathForNodeCleanup(ContainerName containerName) {
+ return APPLICATION_STORAGE_PATH_FOR_NODE_ADMIN.resolve(APPLICATION_STORAGE_CLEANUP_PATH_PREFIX +
+ containerName.asString() + "_" + filenameFormatter.format(Date.from(Instant.now())));
}
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerImplTest.java
index 66167e73d3b..5656627bbba 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerImplTest.java
@@ -44,7 +44,7 @@ import static org.mockito.Mockito.when;
public class DockerImplTest {
@Test
public void data_directories_are_mounted_in_from_the_host() {
- List<String> binds = DockerImpl.applicationStorageToMount("my-container");
+ List<String> binds = DockerImpl.applicationStorageToMount(new ContainerName("my-container"));
String dataDirectory = Defaults.getDefaults().vespaHome() + "logs";
String directoryOnHost = "/home/docker/container-storage/my-container" + dataDirectory;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/maintenance/MaintainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/maintenance/MaintainerTest.java
index a676234e47d..7d030d0dc3a 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/maintenance/MaintainerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/maintenance/MaintainerTest.java
@@ -1,5 +1,6 @@
package com.yahoo.vespa.hosted.node.maintenance;
+import com.yahoo.vespa.hosted.node.admin.docker.ContainerName;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
@@ -12,6 +13,6 @@ public class MaintainerTest {
public void locationOfContainerStorageInNodeAdmin() {
assertEquals(
"/host/home/docker/container-storage/docker1-1",
- Maintainer.applicationStoragePathForNode("docker1-1").toString());
+ Maintainer.applicationStoragePathForNode(new ContainerName("docker1-1")).toString());
}
}