summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2021-02-17 09:33:26 +0100
committerGitHub <noreply@github.com>2021-02-17 09:33:26 +0100
commit2e55f8118174a1e6fe5faa5ca9daf88f4be82461 (patch)
tree7e1fa24520d0fa23f40d24f63453757bedfaaff8 /node-admin
parent175b914240d779d6d45f3a4738bc9bc9208cdf72 (diff)
parent714d387d83fb5496ac50c9a1e5652e144b3c2deb (diff)
Merge pull request #16532 from vespa-engine/mortent/write-container-role
Write container roles
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java5
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/CredentialsMaintainer.java3
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java18
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java3
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java3
5 files changed, 21 insertions, 11 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java
index 0a29da57220..eb04765c621 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java
@@ -177,6 +177,11 @@ public class AthenzCredentialsMaintainer implements CredentialsMaintainer {
}
}
+ @Override
+ public String name() {
+ return "node-certificate";
+ }
+
private boolean shouldRefreshCredentials(Duration age) {
return age.compareTo(REFRESH_PERIOD) >= 0;
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/CredentialsMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/CredentialsMaintainer.java
index ca734d73925..87dd5d7fd97 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/CredentialsMaintainer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/CredentialsMaintainer.java
@@ -23,4 +23,7 @@ public interface CredentialsMaintainer {
/** Get time until the certificate expires. Invoked each time metrics are collected. */
Duration certificateLifetime(NodeAgentContext context);
+
+ /** Name used when reporting metrics */
+ String name();
}
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 61de751f60d..24928b4c8a6 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
@@ -62,7 +62,7 @@ public class NodeAgentImpl implements NodeAgent {
private final ContainerOperations containerOperations;
private final RegistryCredentialsProvider registryCredentialsProvider;
private final StorageMaintainer storageMaintainer;
- private final Optional<CredentialsMaintainer> credentialsMaintainer;
+ private final List<CredentialsMaintainer> credentialsMaintainers;
private final Optional<AclMaintainer> aclMaintainer;
private final Optional<HealthChecker> healthChecker;
private final Clock clock;
@@ -102,17 +102,17 @@ public class NodeAgentImpl implements NodeAgent {
public NodeAgentImpl(NodeAgentContextSupplier contextSupplier, NodeRepository nodeRepository,
Orchestrator orchestrator, ContainerOperations containerOperations,
RegistryCredentialsProvider registryCredentialsProvider, StorageMaintainer storageMaintainer,
- FlagSource flagSource, Optional<CredentialsMaintainer> credentialsMaintainer,
+ FlagSource flagSource, List<CredentialsMaintainer> credentialsMaintainers,
Optional<AclMaintainer> aclMaintainer, Optional<HealthChecker> healthChecker, Clock clock) {
this(contextSupplier, nodeRepository, orchestrator, containerOperations, registryCredentialsProvider,
- storageMaintainer, flagSource, credentialsMaintainer, aclMaintainer, healthChecker, clock,
+ storageMaintainer, flagSource, credentialsMaintainers, aclMaintainer, healthChecker, clock,
DEFAULT_WARM_UP_DURATION);
}
public NodeAgentImpl(NodeAgentContextSupplier contextSupplier, NodeRepository nodeRepository,
Orchestrator orchestrator, ContainerOperations containerOperations,
RegistryCredentialsProvider registryCredentialsProvider, StorageMaintainer storageMaintainer,
- FlagSource flagSource, Optional<CredentialsMaintainer> credentialsMaintainer,
+ FlagSource flagSource, List<CredentialsMaintainer> credentialsMaintainers,
Optional<AclMaintainer> aclMaintainer, Optional<HealthChecker> healthChecker, Clock clock,
Duration warmUpDuration) {
this.contextSupplier = contextSupplier;
@@ -121,7 +121,7 @@ public class NodeAgentImpl implements NodeAgent {
this.containerOperations = containerOperations;
this.registryCredentialsProvider = registryCredentialsProvider;
this.storageMaintainer = storageMaintainer;
- this.credentialsMaintainer = credentialsMaintainer;
+ this.credentialsMaintainers = credentialsMaintainers;
this.aclMaintainer = aclMaintainer;
this.healthChecker = healthChecker;
this.clock = clock;
@@ -460,7 +460,7 @@ public class NodeAgentImpl implements NodeAgent {
return;
}
container = removeContainerIfNeededUpdateContainerState(context, container);
- credentialsMaintainer.ifPresent(maintainer -> maintainer.converge(context));
+ credentialsMaintainers.forEach(maintainer -> maintainer.converge(context));
if (container.isEmpty()) {
containerState = STARTING;
container = Optional.of(startContainer(context));
@@ -506,7 +506,7 @@ public class NodeAgentImpl implements NodeAgent {
case dirty:
removeContainerIfNeededUpdateContainerState(context, container);
context.log(logger, "State is " + node.state() + ", will delete application storage and mark node as ready");
- credentialsMaintainer.ifPresent(maintainer -> maintainer.clearCredentials(context));
+ credentialsMaintainers.forEach(maintainer -> maintainer.clearCredentials(context));
storageMaintainer.archiveNodeStorage(context);
updateNodeRepoWithCurrentAttributes(context);
nodeRepository.setNodeState(context.hostname().value(), NodeState.ready);
@@ -605,8 +605,8 @@ public class NodeAgentImpl implements NodeAgent {
};
}
- protected Optional<CredentialsMaintainer> credentialsMaintainer() {
- return credentialsMaintainer;
+ protected List<CredentialsMaintainer> credentialsMaintainers() {
+ return credentialsMaintainers;
}
private Duration warmUpDuration(ZoneApi zone) {
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java
index 7ec2cf5bf23..de908f9a62e 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java
@@ -30,6 +30,7 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.Clock;
import java.time.Duration;
+import java.util.Collections;
import java.util.Optional;
import java.util.logging.Logger;
@@ -87,7 +88,7 @@ public class DockerTester implements AutoCloseable {
NodeAgentFactory nodeAgentFactory = (contextSupplier, nodeContext) -> new NodeAgentImpl(
contextSupplier, nodeRepository, orchestrator, containerOperations, () -> RegistryCredentials.none,
storageMaintainer, flagSource,
- Optional.empty(), Optional.empty(), Optional.empty(), clock, Duration.ofSeconds(-1));
+ Collections.emptyList(), Optional.empty(), Optional.empty(), clock, Duration.ofSeconds(-1));
nodeAdmin = new NodeAdminImpl(nodeAgentFactory, metrics, clock, Duration.ofMillis(10), Duration.ZERO);
NodeAgentContextFactory nodeAgentContextFactory = (nodeSpec, acl) ->
new NodeAgentContextImpl.Builder(nodeSpec).acl(acl).fileSystem(fileSystem).build();
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
index 97c83956a61..2e421945f4f 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
@@ -32,6 +32,7 @@ import org.mockito.InOrder;
import java.time.Duration;
import java.time.Instant;
+import java.util.List;
import java.util.Optional;
import static org.junit.Assert.assertEquals;
@@ -737,7 +738,7 @@ public class NodeAgentImplTest {
return new NodeAgentImpl(contextSupplier, nodeRepository, orchestrator, containerOperations,
() -> RegistryCredentials.none, storageMaintainer, flagSource,
- Optional.of(credentialsMaintainer), Optional.of(aclMaintainer),
+ List.of(credentialsMaintainer), Optional.of(aclMaintainer),
Optional.of(healthChecker), clock, warmUpDuration);
}