From 39b6236a23b901de75b92510b11cf2f3c304113b Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Tue, 5 Apr 2022 14:37:28 +0200 Subject: Return ContainerData from container create --- .../node/admin/container/ContainerEngine.java | 7 +++-- .../node/admin/container/ContainerOperations.java | 4 +-- .../hosted/node/admin/nodeagent/ContainerData.java | 7 +++-- .../hosted/node/admin/nodeagent/NodeAgentImpl.java | 30 +++------------------- 4 files changed, 15 insertions(+), 33 deletions(-) (limited to 'node-admin/src/main') 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 credentialsMaintainers() { return credentialsMaintainers; -- cgit v1.2.3