summaryrefslogtreecommitdiffstats
path: root/node-admin/src/main
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@yahooinc.com>2022-04-05 14:37:28 +0200
committerValerij Fredriksen <valerijf@yahooinc.com>2022-04-05 17:01:56 +0200
commit39b6236a23b901de75b92510b11cf2f3c304113b (patch)
tree4529aee59ff50c8b2fc13135a28da016346afe80 /node-admin/src/main
parent0487ad0e9ef3042c2e5f0f52c257560420e4dbd7 (diff)
Return ContainerData from container create
Diffstat (limited to 'node-admin/src/main')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngine.java7
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperations.java4
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/ContainerData.java7
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java30
4 files changed, 15 insertions, 33 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngine.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngine.java
index cfa0452ebf9..2aa1d12c491 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngine.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngine.java
@@ -20,8 +20,11 @@ import java.util.Optional;
*/
public interface ContainerEngine {
- /** Create a new container */
- void createContainer(NodeAgentContext context, ContainerData containerData, ContainerResources containerResources);
+ /**
+ * Create a new container
+ * @return ContainerData that can be used to write files inside container
+ */
+ ContainerData createContainer(NodeAgentContext context, ContainerResources containerResources);
/** Start a created container */
void startContainer(NodeAgentContext context);
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperations.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperations.java
index 8a66373c28b..9060261b806 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperations.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperations.java
@@ -41,8 +41,8 @@ public class ContainerOperations {
this.containerStatsCollector = new ContainerStatsCollector(cgroup, fileSystem);
}
- public void createContainer(NodeAgentContext context, ContainerData containerData, ContainerResources containerResources) {
- containerEngine.createContainer(context, containerData, containerResources);
+ public ContainerData createContainer(NodeAgentContext context, ContainerResources containerResources) {
+ return containerEngine.createContainer(context, containerResources);
}
public void startContainer(NodeAgentContext context) {
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/ContainerData.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/ContainerData.java
index 26c3d101c69..7e30ae8d649 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/ContainerData.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/ContainerData.java
@@ -23,8 +23,11 @@ public interface ContainerData {
*/
void addFile(ContainerPath path, String data, String permissions);
- /** Add directory in container at path. */
- void addDirectory(ContainerPath path);
+ /**
+ * @param path Container path to create directory at
+ * @param permissions optional file permissions, see {@link UnixPath#setPermissions(String)} for format.
+ */
+ void addDirectory(ContainerPath path, String... permissions);
/**
* Symlink to a file in container at path.
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 9da7f1dbdb6..61e777a9576 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
@@ -27,9 +27,7 @@ import com.yahoo.vespa.hosted.node.admin.maintenance.acl.AclMaintainer;
import com.yahoo.vespa.hosted.node.admin.maintenance.identity.CredentialsMaintainer;
import com.yahoo.vespa.hosted.node.admin.maintenance.servicedump.VespaServiceDumper;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.ConvergenceException;
-import com.yahoo.vespa.hosted.node.admin.task.util.fs.ContainerPath;
-import java.nio.file.Path;
import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
@@ -233,10 +231,10 @@ public class NodeAgentImpl implements NodeAgent {
}
private Container startContainer(NodeAgentContext context) {
- ContainerData containerData = createContainerData(context);
ContainerResources wantedResources = warmUpDuration(context).isNegative() ?
getContainerResources(context) : getContainerResources(context).withUnlimitedCpus();
- containerOperations.createContainer(context, containerData, wantedResources);
+ ContainerData containerData = containerOperations.createContainer(context, wantedResources);
+ writeContainerData(context, containerData);
containerOperations.startContainer(context);
currentRebootGeneration = context.node().wantedRebootGeneration();
@@ -598,29 +596,7 @@ public class NodeAgentImpl implements NodeAgent {
}
}
- protected ContainerData createContainerData(NodeAgentContext context) {
- return new ContainerData() {
- @Override
- public void addFile(ContainerPath path, String data) {
- throw new UnsupportedOperationException("addFile not implemented");
- }
-
- @Override
- public void addFile(ContainerPath path, String data, String permissions) {
- throw new UnsupportedOperationException("addFile not implemented");
- }
-
- @Override
- public void addDirectory(ContainerPath path) {
- throw new UnsupportedOperationException("addDirectory not implemented");
- }
-
- @Override
- public void createSymlink(ContainerPath symlink, Path target) {
- throw new UnsupportedOperationException("createSymlink not implemented");
- }
- };
- }
+ protected void writeContainerData(NodeAgentContext context, ContainerData containerData) { }
protected List<CredentialsMaintainer> credentialsMaintainers() {
return credentialsMaintainers;