aboutsummaryrefslogtreecommitdiffstats
path: root/application-preprocessor
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-10-12 15:55:11 +0200
committerJon Bratseth <bratseth@gmail.com>2022-10-12 15:55:11 +0200
commit5e0502391c2ca7c4b0bfc9f4f652da2676f26314 (patch)
tree1fb5c7073f0af7b111d3290e4295a323d0d9ece2 /application-preprocessor
parent08f7a121fff008dd1307b106bd1b7d7a84433fe6 (diff)
Add instance tags
Diffstat (limited to 'application-preprocessor')
-rw-r--r--application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java68
-rw-r--r--application-preprocessor/src/test/java/com/yahoo/application/preprocessor/ApplicationPreprocessorTest.java11
2 files changed, 64 insertions, 15 deletions
diff --git a/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java b/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java
index 081e9ad6036..9696e9c9848 100644
--- a/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java
+++ b/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java
@@ -3,14 +3,21 @@ package com.yahoo.application.preprocessor;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.application.provider.DeployData;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
+import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.Tags;
+import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
import com.yahoo.yolean.Exceptions;
import java.io.File;
import java.io.IOException;
import java.util.Optional;
+import java.util.Set;
/**
* Main entry for preprocessing an application package.
@@ -21,36 +28,75 @@ public class ApplicationPreprocessor {
private final File applicationDir;
private final Optional<File> outputDir;
+ private final Optional<InstanceName> instance;
private final Optional<Environment> environment;
private final Optional<RegionName> region;
+ private final Tags tags;
- public ApplicationPreprocessor(File applicationDir, Optional<File> outputDir, Optional<Environment> environment, Optional<RegionName> region) {
+ public ApplicationPreprocessor(File applicationDir,
+ Optional<File> outputDir,
+ Optional<InstanceName> instance,
+ Optional<Environment> environment,
+ Optional<RegionName> region,
+ Tags tags) {
this.applicationDir = applicationDir;
this.outputDir = outputDir;
+ this.instance = instance;
this.environment = environment;
this.region = region;
+ this.tags = tags;
}
public void run() throws IOException {
FilesApplicationPackage.Builder applicationPackageBuilder = new FilesApplicationPackage.Builder(applicationDir);
outputDir.ifPresent(applicationPackageBuilder::preprocessedDir);
- ApplicationPackage preprocessed = applicationPackageBuilder.build().preprocess(
- new Zone(environment.orElse(Environment.defaultEnvironment()), region.orElse(RegionName.defaultName())),
- new BaseDeployLogger());
+ applicationPackageBuilder.deployData(new DeployData(applicationDir.getAbsolutePath(),
+ ApplicationId.from(TenantName.defaultName(),
+ ApplicationName.defaultName(),
+ instance.orElse(InstanceName.defaultName())),
+ tags,
+ System.currentTimeMillis(),
+ false,
+ 0L,
+ -1));
+
+ ApplicationPackage preprocessed = applicationPackageBuilder.build().preprocess(new Zone(environment.orElse(Environment.defaultEnvironment()),
+ region.orElse(RegionName.defaultName())),
+ new BaseDeployLogger());
preprocessed.validateXML();
}
public static void main(String[] args) {
- int argCount = args.length;
- if (argCount < 1) {
- System.out.println("Usage: vespa-application-preprocessor <application package path> [environment] [region] [output path]");
+ if (args.length < 1) {
+ System.out.println("Usage: vespa-application-preprocessor <application package path> [instance] [environment] [region] [tag] [output path]");
System.exit(1);
}
File applicationDir = new File(args[0]);
- Optional<Environment> environment = (argCount > 1) ? Optional.of(Environment.valueOf(args[1])) : Optional.empty();
- Optional<RegionName> region = (argCount > 2) ? Optional.of(RegionName.from(args[2])) : Optional.empty();
- Optional<File> outputDir = (argCount > 3) ? Optional.of(new File(args[3])) : Optional.empty();
- ApplicationPreprocessor preprocessor = new ApplicationPreprocessor(applicationDir, outputDir, environment, region);
+ Optional<InstanceName> instance;
+ Optional<Environment> environment;
+ Optional<RegionName> region;
+ Tags tags;
+ Optional<File> outputDir;
+ if (args.length <= 4) { // Legacy: No instance and tags
+ instance = Optional.empty();
+ environment = args.length > 1 ? Optional.of(Environment.valueOf(args[1])) : Optional.empty();
+ region = args.length > 2 ? Optional.of(RegionName.from(args[2])) : Optional.empty();
+ tags = Tags.empty();
+ outputDir = args.length > 3 ? Optional.of(new File(args[3])) : Optional.empty();
+ }
+ else {
+ instance = Optional.of(InstanceName.from(args[1]));
+ environment = Optional.of(Environment.valueOf(args[2]));
+ region = Optional.of(RegionName.from(args[3]));
+ tags = Tags.fromString(args[4]);
+ outputDir = args.length > 5 ? Optional.of(new File(args[5])) : Optional.empty();
+ }
+ ApplicationPreprocessor preprocessor = new ApplicationPreprocessor(applicationDir,
+ outputDir,
+ instance,
+ environment,
+ region,
+ tags);
try {
preprocessor.run();
System.out.println("Application preprocessed successfully and written to " +
diff --git a/application-preprocessor/src/test/java/com/yahoo/application/preprocessor/ApplicationPreprocessorTest.java b/application-preprocessor/src/test/java/com/yahoo/application/preprocessor/ApplicationPreprocessorTest.java
index 0e5d8fb2784..4de4312c099 100644
--- a/application-preprocessor/src/test/java/com/yahoo/application/preprocessor/ApplicationPreprocessorTest.java
+++ b/application-preprocessor/src/test/java/com/yahoo/application/preprocessor/ApplicationPreprocessorTest.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.preprocessor;
+import com.yahoo.config.provision.Tags;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.xml.sax.SAXException;
@@ -18,11 +19,13 @@ public class ApplicationPreprocessorTest {
// Basic test just to check that instantiation and run() works. Unit testing is in config-application-package
@Test
- void basic() throws ParserConfigurationException, TransformerException, SAXException, IOException {
+ void basic() throws IOException {
ApplicationPreprocessor preprocessor = new ApplicationPreprocessor(new File("src/test/resources/simple"),
- Optional.of(newFolder(outputDir, "basic")),
- Optional.empty(),
- Optional.empty());
+ Optional.of(newFolder(outputDir, "basic")),
+ Optional.empty(),
+ Optional.empty(),
+ Optional.empty(),
+ Tags.empty());
preprocessor.run();
}