diff options
author | Valerij Fredriksen <valerijf@yahooinc.com> | 2022-04-05 14:37:28 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@yahooinc.com> | 2022-04-05 17:01:56 +0200 |
commit | 39b6236a23b901de75b92510b11cf2f3c304113b (patch) | |
tree | 4529aee59ff50c8b2fc13135a28da016346afe80 /node-admin/src/main | |
parent | 0487ad0e9ef3042c2e5f0f52c257560420e4dbd7 (diff) |
Return ContainerData from container create
Diffstat (limited to 'node-admin/src/main')
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; |