summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@yahooinc.com>2024-05-19 16:56:56 +0200
committerHåkon Hallingstad <hakon@yahooinc.com>2024-05-19 16:56:56 +0200
commit41bf2ad54d8896188dd3c766e2e901af5f08e1c3 (patch)
tree7389d80435bfa6e8037fc434939939a35d08acd3
parentcbb09179e61b54c568ed9976194402e935977946 (diff)
Avoid injecting Exclusivity
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java9
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Fixture.java9
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTester.java7
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java13
9 files changed, 17 insertions, 34 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
index cc46fc381f0..0778e21fcd8 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
@@ -57,7 +57,6 @@ public class NodeRepository extends AbstractComponent implements HealthCheckerPr
private final CuratorDb db;
private final Clock clock;
private final Zone zone;
- private final Exclusivity exclusivity;
private final Nodes nodes;
private final NodeFlavors flavors;
private final HostResourcesCalculator resourcesCalculator;
@@ -87,7 +86,6 @@ public class NodeRepository extends AbstractComponent implements HealthCheckerPr
ProvisionServiceProvider provisionServiceProvider,
Curator curator,
Zone zone,
- Exclusivity exclusivity,
FlagSource flagSource,
MetricsDb metricsDb,
Orchestrator orchestrator) {
@@ -96,7 +94,6 @@ public class NodeRepository extends AbstractComponent implements HealthCheckerPr
curator,
Clock.systemUTC(),
zone,
- exclusivity,
new DnsNameResolver(),
DockerImage.fromString(config.containerImage()),
optionalImage(config.tenantContainerImage()),
@@ -117,7 +114,6 @@ public class NodeRepository extends AbstractComponent implements HealthCheckerPr
Curator curator,
Clock clock,
Zone zone,
- Exclusivity exclusivity,
NameResolver nameResolver,
DockerImage containerImage,
Optional<DockerImage> tenantContainerImage,
@@ -136,7 +132,6 @@ public class NodeRepository extends AbstractComponent implements HealthCheckerPr
this.db = new CuratorDb(flavors, curator, clock, useCuratorClientCache);
this.clock = clock;
this.zone = zone;
- this.exclusivity = exclusivity;
this.applications = new Applications(db);
this.nodes = new Nodes(db, zone, clock, orchestrator, applications);
this.flavors = flavors;
@@ -213,14 +208,14 @@ public class NodeRepository extends AbstractComponent implements HealthCheckerPr
/** The number of nodes we should ensure has free capacity for node failures whenever possible */
public int spareCount() { return spareCount; }
- public Exclusivity exclusivity() { return exclusivity; }
+ public Exclusivity exclusivity() { return new Exclusivity(zone, PermanentFlags.SHARED_HOST.bindTo(flagSource).value()); }
public CapacityPolicies capacityPoliciesFor(ApplicationId applicationId) {
String adminClusterNodeArchitecture = PermanentFlags.ADMIN_CLUSTER_NODE_ARCHITECTURE
.bindTo(flagSource)
.with(INSTANCE_ID, applicationId.serializedForm())
.value();
- return new CapacityPolicies(zone, exclusivity, applicationId, Architecture.valueOf(adminClusterNodeArchitecture));
+ return new CapacityPolicies(zone, exclusivity(), applicationId, Architecture.valueOf(adminClusterNodeArchitecture));
}
/**
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java
index c085a3ed27c..b55b961fea3 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java
@@ -92,7 +92,6 @@ public class MockNodeRepository extends NodeRepository {
curator,
Clock.fixed(Instant.ofEpochMilli(123), ZoneId.of("Z")),
zone,
- new Exclusivity(zone, SharedHosts.empty()),
new MockNameResolver().mockAnyLookup(),
DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"),
Optional.empty(),
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java
index fb96d6f798e..04d2cd9b575 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java
@@ -42,18 +42,16 @@ public class NodeRepositoryTester {
clock = new ManualClock();
curator = new MockCurator();
curator.setZooKeeperEnsembleConnectionSpec("server1:1234,server2:5678");
- var flagSource = new InMemoryFlagSource();
nodeRepository = new NodeRepository(nodeFlavors,
new EmptyProvisionServiceProvider(),
curator,
clock,
zone,
- new Exclusivity(zone, SharedHosts.empty()),
new MockNameResolver().mockAnyLookup(),
DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"),
Optional.empty(),
Optional.empty(),
- flagSource,
+ new InMemoryFlagSource(),
new MemoryMetricsDb(clock),
new OrchestratorMock(),
true,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Fixture.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Fixture.java
index f9f3ca9db8d..a7ea9e2d669 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Fixture.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Fixture.java
@@ -15,6 +15,9 @@ import com.yahoo.config.provision.SharedHosts;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.flags.InMemoryFlagSource;
+import com.yahoo.vespa.flags.PermanentFlags;
+import com.yahoo.vespa.flags.custom.HostResources;
+import com.yahoo.vespa.flags.custom.SharedHost;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.applications.Application;
@@ -49,7 +52,7 @@ public class Fixture {
applicationId = builder.application;
clusterSpec = builder.cluster;
capacity = builder.capacity;
- tester = new DynamicProvisioningTester(builder.zone, builder.resourceCalculator, builder.hostFlavors, builder.flagSource, builder.sharedHosts, hostCount);
+ tester = new DynamicProvisioningTester(builder.zone, builder.resourceCalculator, builder.hostFlavors, builder.flagSource, hostCount);
var deployCapacity = initialResources.isPresent() ? Capacity.from(initialResources.get()) : capacity;
tester.deploy(builder.application, builder.cluster, deployCapacity);
this.loader = new Loader(this);
@@ -176,7 +179,6 @@ public class Fixture {
HostResourcesCalculator resourceCalculator = new DynamicProvisioningTester.MockHostResourcesCalculator(zone);
final InMemoryFlagSource flagSource = new InMemoryFlagSource();
int hostCount = 0;
- SharedHosts sharedHosts = SharedHosts.empty();
public Fixture.Builder zone(Zone zone) {
this.zone = zone;
@@ -283,7 +285,8 @@ public class Fixture {
}
public Fixture.Builder hostSharing() {
- sharedHosts = SharedHosts.ofConstant(true, false);
+ var resources = new HostResources(8.0, 32.0, 100.0, 10.0, "fast", "local", null, 6, "x86_64");
+ flagSource.withJacksonFlag(PermanentFlags.SHARED_HOST.id(), new SharedHost(List.of(resources)), SharedHost.class);
return this;
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java
index 68303535f8c..0da8750ee1b 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java
@@ -70,7 +70,6 @@ public class CapacityCheckerTester {
curator,
clock,
zone,
- new Exclusivity(zone, SharedHosts.empty()),
new MockNameResolver().mockAnyLookup(),
DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"),
Optional.empty(),
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java
index dd43a27b0c3..d076a4222dc 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java
@@ -260,13 +260,11 @@ public class SpareCapacityMaintainerTest {
private SpareCapacityMaintainerTester(int maxIterations) {
NodeFlavors flavors = new NodeFlavors(new FlavorConfigBuilder().build());
ManualClock clock = new ManualClock();
- var zone = new Zone(Environment.prod, RegionName.from("us-east-3"));
nodeRepository = new NodeRepository(flavors,
new EmptyProvisionServiceProvider(),
new MockCurator(),
clock,
- zone,
- new Exclusivity(zone, SharedHosts.empty()),
+ new Zone(Environment.prod, RegionName.from("us-east-3")),
new MockNameResolver().mockAnyLookup(),
DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"),
Optional.empty(),
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java
index 3a9d03ed6b5..32b8f3d6a28 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java
@@ -208,8 +208,9 @@ public class DynamicProvisioningTest {
private void assertHostSharing(Environment environment, ClusterSpec.Type clusterType, boolean expectShared) {
Zone zone = new Zone(Cloud.builder().dynamicProvisioning(true).allowHostSharing(false).build(), SystemName.Public, environment, RegionName.defaultName());
MockHostProvisioner hostProvisioner = new MockHostProvisioner(new NodeFlavors(ProvisioningTester.createConfig()).getFlavors(), nameResolver, 0);
- ProvisioningTester tester = new ProvisioningTester.Builder().zone(zone).hostProvisioner(hostProvisioner).nameResolver(nameResolver).sharedHosts(SharedHosts.ofConstant(true, false)).build();
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(zone).hostProvisioner(hostProvisioner).nameResolver(nameResolver).build();
tester.makeReadyHosts(2, new NodeResources(12, 12, 200, 12));
+ tester.flagSource().withJacksonFlag(PermanentFlags.SHARED_HOST.id(), new SharedHost(List.of(new HostResources(4.0, 16.0, 50.0, 0.3, "fast", "local", null, 10, "x86_64"))), SharedHost.class);
ApplicationId application = applicationId();
ClusterSpec cluster = ClusterSpec.request(clusterType, ClusterSpec.Id.from("default")).vespaVersion("6.42").build();
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTester.java
index 7a6955de811..76fc4078927 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTester.java
@@ -54,14 +54,14 @@ public class DynamicProvisioningTester {
private final Autoscaler autoscaler;
private final HostResourcesCalculator hostResourcesCalculator;
- public DynamicProvisioningTester(Zone zone, HostResourcesCalculator resourcesCalculator, List<Flavor> hostFlavors, InMemoryFlagSource flagSource, SharedHosts sharedHosts, int hostCount) {
- this(zone, hostFlavors, resourcesCalculator, flagSource, sharedHosts);
+ public DynamicProvisioningTester(Zone zone, HostResourcesCalculator resourcesCalculator, List<Flavor> hostFlavors, InMemoryFlagSource flagSource, int hostCount) {
+ this(zone, hostFlavors, resourcesCalculator, flagSource);
for (Flavor flavor : hostFlavors)
provisioningTester.makeReadyNodes(hostCount, flavor.name(), NodeType.host, 8);
provisioningTester.activateTenantHosts();
}
- private DynamicProvisioningTester(Zone zone, List<Flavor> flavors, HostResourcesCalculator resourcesCalculator, InMemoryFlagSource flagSource, SharedHosts sharedHosts) {
+ private DynamicProvisioningTester(Zone zone, List<Flavor> flavors, HostResourcesCalculator resourcesCalculator, InMemoryFlagSource flagSource) {
MockHostProvisioner hostProvisioner = null;
if (zone.cloud().dynamicProvisioning()) {
hostProvisioner = new MockHostProvisioner(flavors);
@@ -74,7 +74,6 @@ public class DynamicProvisioningTester {
.resourcesCalculator(resourcesCalculator)
.flagSource(flagSource)
.hostProvisioner(hostProvisioner)
- .sharedHosts(sharedHosts)
.build();
hostResourcesCalculator = resourcesCalculator;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
index 390da7c719a..7c5859ad686 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
@@ -112,8 +112,7 @@ public class ProvisioningTester {
LoadBalancerServiceMock loadBalancerService,
FlagSource flagSource,
int spareCount,
- ManualClock clock,
- SharedHosts sharedHosts) {
+ ManualClock clock) {
this.curator = curator;
this.nodeFlavors = nodeFlavors;
this.clock = clock;
@@ -124,7 +123,6 @@ public class ProvisioningTester {
curator,
clock,
zone,
- new Exclusivity(zone, sharedHosts),
nameResolver,
containerImage,
Optional.empty(),
@@ -663,7 +661,6 @@ public class ProvisioningTester {
private int spareCount = 0;
private ManualClock clock = new ManualClock();
private DockerImage defaultImage = DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa");
- private SharedHosts sharedHosts = SharedHosts.empty();
public Builder curator(Curator curator) {
this.curator = curator;
@@ -745,11 +742,6 @@ public class ProvisioningTester {
return this;
}
- public Builder sharedHosts(SharedHosts sharedHosts) {
- this.sharedHosts = sharedHosts;
- return this;
- }
-
private FlagSource defaultFlagSource() {
return new InMemoryFlagSource();
}
@@ -766,8 +758,7 @@ public class ProvisioningTester {
new LoadBalancerServiceMock(),
Optional.ofNullable(flagSource).orElse(defaultFlagSource()),
spareCount,
- clock,
- sharedHosts);
+ clock);
}
private static FlavorsConfig asConfig(List<Flavor> flavors) {