summaryrefslogtreecommitdiffstats
path: root/node-admin/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'node-admin/src/main/java')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.java14
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java7
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java7
4 files changed, 19 insertions, 11 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.java
index c8fd4c077ce..255c04e0072 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.java
@@ -8,6 +8,7 @@ import com.yahoo.vespa.hosted.dockerapi.ContainerResources;
import com.yahoo.vespa.hosted.dockerapi.ContainerStats;
import com.yahoo.vespa.hosted.dockerapi.ProcessResult;
import com.yahoo.vespa.hosted.dockerapi.RegistryCredentials;
+import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
import com.yahoo.vespa.hosted.node.admin.nodeagent.ContainerData;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
import com.yahoo.vespa.hosted.node.admin.task.util.process.CommandResult;
@@ -20,6 +21,7 @@ import java.util.Set;
/**
* @author hakonhall
*/
+// TODO(mpolden): Clean up this interface when ContainerOperationsImpl, DockerEngine and friends can be removed
public interface ContainerOperations {
void createContainer(NodeAgentContext context, ContainerData containerData, ContainerResources containerResources);
@@ -32,7 +34,7 @@ public interface ContainerOperations {
Optional<Container> getContainer(NodeAgentContext context);
- boolean pullImageAsyncIfNeeded(DockerImage dockerImage, RegistryCredentials registryCredentials);
+ boolean pullImageAsyncIfNeeded(TaskContext context, DockerImage dockerImage, RegistryCredentials registryCredentials);
ProcessResult executeCommandInContainerAsRoot(NodeAgentContext context, String... command);
@@ -59,10 +61,14 @@ public interface ContainerOperations {
Optional<ContainerStats> getContainerStats(NodeAgentContext context);
- boolean noManagedContainersRunning();
+ boolean noManagedContainersRunning(TaskContext context);
- /** Stops and removes all managed containers except the ones given in {@code containerNames} */
- boolean retainManagedContainers(Set<ContainerName> containerNames);
+ /**
+ * Stops and removes all managed containers except the ones given in {@code containerNames}.
+ *
+ * @return true if any containers were removed
+ */
+ boolean retainManagedContainers(TaskContext context, Set<ContainerName> containerNames);
/** Deletes the local images that are currently not in use by any container and not recently used. */
boolean deleteUnusedContainerImages(List<DockerImage> excludes, Duration minImageAgeToDelete);
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java
index 40e1622fa0d..bcdeaf7db68 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java
@@ -13,6 +13,7 @@ import com.yahoo.vespa.hosted.dockerapi.ContainerResources;
import com.yahoo.vespa.hosted.dockerapi.ContainerStats;
import com.yahoo.vespa.hosted.dockerapi.ProcessResult;
import com.yahoo.vespa.hosted.dockerapi.RegistryCredentials;
+import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.ConvergenceException;
import com.yahoo.vespa.hosted.node.admin.nodeagent.ContainerData;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
@@ -211,7 +212,7 @@ public class ContainerOperationsImpl implements ContainerOperations {
}
@Override
- public boolean pullImageAsyncIfNeeded(DockerImage dockerImage, RegistryCredentials registryCredentials) {
+ public boolean pullImageAsyncIfNeeded(TaskContext context, DockerImage dockerImage, RegistryCredentials registryCredentials) {
return containerEngine.pullImageAsyncIfNeeded(dockerImage, registryCredentials);
}
@@ -321,12 +322,12 @@ public class ContainerOperationsImpl implements ContainerOperations {
}
@Override
- public boolean noManagedContainersRunning() {
+ public boolean noManagedContainersRunning(TaskContext context) {
return containerEngine.noManagedContainersRunning(MANAGER_NAME);
}
@Override
- public boolean retainManagedContainers(Set<ContainerName> containerNames) {
+ public boolean retainManagedContainers(TaskContext context, Set<ContainerName> containerNames) {
return containerEngine.listManagedContainers(MANAGER_NAME).stream()
.filter(containerName -> ! containerNames.contains(containerName))
.peek(containerName -> {
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java
index f93cd005fae..5ea0a5d12c3 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java
@@ -244,7 +244,7 @@ public class NodeAgentContextImpl implements NodeAgentContext {
return this;
}
- public Builder dockerNetworking(ContainerNetworkMode containerNetworkMode) {
+ public Builder networkMode(ContainerNetworkMode containerNetworkMode) {
this.containerNetworkMode = containerNetworkMode;
return this;
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
index 9fa21e5a676..dc0b6dc9d85 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
@@ -393,12 +393,13 @@ public class NodeAgentImpl implements NodeAgent {
return zone.getEnvironment() == Environment.dev || zone.getSystemName().isCd();
}
- private boolean downloadImageIfNeeded(NodeSpec node, Optional<Container> container) {
+ private boolean downloadImageIfNeeded(NodeAgentContext context, Optional<Container> container) {
+ NodeSpec node = context.node();
if (node.wantedDockerImage().equals(container.map(c -> c.image))) return false;
RegistryCredentials credentials = registryCredentialsProvider.get();
return node.wantedDockerImage()
- .map(image -> containerOperations.pullImageAsyncIfNeeded(image, credentials))
+ .map(image -> containerOperations.pullImageAsyncIfNeeded(context, image, credentials))
.orElse(false);
}
@@ -454,7 +455,7 @@ public class NodeAgentImpl implements NodeAgent {
storageMaintainer.cleanDiskIfFull(context);
storageMaintainer.handleCoreDumpsForContainer(context, container);
- if (downloadImageIfNeeded(node, container)) {
+ if (downloadImageIfNeeded(context, container)) {
context.log(logger, "Waiting for image to download " + context.node().wantedDockerImage().get().asString());
return;
}