diff options
5 files changed, 43 insertions, 26 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java index 0ff36cd4560..4972a306377 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java @@ -159,7 +159,7 @@ public class StorageMaintainer { Map<String, String> tags = new LinkedHashMap<>(); tags.put("namespace", "Vespa"); tags.put("role", nodeTypeToRole(context.node().getNodeType())); - tags.put("zone", String.format("%s.%s", context.zoneId().environment().value(), context.zoneId().region().value())); + tags.put("zone", context.zone().getId().value()); context.node().getVespaVersion().ifPresent(version -> tags.put("vespaVersion", version.toFullString())); if (! isConfigserverLike(context.nodeType())) { @@ -261,8 +261,8 @@ public class StorageMaintainer { private Map<String, Object> getCoredumpNodeAttributes(NodeAgentContext context, Optional<Container> container) { Map<String, String> attributes = new HashMap<>(); attributes.put("hostname", context.node().getHostname()); - attributes.put("region", context.zoneId().region().value()); - attributes.put("environment", context.zoneId().environment().value()); + attributes.put("region", context.zone().getRegionName().value()); + attributes.put("environment", context.zone().getEnvironment().value()); attributes.put("flavor", context.node().getFlavor()); attributes.put("kernel_version", System.getProperty("os.version")); attributes.put("cpu_microcode_version", getMicrocodeVersion()); diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContext.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContext.java index 48016d251ef..a7cdd7e655d 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContext.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContext.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.hosted.node.admin.nodeagent; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.NodeType; -import com.yahoo.config.provision.zone.ZoneId; +import com.yahoo.config.provision.zone.ZoneApi; import com.yahoo.vespa.athenz.api.AthenzIdentity; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.node.admin.component.TaskContext; @@ -37,7 +37,7 @@ public interface NodeAgentContext extends TaskContext { DockerNetworking dockerNetworking(); - ZoneId zoneId(); + ZoneApi zone(); String vespaUser(); diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java index 95b72725154..8435fe34770 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java @@ -5,6 +5,7 @@ import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.SystemName; +import com.yahoo.config.provision.zone.ZoneApi; import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.vespa.athenz.api.AthenzIdentity; import com.yahoo.vespa.athenz.api.AthenzService; @@ -34,14 +35,14 @@ public class NodeAgentContextImpl implements NodeAgentContext { private final ContainerName containerName; private final AthenzIdentity identity; private final DockerNetworking dockerNetworking; - private final ZoneId zoneId; + private final ZoneApi zone; private final Path pathToNodeRootOnHost; private final Path pathToVespaHome; private final String vespaUser; private final String vespaUserOnHost; public NodeAgentContextImpl(NodeSpec node, Acl acl, AthenzIdentity identity, - DockerNetworking dockerNetworking, ZoneId zoneId, + DockerNetworking dockerNetworking, ZoneApi zone, Path pathToContainerStorage, Path pathToVespaHome, String vespaUser, String vespaUserOnHost) { this.node = Objects.requireNonNull(node); @@ -49,7 +50,7 @@ public class NodeAgentContextImpl implements NodeAgentContext { this.containerName = ContainerName.fromHostname(node.getHostname()); this.identity = Objects.requireNonNull(identity); this.dockerNetworking = Objects.requireNonNull(dockerNetworking); - this.zoneId = Objects.requireNonNull(zoneId); + this.zone = Objects.requireNonNull(zone); this.pathToNodeRootOnHost = Objects.requireNonNull(pathToContainerStorage).resolve(containerName.asString()); this.pathToVespaHome = Objects.requireNonNull(pathToVespaHome); this.logPrefix = containerName.asString() + ": "; @@ -83,8 +84,8 @@ public class NodeAgentContextImpl implements NodeAgentContext { } @Override - public ZoneId zoneId() { - return zoneId; + public ZoneApi zone() { + return zone; } @Override @@ -147,7 +148,7 @@ public class NodeAgentContextImpl implements NodeAgentContext { ", containerName=" + containerName + ", identity=" + identity + ", dockerNetworking=" + dockerNetworking + - ", zoneId=" + zoneId + + ", zone=" + zone + ", pathToNodeRootOnHost=" + pathToNodeRootOnHost + ", pathToVespaHome=" + pathToVespaHome + ", vespaUser='" + vespaUser + '\'' + @@ -161,7 +162,7 @@ public class NodeAgentContextImpl implements NodeAgentContext { private Acl acl; private AthenzIdentity identity; private DockerNetworking dockerNetworking; - private ZoneId zoneId; + private ZoneApi zone; private Path pathToContainerStorage; private Path pathToVespaHome; private String vespaUser; @@ -204,8 +205,8 @@ public class NodeAgentContextImpl implements NodeAgentContext { return this; } - public Builder zoneId(ZoneId zoneId) { - this.zoneId = zoneId; + public Builder zone(ZoneApi zone) { + this.zone = zone; return this; } @@ -239,10 +240,22 @@ public class NodeAgentContextImpl implements NodeAgentContext { Optional.ofNullable(acl).orElse(Acl.EMPTY), Optional.ofNullable(identity).orElseGet(() -> new AthenzService("domain", "service")), Optional.ofNullable(dockerNetworking).orElse(DockerNetworking.HOST_NETWORK), - Optional.ofNullable(zoneId).orElseGet(() -> ZoneId.from(Environment.defaultEnvironment(), - RegionName.defaultName(), - CloudName.defaultName(), - SystemName.defaultSystem())), + Optional.ofNullable(zone).orElseGet(() -> new ZoneApi() { + @Override + public SystemName getSystemName() { + return SystemName.defaultSystem(); + } + + @Override + public ZoneId getId() { + return ZoneId.defaultId(); + } + + @Override + public CloudName getCloudName() { + return CloudName.defaultName(); + } + }), Optional.ofNullable(pathToContainerStorage).orElseGet(() -> Paths.get("/home/docker")), Optional.ofNullable(pathToVespaHome).orElseGet(() -> Paths.get("/opt/vespa")), Optional.ofNullable(vespaUser).orElse("vespa"), diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java index a200ff9a805..8c38b1bbd84 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java @@ -4,7 +4,7 @@ package com.yahoo.vespa.hosted.node.admin.nodeagent; import com.fasterxml.jackson.core.JsonProcessingException; import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; -import com.yahoo.config.provision.zone.ZoneId; +import com.yahoo.config.provision.zone.ZoneApi; import com.yahoo.log.LogLevel; import com.yahoo.vespa.flags.DoubleFlag; import com.yahoo.vespa.flags.FetchVector; @@ -362,7 +362,7 @@ public class NodeAgentImpl implements NodeAgent { } private ContainerResources getContainerResources(NodeAgentContext context) { - double cpuCap = noCpuCap(context.zoneId()) ? + double cpuCap = noCpuCap(context.zone()) ? 0 : context.node().getOwner() .map(NodeOwner::asApplicationId) @@ -373,9 +373,9 @@ public class NodeAgentImpl implements NodeAgent { return ContainerResources.from(cpuCap, context.node().getMinCpuCores(), context.node().getMinMainMemoryAvailableGb()); } - private boolean noCpuCap(ZoneId zoneId) { - return zoneId.environment() == Environment.dev - || (zoneId.system().isCd() && zoneId.environment() != Environment.prod); + private boolean noCpuCap(ZoneApi zone) { + return zone.getEnvironment() == Environment.dev + || (zone.getSystemName().isCd() && zone.getEnvironment() != Environment.prod); } private void scheduleDownLoadIfNeeded(NodeSpec node, Optional<Container> container) { diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java index b5640ddb996..36169a2b283 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java @@ -3,11 +3,10 @@ package com.yahoo.vespa.hosted.node.admin.maintenance; import com.google.common.collect.ImmutableSet; import com.yahoo.component.Version; -import com.yahoo.config.provision.CloudName; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.RegionName; -import com.yahoo.config.provision.SystemName; +import com.yahoo.config.provision.zone.ZoneApi; import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeMembership; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeOwner; @@ -42,6 +41,7 @@ import static com.yahoo.yolean.Exceptions.uncheck; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; /** * @author dybis @@ -152,6 +152,9 @@ public class StorageMaintainerTest { } private Path executeAs(NodeType nodeType) { + ZoneApi zone = mock(ZoneApi.class); + when(zone.getId()).thenReturn(ZoneId.from(Environment.prod, RegionName.from("us-north-1"))); + NodeSpec nodeSpec = new NodeSpec.Builder() .hostname("host123-5.test.domain.tld") .nodeType(nodeType) @@ -165,7 +168,8 @@ public class StorageMaintainerTest { .build(); NodeAgentContext context = new NodeAgentContextImpl.Builder(nodeSpec) .fileSystem(TestFileSystem.create()) - .zoneId(ZoneId.from(Environment.prod, RegionName.from("us-north-1"), CloudName.defaultName(), SystemName.defaultSystem())).build(); + .zone(zone) + .build(); Path path = context.pathOnHostFromPathInNode("/etc/yamas-agent"); uncheck(() -> Files.createDirectories(path)); storageMaintainer.writeMetricsConfig(context); |