diff options
Diffstat (limited to 'node-admin')
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); } |