summaryrefslogtreecommitdiffstats
path: root/vespa-maven-plugin
diff options
context:
space:
mode:
Diffstat (limited to 'vespa-maven-plugin')
-rw-r--r--vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java13
-rw-r--r--vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/DeleteMojo.java31
-rw-r--r--vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/DeployMojo.java8
3 files changed, 45 insertions, 7 deletions
diff --git a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java
index e2bbbb86706..6b7af01a3ea 100644
--- a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java
+++ b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java
@@ -2,6 +2,8 @@ package ai.vespa.hosted.plugin;
import ai.vespa.hosted.api.ControllerHttpClient;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.zone.ZoneId;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Parameter;
@@ -68,6 +70,17 @@ public abstract class AbstractVespaMojo extends AbstractMojo {
: ControllerHttpClient.withKeyAndCertificate(URI.create(endpoint), Paths.get(privateKeyFile), Paths.get(certificateFile));
}
+ protected ZoneId zoneOf(String environment, String region) {
+ if (region == null)
+ return controller.defaultZone(environment != null ? Environment.from(environment)
+ : Environment.dev);
+
+ if (environment == null)
+ throw new IllegalArgumentException("Environment must be specified if region is specified");
+
+ return ZoneId.from(environment, region);
+ }
+
protected String projectPathOf(String first, String... rest) {
return project.getBasedir().toPath().resolve(Path.of(first, rest)).toString();
}
diff --git a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/DeleteMojo.java b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/DeleteMojo.java
new file mode 100644
index 00000000000..6d9c4cb2972
--- /dev/null
+++ b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/DeleteMojo.java
@@ -0,0 +1,31 @@
+package ai.vespa.hosted.plugin;
+
+import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.zone.ZoneId;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+/**
+ * Deletes a Vespa application deployment, provided the deployment is in a manually deployed environment.
+ *
+ * @author jonmv
+ */
+@Mojo(name = "delete")
+public class DeleteMojo extends AbstractVespaMojo {
+
+ @Parameter(property = "environment")
+ private String environment;
+
+ @Parameter(property = "region")
+ private String region;
+
+ @Override
+ protected void doExecute() {
+ if (environment != null && ! Environment.from(environment).isManuallyDeployed())
+ throw new IllegalArgumentException("Manual deletion is not permitted in " + environment);
+
+ getLog().info(controller.deactivate(id, zoneOf(environment, region)));
+ }
+
+}
+
diff --git a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/DeployMojo.java b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/DeployMojo.java
index d62ccb1bba4..d6d98b945c9 100644
--- a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/DeployMojo.java
+++ b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/DeployMojo.java
@@ -4,7 +4,6 @@ import ai.vespa.hosted.api.Deployment;
import ai.vespa.hosted.api.DeploymentLog;
import ai.vespa.hosted.api.DeploymentResult;
import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.zone.ZoneId;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
@@ -42,12 +41,7 @@ public class DeployMojo extends AbstractVespaMojo {
projectPathOf("target", "application.zip"))));
if (vespaVersion != null) deployment = deployment.atVersion(vespaVersion);
- ZoneId zone = region == null
- ? controller.defaultZone(environment == null
- ? Environment.dev
- : Environment.from(environment))
- : ZoneId.from(environment, region);
-
+ ZoneId zone = zoneOf(environment, region);
DeploymentResult result = controller.deploy(deployment, id, zone);
getLog().info(result.message());