diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2019-09-28 20:04:38 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2019-09-28 20:04:38 +0200 |
commit | 38d2faedae48ec68f25fe55a88d0f80b923fbe89 (patch) | |
tree | 345f251cbe9866961de489f918df711af3f76c64 | |
parent | 1091542c58fd3d8a0b19a8925e15bb4752fb5fcb (diff) |
Expose application id through an interface
3 files changed, 37 insertions, 20 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ApplicationIdSource.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ApplicationIdSource.java new file mode 100644 index 00000000000..0562ec91fb1 --- /dev/null +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ApplicationIdSource.java @@ -0,0 +1,16 @@ +package com.yahoo.vespa.hosted.controller.api.integration; + +import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.TenantName; + +import java.util.List; + +public interface ApplicationIdSource { + + /** Returns a list of all known application instance IDs. */ + List<ApplicationId> listApplications(); + + /** Returns a list of all known application instance IDs for the given tenant. */ + List<ApplicationId> listApplications(TenantName tenant); + +} diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java index ab0a110be29..164923d1b49 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java @@ -9,10 +9,8 @@ import com.yahoo.config.application.api.ValidationOverrides; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.InstanceName; import com.yahoo.config.provision.TenantName; -import com.yahoo.config.provision.zone.ZoneApi; import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.vespa.athenz.api.AthenzDomain; import com.yahoo.vespa.athenz.api.AthenzIdentity; @@ -101,7 +99,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import static com.yahoo.vespa.hosted.controller.api.integration.configserver.Node.State.active; -import static com.yahoo.vespa.hosted.controller.api.integration.configserver.Node.State.inactive; import static com.yahoo.vespa.hosted.controller.api.integration.configserver.Node.State.reserved; import static java.util.Comparator.naturalOrder; diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java index 8ed94d2ead5..786eccc2e24 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java @@ -5,12 +5,15 @@ import com.google.inject.Inject; import com.yahoo.component.AbstractComponent; import com.yahoo.component.Version; import com.yahoo.component.Vtag; +import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.CloudName; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.SystemName; +import com.yahoo.config.provision.TenantName; import com.yahoo.config.provision.zone.ZoneApi; import com.yahoo.vespa.curator.Lock; import com.yahoo.vespa.flags.FlagSource; +import com.yahoo.vespa.hosted.controller.api.integration.ApplicationIdSource; import com.yahoo.vespa.hosted.controller.api.integration.ServiceRegistry; import com.yahoo.vespa.hosted.controller.api.integration.maven.MavenRepository; import com.yahoo.vespa.hosted.controller.api.integration.user.Roles; @@ -34,6 +37,7 @@ import com.yahoo.vespa.serviceview.bindings.ApplicationView; import java.time.Clock; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -56,7 +60,7 @@ import java.util.stream.Stream; * * @author bratseth */ -public class Controller extends AbstractComponent { +public class Controller extends AbstractComponent implements ApplicationIdSource { private static final Logger log = Logger.getLogger(Controller.class.getName()); @@ -271,22 +275,6 @@ public class Controller extends AbstractComponent { return auditLogger; } - /** Returns all other roles the given tenant role implies. */ - public Set<Role> impliedRoles(TenantRole role) { - return Stream.concat(Roles.tenantRoles(role.tenant()).stream(), - applications().asList(role.tenant()).stream() - .flatMap(application -> Roles.applicationRoles(application.id().tenant(), application.id().application()).stream())) - .filter(role::implies) - .collect(Collectors.toUnmodifiableSet()); - } - - /** Returns all other roles the given application role implies. */ - public Set<Role> impliedRoles(ApplicationRole role) { - return Roles.applicationRoles(role.tenant(), role.application()).stream() - .filter(role::implies) - .collect(Collectors.toUnmodifiableSet()); - } - private Set<CloudName> clouds() { return zoneRegistry.zones().all().zones().stream() .map(ZoneApi::getCloudName) @@ -297,4 +285,20 @@ public class Controller extends AbstractComponent { return vespaVersion.map(v -> v.versionNumber().toFullString()).orElse("unknown"); } + @Override + public List<ApplicationId> listApplications() { + return applications().asList().stream() + .flatMap(application -> application.instances().keySet().stream() + .map(application.id()::instance)) + .collect(Collectors.toUnmodifiableList()); + } + + @Override + public List<ApplicationId> listApplications(TenantName tenant) { + return applications().asList(tenant).stream() + .flatMap(application -> application.instances().keySet().stream() + .map(application.id()::instance)) + .collect(Collectors.toUnmodifiableList()); + } + } |