summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-01-26 08:52:18 +0100
committerjonmv <venstad@gmail.com>2023-01-26 08:52:18 +0100
commit26b90b0ad94528d450a07a65f4e7ee456c3aae33 (patch)
treea6de1eec0efce419534f635628ca4cf4e4153427
parentd01b7d1cc323149e65698c41c92a18437470b972 (diff)
Let controller read whether zone endpoints are public
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/LoadBalancer.java78
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersResponse.java1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers-single.json3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json9
4 files changed, 26 insertions, 65 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/LoadBalancer.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/LoadBalancer.java
index 26330f11d65..0c81fbd3670 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/LoadBalancer.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/LoadBalancer.java
@@ -8,74 +8,30 @@ import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.ZoneEndpoint.AllowedUrn;
import java.util.List;
-import java.util.Objects;
import java.util.Optional;
+import static java.util.Objects.requireNonNull;
+
/**
* Represents an exclusive load balancer, assigned to an application's cluster.
*
* @author mortent
*/
-public class LoadBalancer {
-
- private final String id;
- private final ApplicationId application;
- private final ClusterSpec.Id cluster;
- private final Optional<DomainName> hostname;
- private final Optional<String> ipAddress;
- private final State state;
- private final Optional<String> dnsZone;
- private final Optional<CloudAccount> cloudAccount;
- private final Optional<PrivateServiceInfo> service;
-
- public LoadBalancer(String id, ApplicationId application, ClusterSpec.Id cluster, Optional<DomainName> hostname,
- Optional<String> ipAddress, State state, Optional<String> dnsZone,
- Optional<CloudAccount> cloudAccount, Optional<PrivateServiceInfo> service) {
- this.id = Objects.requireNonNull(id, "id must be non-null");
- this.application = Objects.requireNonNull(application, "application must be non-null");
- this.cluster = Objects.requireNonNull(cluster, "cluster must be non-null");
- this.hostname = Objects.requireNonNull(hostname, "hostname must be non-null");
- this.ipAddress = Objects.requireNonNull(ipAddress, "ipAddress must be non-null");
- this.state = Objects.requireNonNull(state, "state must be non-null");
- this.dnsZone = Objects.requireNonNull(dnsZone, "dnsZone must be non-null");
- this.cloudAccount = Objects.requireNonNull(cloudAccount, "cloudAccount must be non-null");
- this.service = Objects.requireNonNull(service, "service must be non-null");
- }
-
- public String id() {
- return id;
- }
-
- public ApplicationId application() {
- return application;
- }
-
- public ClusterSpec.Id cluster() {
- return cluster;
- }
-
- public Optional<DomainName> hostname() {
- return hostname;
- }
-
- public Optional<String> ipAddress() {
- return ipAddress;
- }
-
- public Optional<String> dnsZone() {
- return dnsZone;
- }
-
- public State state() {
- return state;
- }
-
- public Optional<CloudAccount> cloudAccount() {
- return cloudAccount;
- }
-
- public Optional<PrivateServiceInfo> service() {
- return service;
+public record LoadBalancer(String id, ApplicationId application, ClusterSpec.Id cluster,
+ Optional<DomainName> hostname, Optional<String> ipAddress,
+ State state, Optional<String> dnsZone, Optional<CloudAccount> cloudAccount,
+ Optional<PrivateServiceInfo> service, boolean isPublic) {
+
+ public LoadBalancer {
+ requireNonNull(id, "id must be non-null");
+ requireNonNull(application, "application must be non-null");
+ requireNonNull(cluster, "cluster must be non-null");
+ requireNonNull(hostname, "hostname must be non-null");
+ requireNonNull(ipAddress, "ipAddress must be non-null");
+ requireNonNull(state, "state must be non-null");
+ requireNonNull(dnsZone, "dnsZone must be non-null");
+ requireNonNull(cloudAccount, "cloudAccount must be non-null");
+ requireNonNull(service, "service must be non-null");
}
public enum State {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersResponse.java
index 15a799c06d8..bf5b735c4a0 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersResponse.java
@@ -89,6 +89,7 @@ public class LoadBalancersResponse extends SlimeJsonResponse {
}
}
instance.serviceId().ifPresent(serviceId -> lbObject.setString("serviceId", serviceId.value()));
+ lbObject.setBool("public", instance.settings().isPublicEndpoint());
});
lb.instance()
.map(LoadBalancerInstance::cloudAccount)
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers-single.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers-single.json
index a9a728bab15..f6d9c1f079c 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers-single.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers-single.json
@@ -28,7 +28,8 @@
"ipAddress": "127.0.14.1",
"port": 4443
}
- ]
+ ],
+ "public": true
}
]
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json
index becca98a913..eef381e8df7 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/load-balancers.json
@@ -37,7 +37,8 @@
}
]
},
- "serviceId": "service"
+ "serviceId": "service",
+ "public": false
},
{
"id": "cfg:cfg:cfg:configservers",
@@ -56,7 +57,8 @@
"ports": [
4443
],
- "reals": []
+ "reals": [],
+ "public": true
},
{
"id": "tenant4:application4:instance4:id4",
@@ -86,7 +88,8 @@
"ipAddress": "127.0.14.1",
"port": 4443
}
- ]
+ ],
+ "public": true
}
]
}