diff options
author | Harald Musum <musum@yahooinc.com> | 2023-09-12 09:36:13 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2023-09-12 09:36:13 +0200 |
commit | 647054248636089bc687f9af25f9c158cabba23a (patch) | |
tree | 54ce206f57fcab7b2290ad7c43210c4bd10fd917 /config-model | |
parent | c38fcd2e6f09273459ade724fd571e615ff3f6c9 (diff) |
Rename and move some classes and methods related to file distribution
Diffstat (limited to 'config-model')
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java | 18 | ||||
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/filedistribution/UserConfiguredFiles.java (renamed from config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java) | 64 | ||||
-rw-r--r-- | config-model/src/test/java/com/yahoo/vespa/model/filedistribution/UserConfiguredFilesTest.java (renamed from config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java) | 33 |
3 files changed, 58 insertions, 57 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java index 07983c7c85a..4adc6131803 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java @@ -38,7 +38,7 @@ import com.yahoo.vespa.model.container.component.Component; import com.yahoo.vespa.model.container.component.Handler; import com.yahoo.vespa.model.container.component.SystemBindingPattern; import com.yahoo.vespa.model.container.configserver.ConfigserverCluster; -import com.yahoo.vespa.model.utils.FileSender; +import com.yahoo.vespa.model.filedistribution.UserConfiguredFiles; import java.util.ArrayList; import java.util.Collection; @@ -130,23 +130,24 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat @Override protected void doPrepare(DeployState deployState) { super.doPrepare(deployState); - addAndSendApplicationBundles(deployState); - sendUserConfiguredFiles(deployState); + // Register bundles and files for file distribution + registerApplicationBundles(deployState); + registerUserConfiguredFiles(deployState); createEndpoints(deployState); } - private void addAndSendApplicationBundles(DeployState deployState) { + private void registerApplicationBundles(DeployState deployState) { for (ComponentInfo component : deployState.getApplicationPackage().getComponentsInfo(deployState.getVespaVersion())) { FileReference reference = deployState.getFileRegistry().addFile(component.getPathRelativeToAppDir()); applicationBundles.add(reference); } } - private void sendUserConfiguredFiles(DeployState deployState) { + private void registerUserConfiguredFiles(DeployState deployState) { // Files referenced from user configs to all components. - FileSender fileSender = new FileSender(containers, deployState.getFileRegistry(), deployState.getDeployLogger()); + UserConfiguredFiles files = new UserConfiguredFiles(containers, deployState.getFileRegistry(), deployState.getDeployLogger()); for (Component<?, ?> component : getAllComponents()) { - fileSender.sendUserConfiguredFiles(component); + files.register(component); } } @@ -156,8 +157,7 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat } private void addMetricsHandler(String handlerClass, BindingPattern rootBinding, BindingPattern innerBinding) { - Handler handler = new Handler( - new ComponentModel(handlerClass, null, null, null)); + Handler handler = new Handler(new ComponentModel(handlerClass, null, null, null)); handler.addServerBindings(rootBinding, innerBinding); addComponent(handler); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/UserConfiguredFiles.java index 2aa403791fc..bf1abdce49b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/UserConfiguredFiles.java @@ -1,5 +1,5 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.model.utils; +package com.yahoo.vespa.model.filedistribution; import com.yahoo.config.FileReference; import com.yahoo.config.ModelReference; @@ -21,82 +21,84 @@ import java.util.Optional; import java.util.logging.Level; /** - * Utility methods for sending files to a collection of nodes. + * Utility methods for registering file distribution of files/paths/urls/models defined by the user + * to a collection of nodes. * * @author gjoranv */ -public class FileSender implements Serializable { +public class UserConfiguredFiles implements Serializable { private final Collection<? extends AbstractService> services; private final FileRegistry fileRegistry; private final DeployLogger logger; - public FileSender(Collection<? extends AbstractService> services, FileRegistry fileRegistry, DeployLogger logger) { + public UserConfiguredFiles(Collection<? extends AbstractService> services, FileRegistry fileRegistry, DeployLogger logger) { this.services = services; this.fileRegistry = fileRegistry; this.logger = logger; } /** - * Sends all user configured files for a producer to all given services. + * Registers user configured files for a producer for file distribution. */ - public <PRODUCER extends AnyConfigProducer> void sendUserConfiguredFiles(PRODUCER producer) { + public <PRODUCER extends AnyConfigProducer> void register(PRODUCER producer) { if (services.isEmpty()) return; UserConfigRepo userConfigs = producer.getUserConfigs(); - Map<Path, FileReference> sentFiles = new HashMap<>(); + Map<Path, FileReference> registeredFiles = new HashMap<>(); for (ConfigDefinitionKey key : userConfigs.configsProduced()) { ConfigPayloadBuilder builder = userConfigs.get(key); try { - sendUserConfiguredFiles(builder, sentFiles, key); + register(builder, registeredFiles, key); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Unable to send file specified in " + key, e); } } } - private void sendUserConfiguredFiles(ConfigPayloadBuilder builder, Map<Path, FileReference> sentFiles, ConfigDefinitionKey key) { + private void register(ConfigPayloadBuilder builder, Map<Path, FileReference> registeredFiles, ConfigDefinitionKey key) { ConfigDefinition configDefinition = builder.getConfigDefinition(); if (configDefinition == null) { - // TODO: throw new IllegalArgumentException("Not able to find config definition for " + builder); - logger.logApplicationPackage(Level.FINE, "Not able to find config definition for " + key + - ". Will not send files for this config"); + // TODO: throw new IllegalArgumentException("Unable to find config definition for " + builder); + logger.logApplicationPackage(Level.FINE, "Unable to find config definition " + key + + ". Will not register files for file distribution for this config"); return; } + // Inspect fields at this level - sendEntries(builder, sentFiles, configDefinition.getFileDefs(), false); - sendEntries(builder, sentFiles, configDefinition.getPathDefs(), false); - sendEntries(builder, sentFiles, configDefinition.getOptionalPathDefs(), false); - sendEntries(builder, sentFiles, configDefinition.getModelDefs(), true); + registerEntries(builder, registeredFiles, configDefinition.getFileDefs(), false); + registerEntries(builder, registeredFiles, configDefinition.getPathDefs(), false); + registerEntries(builder, registeredFiles, configDefinition.getOptionalPathDefs(), false); + registerEntries(builder, registeredFiles, configDefinition.getModelDefs(), true); // Inspect arrays for (Map.Entry<String, ConfigDefinition.ArrayDef> entry : configDefinition.getArrayDefs().entrySet()) { if (isNotAnyFileType(entry.getValue().getTypeSpec().getType())) continue; ConfigPayloadBuilder.Array array = builder.getArray(entry.getKey()); - sendFileEntries(array.getElements(), sentFiles, "model".equals(entry.getValue().getTypeSpec().getType())); + registerFileEntries(array.getElements(), registeredFiles, "model".equals(entry.getValue().getTypeSpec().getType())); } // Inspect maps for (Map.Entry<String, ConfigDefinition.LeafMapDef> entry : configDefinition.getLeafMapDefs().entrySet()) { if (isNotAnyFileType(entry.getValue().getTypeSpec().getType())) continue; ConfigPayloadBuilder.MapBuilder map = builder.getMap(entry.getKey()); - sendFileEntries(map.getElements(), sentFiles, "model".equals(entry.getValue().getTypeSpec().getType())); + registerFileEntries(map.getElements(), registeredFiles, "model".equals(entry.getValue().getTypeSpec().getType())); } // Inspect inner fields for (String name : configDefinition.getStructDefs().keySet()) { - sendUserConfiguredFiles(builder.getObject(name), sentFiles, key); + register(builder.getObject(name), registeredFiles, key); } for (String name : configDefinition.getInnerArrayDefs().keySet()) { ConfigPayloadBuilder.Array array = builder.getArray(name); for (ConfigPayloadBuilder element : array.getElements()) { - sendUserConfiguredFiles(element, sentFiles, key); + register(element, registeredFiles, key); } } for (String name : configDefinition.getStructMapDefs().keySet()) { ConfigPayloadBuilder.MapBuilder map = builder.getMap(name); for (ConfigPayloadBuilder element : map.getElements()) { - sendUserConfiguredFiles(element, sentFiles, key); + register(element, registeredFiles, key); } } } @@ -105,10 +107,10 @@ public class FileSender implements Serializable { return ! "file".equals(type) && ! "path".equals(type) && ! "model".equals(type); } - private void sendEntries(ConfigPayloadBuilder builder, - Map<Path, FileReference> sentFiles, - Map<String, ?> entries, - boolean isModelType) { + private void registerEntries(ConfigPayloadBuilder builder, + Map<Path, FileReference> registeredFiles, + Map<String, ?> entries, + boolean isModelType) { for (Map.Entry<String, ?> entry : entries.entrySet()) { String name = entry.getKey(); ConfigPayloadBuilder fileEntry = builder.getObject(name); @@ -116,7 +118,7 @@ public class FileSender implements Serializable { if (fileEntry.getValue() == null) throw new IllegalArgumentException("Unable to send file for field '" + name + "': Invalid config value " + fileEntry.getValue()); - sendFileEntry(fileEntry, sentFiles, isModelType); + registerFileEntry(fileEntry, registeredFiles, isModelType); } } @@ -124,13 +126,13 @@ public class FileSender implements Serializable { return entry.getValue() instanceof ConfigDefinition.OptionalPathDef && fileEntry.getValue() == null; } - private void sendFileEntries(Collection<ConfigPayloadBuilder> builders, Map<Path, FileReference> sentFiles, boolean isModelType) { + private void registerFileEntries(Collection<ConfigPayloadBuilder> builders, Map<Path, FileReference> registeredFiles, boolean isModelType) { for (ConfigPayloadBuilder builder : builders) { - sendFileEntry(builder, sentFiles, isModelType); + registerFileEntry(builder, registeredFiles, isModelType); } } - private void sendFileEntry(ConfigPayloadBuilder builder, Map<Path, FileReference> sentFiles, boolean isModelType) { + private void registerFileEntry(ConfigPayloadBuilder builder, Map<Path, FileReference> registeredFiles, boolean isModelType) { Path path; if (isModelType) { var modelReference = ModelReference.valueOf(builder.getValue()); @@ -141,10 +143,10 @@ public class FileSender implements Serializable { path = Path.fromString(builder.getValue()); } - FileReference reference = sentFiles.get(path); + FileReference reference = registeredFiles.get(path); if (reference == null) { reference = fileRegistry.addFile(path.getRelative()); - sentFiles.put(path, reference); + registeredFiles.put(path, reference); } if (isModelType) { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/filedistribution/UserConfiguredFilesTest.java index 6dc9207a8cc..93e693ebc02 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/filedistribution/UserConfiguredFilesTest.java @@ -1,10 +1,9 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.model.utils; +package com.yahoo.vespa.model.filedistribution; import com.yahoo.config.FileNode; import com.yahoo.config.FileReference; import com.yahoo.config.ModelReference; -import com.yahoo.config.OptionalPathNode; import com.yahoo.config.UrlReference; import com.yahoo.config.application.api.FileRegistry; import com.yahoo.config.model.application.provider.BaseDeployLogger; @@ -33,7 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; /** * @author Ulf Lilleengen */ -public class FileSenderTest { +public class UserConfiguredFilesTest { private SimpleConfigProducer<?> producer; private ConfigPayloadBuilder builder; @@ -64,8 +63,8 @@ public class FileSenderTest { } } - private FileSender fileSender() { - return new FileSender(serviceList, fileRegistry, new BaseDeployLogger()); + private UserConfiguredFiles userConfiguredFiles() { + return new UserConfiguredFiles(serviceList, fileRegistry, new BaseDeployLogger()); } @BeforeEach @@ -91,7 +90,7 @@ public class FileSenderTest { builder.setField("fileVal", "foo.txt"); builder.setField("stringVal", "foo.txt"); fileRegistry.pathToRef.put("foo.txt", new FileNode("fooshash").value()); - fileSender().sendUserConfiguredFiles(producer); + userConfiguredFiles().register(producer); assertEquals("fooshash", builder.getObject("fileVal").getValue()); assertEquals("foo.txt", builder.getObject("stringVal").getValue()); } @@ -103,7 +102,7 @@ public class FileSenderTest { builder.setField("fileVal", "foo.txt"); builder.setField("stringVal", "foo.txt"); fileRegistry.pathToRef.put("foo.txt", new FileNode("fooshash").value()); - fileSender().sendUserConfiguredFiles(producer); + userConfiguredFiles().register(producer); assertEquals("fooshash", builder.getObject("fileVal").getValue()); assertEquals("foo.txt", builder.getObject("stringVal").getValue()); } @@ -131,13 +130,13 @@ public class FileSenderTest { var originalValue = ModelReference.unresolved(new UrlReference("myUrl")); def.addModelDef("modelVal"); builder.setField("modelVal",originalValue.toString()); - fileSender().sendUserConfiguredFiles(producer); + userConfiguredFiles().register(producer); assertEquals(originalValue, ModelReference.valueOf(builder.getObject("modelVal").getValue())); } private void assertFileSent(String path, ModelReference originalValue) { fileRegistry.pathToRef.put(path, new FileNode("myModelHash").value()); - fileSender().sendUserConfiguredFiles(producer); + userConfiguredFiles().register(producer); var expected = ModelReference.unresolved(originalValue.modelId(), originalValue.url(), Optional.of(new FileReference("myModelHash"))); @@ -152,7 +151,7 @@ public class FileSenderTest { inner.setField("fileVal", "bar.txt"); inner.setField("stringVal", "bar.txt"); fileRegistry.pathToRef.put("bar.txt", new FileNode("barhash").value()); - fileSender().sendUserConfiguredFiles(producer); + userConfiguredFiles().register(producer); assertEquals("barhash", builder.getArray("inner").get(0).getObject("fileVal").getValue()); assertEquals("bar.txt", builder.getArray("inner").get(0).getObject("stringVal").getValue()); } @@ -169,7 +168,7 @@ public class FileSenderTest { fileRegistry.pathToRef.put("foo.txt", new FileNode("foohash").value()); fileRegistry.pathToRef.put("bar.txt", new FileNode("barhash").value()); fileRegistry.pathToRef.put("path.txt", new FileNode("pathhash").value()); - fileSender().sendUserConfiguredFiles(producer); + userConfiguredFiles().register(producer); assertEquals("foohash", builder.getArray("fileArray").get(0).getValue()); assertEquals("barhash", builder.getArray("fileArray").get(1).getValue()); assertEquals("pathhash", builder.getArray("pathArray").get(0).getValue()); @@ -188,7 +187,7 @@ public class FileSenderTest { fileRegistry.pathToRef.put("foo.txt", new FileNode("foohash").value()); fileRegistry.pathToRef.put("bar.txt", new FileNode("barhash").value()); fileRegistry.pathToRef.put("path.txt", new FileNode("pathhash").value()); - fileSender().sendUserConfiguredFiles(producer); + userConfiguredFiles().register(producer); assertEquals("foohash", builder.getArray("fileArray").get(0).getValue()); assertEquals("barhash", builder.getArray("fileArray").get(1).getValue()); assertEquals("pathhash", builder.getArray("pathArray").get(0).getValue()); @@ -202,7 +201,7 @@ public class FileSenderTest { builder.getObject("struct").setField("fileVal", "foo.txt"); builder.getObject("struct").setField("stringVal", "foo.txt"); fileRegistry.pathToRef.put("foo.txt", new FileNode("foohash").value()); - fileSender().sendUserConfiguredFiles(producer); + userConfiguredFiles().register(producer); assertEquals("foohash", builder.getObject("struct").getObject("fileVal").getValue()); assertEquals("foo.txt", builder.getObject("struct").getObject("stringVal").getValue()); } @@ -219,7 +218,7 @@ public class FileSenderTest { fileRegistry.pathToRef.put("foo.txt", new FileNode("foohash").value()); fileRegistry.pathToRef.put("bar.txt", new FileNode("barhash").value()); fileRegistry.pathToRef.put("path.txt", new FileNode("pathhash").value()); - fileSender().sendUserConfiguredFiles(producer); + userConfiguredFiles().register(producer); assertEquals("foohash", builder.getMap("fileMap").get("foo").getValue()); assertEquals("barhash", builder.getMap("fileMap").get("bar").getValue()); assertEquals("pathhash", builder.getMap("pathMap").get("path").getValue()); @@ -234,7 +233,7 @@ public class FileSenderTest { inner.setField("fileVal", "bar.txt"); inner.setField("stringVal", "bar.txt"); fileRegistry.pathToRef.put("bar.txt", new FileNode("barhash").value()); - fileSender().sendUserConfiguredFiles(producer); + userConfiguredFiles().register(producer); assertEquals("barhash", builder.getMap("inner").get("foo").getObject("fileVal").getValue()); assertEquals("bar.txt", builder.getMap("inner").get("foo").getObject("stringVal").getValue()); } @@ -244,14 +243,14 @@ public class FileSenderTest { assertThrows(IllegalArgumentException.class, () -> { def.addFileDef("fileVal"); fileRegistry.pathToRef.put("foo.txt", new FileNode("fooshash").value()); - fileSender().sendUserConfiguredFiles(producer); + userConfiguredFiles().register(producer); }); } @Test void require_that_empty_optional_paths_are_not_sent() { def.addOptionalPathDef("optionalPathVal"); - fileSender().sendUserConfiguredFiles(producer); + userConfiguredFiles().register(producer); } |