diff options
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 } ] } |