summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2021-02-18 16:06:40 +0100
committerJon Bratseth <bratseth@gmail.com>2021-02-18 16:06:40 +0100
commitcf5d9df82b0502dfcc975b847915c4606eb02dea (patch)
treef334a03c3556037e1e9008bb8b0f56806375c089 /controller-api
parentcdcc928fb9f657a92f0a71bd541590cc821c76c3 (diff)
Pass and store traffic fractions
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java4
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationPatch.java34
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ProvisionResource.java5
3 files changed, 41 insertions, 2 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java
index 63ee93cb4c7..80c1f38ecf4 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java
@@ -74,8 +74,8 @@ public interface NodeRepository {
Application getApplication(ZoneId zone, ApplicationId application);
- void setTrafficFraction(ZoneId zone, ApplicationId application,
- double currentTrafficFraction, double maxTrafficFraction);
+ void patchApplication(ZoneId zone, ApplicationId application,
+ double currentTrafficFraction, double maxTrafficFraction);
/** Upgrade all nodes of given type to a new version */
void upgrade(ZoneId zone, NodeType type, Version version);
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationPatch.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationPatch.java
new file mode 100644
index 00000000000..1d1ea054a2d
--- /dev/null
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationPatch.java
@@ -0,0 +1,34 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Patchable data under Application
+ *
+ * @author bratseth
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ApplicationPatch {
+
+ @JsonProperty
+ private final Double currentTrafficFraction;
+
+ @JsonProperty
+ private final Double maxTrafficFraction;
+
+ @JsonCreator
+ public ApplicationPatch(@JsonProperty("currentTrafficFraction") Double currentTrafficFraction,
+ @JsonProperty("maxTrafficFraction") Double maxTrafficFraction) {
+ this.currentTrafficFraction = currentTrafficFraction;
+ this.maxTrafficFraction = maxTrafficFraction;
+ }
+
+ public Double getCurrentTrafficFraction() { return currentTrafficFraction; }
+ public Double getMaxTrafficFraction() { return maxTrafficFraction; }
+
+}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ProvisionResource.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ProvisionResource.java
index 97720adbcc6..337b193a332 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ProvisionResource.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ProvisionResource.java
@@ -61,6 +61,11 @@ public interface ProvisionResource {
@Path("/application/{application}")
ApplicationData getApplication(@PathParam("application") String applicationId);
+ @POST
+ @Path("/application/{application}")
+ String patchApplication(@PathParam("application") String applicationId, ApplicationPatch applicationPatch,
+ @HeaderParam("X-HTTP-Method-Override") String patchOverride);
+
@PUT
@Path("/state/{state}/{hostname}")
String setState(@PathParam("state") NodeState state, @PathParam("hostname") String hostname);