diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-04-09 07:56:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-09 07:56:15 +0100 |
commit | 85b3456f65315b9bc0c8ddb7f226781aa56dea0e (patch) | |
tree | b38aa855d178c4071e12db0a28b8d278c4cea853 /controller-api | |
parent | f22624922c3aad2e9804de41a006d61dba6164d3 (diff) | |
parent | 42d75629f9a3a33bd861fce86a25da5cd1900e18 (diff) |
Merge pull request #9051 from vespa-engine/hakonhall/move-zoneid-to-config-provisioning
Move ZoneId to config-provisioning
Diffstat (limited to 'controller-api')
16 files changed, 13 insertions, 297 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/DeploymentId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/DeploymentId.java index 04dd91670c1..5b538f23fbd 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/DeploymentId.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/DeploymentId.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.controller.api.identifiers; -import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId; +import com.yahoo.config.provision.zone.ZoneId; import java.util.Objects; diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java index 849912ef581..32e94625c5a 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java @@ -4,7 +4,7 @@ package com.yahoo.vespa.hosted.controller.api.integration; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.HostName; import com.yahoo.vespa.hosted.controller.api.integration.routing.RotationStatus; -import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId; +import com.yahoo.config.provision.zone.ZoneId; import java.util.Map; diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java index b43cb176607..91a9b5472f5 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java @@ -5,7 +5,7 @@ import com.yahoo.vespa.hosted.controller.api.application.v4.model.DeployOptions; import com.yahoo.vespa.hosted.controller.api.application.v4.model.EndpointStatus; import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId; import com.yahoo.vespa.hosted.controller.api.identifiers.Hostname; -import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId; +import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.vespa.serviceview.bindings.ApplicationView; import java.io.IOException; 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 7b46e1f589f..95544c23db5 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 @@ -4,7 +4,7 @@ package com.yahoo.vespa.hosted.controller.api.integration.configserver; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.NodeType; -import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId; +import com.yahoo.config.provision.zone.ZoneId; import java.util.List; import java.util.Set; diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ServiceConvergence.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ServiceConvergence.java index 6cfdc9fadc8..b23faa2ec3f 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ServiceConvergence.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ServiceConvergence.java @@ -4,10 +4,9 @@ package com.yahoo.vespa.hosted.controller.api.integration.configserver; import com.google.common.collect.ImmutableList; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.HostName; -import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId; +import com.yahoo.config.provision.zone.ZoneId; import java.util.List; -import java.util.OptionalLong; /** * Service convergence status for an application. diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ArtifactRepository.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ArtifactRepository.java index 13b16fc4cd1..890059b86b2 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ArtifactRepository.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ArtifactRepository.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.controller.api.integration.deployment; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId; +import com.yahoo.config.provision.zone.ZoneId; /** * A repository of application build artifacts. diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java index 1dd9da6dc32..f2334d01716 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java @@ -5,7 +5,7 @@ import com.google.common.collect.ImmutableMap; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.SystemName; -import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId; +import com.yahoo.config.provision.zone.ZoneId; import java.util.Optional; import java.util.stream.Stream; diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java index e7d7cfe620d..c377b68bb22 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.hosted.controller.api.integration.dns; import com.yahoo.config.provision.HostName; -import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId; +import com.yahoo.config.provision.zone.ZoneId; import java.util.Objects; diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryClientInterface.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryClientInterface.java index 8151cce3d76..4b495ebf331 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryClientInterface.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryClientInterface.java @@ -1,7 +1,7 @@ // Copyright 2018 Yahoo Holdings. 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.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId; +import com.yahoo.config.provision.zone.ZoneId; import java.io.IOException; import java.util.Collection; diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/UpgradePolicy.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/UpgradePolicy.java deleted file mode 100644 index 96ff468d2d6..00000000000 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/UpgradePolicy.java +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.controller.api.integration.zone; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -/** - * This class declares the order to use when upgrading zones in a system. - * - * @author mpolden - */ -public class UpgradePolicy { - - private final List<List<ZoneId>> zones; - - private UpgradePolicy(List<List<ZoneId>> zones) { - this.zones = zones; - } - - public List<List<ZoneId>> asList() { - return Collections.unmodifiableList(zones); - } - - private UpgradePolicy with(ZoneId... zone) { - List<List<ZoneId>> zones = new ArrayList<>(this.zones); - zones.add(Arrays.asList(zone)); - return new UpgradePolicy(zones); - } - - /** Upgrade given zone as the next step */ - public UpgradePolicy upgrade(ZoneId zone) { - return with(zone); - } - - /** Upgrade given zones in parallel as the next step */ - public UpgradePolicy upgradeInParallel(ZoneId... zone) { - return with(zone); - } - - public static UpgradePolicy create() { - return new UpgradePolicy(Collections.emptyList()); - } - -} diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneFilter.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneFilter.java deleted file mode 100644 index 9282e612dac..00000000000 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneFilter.java +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.controller.api.integration.zone; - -import com.yahoo.config.provision.CloudName; - -/** - * A ZoneId list which can be filtered in various ways; elements can be accessed after at least one filter. - * - * The methods here return instances of {@link ZoneList}, which extends ZoneFilter, but with accessors and additional filters. - * This forces the developer to consider which of the filters in this class to apply, prior to accessing any zones. - * - * @author jonmv - */ -public interface ZoneFilter { - - /** Negates the next filter. */ - ZoneFilter not(); - - /** Zones which are upgraded by the controller. */ - ZoneList controllerUpgraded(); - - /** Zones where config servers are up and running. */ - ZoneList reachable(); - - /** All zones from the initial pool. */ - ZoneList all(); - - /** Zones in the specified cloud */ - default ZoneList ofCloud(CloudName cloud) { - return all(); // Not implemented in this repo. - } - -} diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneFilterMock.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneFilterMock.java deleted file mode 100644 index 10cf862fa30..00000000000 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneFilterMock.java +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.controller.api.integration.zone; - -import com.yahoo.config.provision.Environment; -import com.yahoo.config.provision.RegionName; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.function.Predicate; -import java.util.stream.Collectors; - -/** - * A ZoneList implementation which assumes all zones are controllerManaged. - * - * @author jonmv - */ -public class ZoneFilterMock implements ZoneList { - - private final List<ZoneId> zones; - private final boolean negate; - - private ZoneFilterMock(List<ZoneId> zones, boolean negate) { - this.negate = negate; - this.zones = zones; - } - - public static ZoneFilter from(Collection<ZoneId> zones) { - return new ZoneFilterMock(new ArrayList<>(zones), false); - } - - @Override - public ZoneList not() { - return new ZoneFilterMock(zones, ! negate); - } - - @Override - public ZoneList all() { - return filter(zoneId -> true); - } - - @Override - public ZoneList controllerUpgraded() { - return all(); - } - - @Override - public ZoneList reachable() { - return all(); - } - - @Override - public ZoneList in(Environment... environments) { - return filter(zoneId -> new HashSet<>(Arrays.asList(environments)).contains(zoneId.environment())); - } - - @Override - public ZoneList in(RegionName... regions) { - return filter(zoneId -> new HashSet<>(Arrays.asList(regions)).contains(zoneId.region())); - } - - @Override - public ZoneList among(ZoneId... zones) { - return filter(zoneId -> new HashSet<>(Arrays.asList(zones)).contains(zoneId)); - } - - @Override - public List<ZoneId> ids() { - return Collections.unmodifiableList(zones); - } - - private ZoneFilterMock filter(Predicate<ZoneId> condition) { - return new ZoneFilterMock(zones.stream().filter(negate ? condition.negate() : condition).collect(Collectors.toList()), false); - } - -} diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneId.java deleted file mode 100644 index 962aa1ad93e..00000000000 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneId.java +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.controller.api.integration.zone; - -import com.yahoo.config.provision.CloudName; -import com.yahoo.config.provision.Environment; -import com.yahoo.config.provision.RegionName; - -import java.util.Objects; - -/** - * Unique identifier for a Zone; use when referencing them. - * - * Serialised form is 'environment.region'. - * - * @author jonmv - */ -public class ZoneId { - // TODO: Replace usages of environment + region with usages of this. - - private final Environment environment; - private final RegionName region; - private final CloudName cloud; - - private ZoneId(Environment environment, RegionName region, CloudName cloud) { - this.environment = Objects.requireNonNull(environment, "environment must be non-null"); - this.region = Objects.requireNonNull(region, "region must be non-null"); - this.cloud = Objects.requireNonNull(cloud, "cloud must be non-null"); - } - - private ZoneId(Environment environment, RegionName region) { - this(environment, region, CloudName.defaultName()); - } - - public static ZoneId from(Environment environment, RegionName region) { - return new ZoneId(environment, region); - } - - public static ZoneId from(String environment, String region) { - return from(Environment.from(environment), RegionName.from(region)); - } - - /** Create from a serialised ZoneId. Inverse of {@code ZoneId.value()}. */ - public static ZoneId from(String value) { - String[] parts = value.split("\\."); - return from(parts[0], parts[1]); - } - - public static ZoneId from(Environment environment, RegionName region, CloudName cloud) { - return new ZoneId(environment, region, cloud); - } - - public static ZoneId from(String environment, String region, String cloud) { - return new ZoneId(Environment.from(environment), RegionName.from(region), CloudName.from(cloud)); - } - - public Environment environment() { - return environment; - } - - public RegionName region() { - return region; - } - - public CloudName cloud() { - return cloud; - } - - /** Returns the serialised value of this. Inverse of {@code ZoneId.from(String value)}. */ - public String value() { - return environment + "." + region; - } - - @Override - public String toString() { - return "zone " + value() + " in " + cloud; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - ZoneId zoneId = (ZoneId) o; - return environment == zoneId.environment && - Objects.equals(region, zoneId.region); - } - - @Override - public int hashCode() { - return Objects.hash(environment, region); - } - -} - diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneList.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneList.java deleted file mode 100644 index 4205f30e995..00000000000 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneList.java +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.controller.api.integration.zone; - -import com.yahoo.config.provision.Environment; -import com.yahoo.config.provision.RegionName; - -import java.util.List; - -/** - * Provides filters for and access to a list of ZoneIds. - * - * This is typically offered after an initial filter from {@link ZoneFilter} has been applied. - * This forces the developer to consider which zones to process. - * - * @author jonmv - */ -public interface ZoneList extends ZoneFilter { - - /** Negates the next filter. */ - @Override - ZoneList not(); - - /** Zones in one of the given environments. */ - ZoneList in(Environment... environments); - - /** Zones in one of the given regions. */ - ZoneList in(RegionName... regions); - - /** Only the given zones — combine with not() for best effect! */ - ZoneList among(ZoneId... zones); - - /** Returns the id of all zones in this list as — you guessed it — a list. */ - List<ZoneId> ids(); - -} diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java index d085d00baaa..c168ddf6caf 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java @@ -6,6 +6,9 @@ import com.yahoo.config.provision.CloudName; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.SystemName; +import com.yahoo.config.provision.zone.UpgradePolicy; +import com.yahoo.config.provision.zone.ZoneFilter; +import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.vespa.athenz.api.AthenzService; import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId; import com.yahoo.vespa.hosted.controller.api.integration.deployment.RunId; diff --git a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/identifiers/IdentifierTest.java b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/identifiers/IdentifierTest.java index a01e7c22d35..8e278240a02 100644 --- a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/identifiers/IdentifierTest.java +++ b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/identifiers/IdentifierTest.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.controller.api.identifiers; -import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId; +import com.yahoo.config.provision.zone.ZoneId; import org.junit.Test; import static org.junit.Assert.assertEquals; |