summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorOla Aunronning <olaa@yahooinc.com>2023-04-26 14:11:31 +0200
committerOla Aunronning <olaa@yahooinc.com>2023-04-26 14:11:31 +0200
commit6d58df3ac8ab8e94eb3b7f71d9a3792f97d63e56 (patch)
treeb8df4dc92eb8e512889c0e003abd7b9d8d5d9e86 /node-admin
parent46239c2babb3025e98222cd5cf72856767a1289d (diff)
Optional identity document. Skip in public
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java43
1 files changed, 26 insertions, 17 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 13c0c5d0bb5..3ab1fdf211b 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
@@ -107,6 +107,10 @@ public class AthenzCredentialsMaintainer implements CredentialsMaintainer {
public boolean converge(NodeAgentContext context) {
var modified = false;
modified |= maintain(context, NODE);
+
+ if (context.zone().getSystemName().isPublic())
+ return modified;
+
if (shouldWriteTenantServiceIdentity(context))
modified |= maintain(context, TENANT);
else
@@ -121,7 +125,10 @@ public class AthenzCredentialsMaintainer implements CredentialsMaintainer {
context.log(logger, Level.FINE, "Checking certificate");
ContainerPath siaDirectory = context.paths().of(CONTAINER_SIA_DIRECTORY, context.users().vespa());
ContainerPath identityDocumentFile = siaDirectory.resolve(identityType.getIdentityDocument());
- AthenzIdentity athenzIdentity = getAthenzIdentity(context, identityType, identityDocumentFile);
+ Optional<AthenzIdentity> optionalAthenzIdentity = getAthenzIdentity(context, identityType, identityDocumentFile);
+ if (optionalAthenzIdentity.isEmpty())
+ return false;
+ AthenzIdentity athenzIdentity = optionalAthenzIdentity.get();
ContainerPath privateKeyFile = (ContainerPath) SiaUtils.getPrivateKeyFile(siaDirectory, athenzIdentity);
ContainerPath certificateFile = (ContainerPath) SiaUtils.getCertificateFile(siaDirectory, athenzIdentity);
if (!Files.exists(privateKeyFile) || !Files.exists(certificateFile) || !Files.exists(identityDocumentFile)) {
@@ -203,16 +210,17 @@ public class AthenzCredentialsMaintainer implements CredentialsMaintainer {
var siaDirectory = context.paths().of(CONTAINER_SIA_DIRECTORY, context.users().vespa());
var identityDocumentFile = siaDirectory.resolve(TENANT.getIdentityDocument());
if (!Files.exists(identityDocumentFile)) return false;
- var athenzIdentity = getAthenzIdentity(context, TENANT, identityDocumentFile);
- var privateKeyFile = (ContainerPath) SiaUtils.getPrivateKeyFile(siaDirectory, athenzIdentity);
- var certificateFile = (ContainerPath) SiaUtils.getCertificateFile(siaDirectory, athenzIdentity);
- try {
- return Files.deleteIfExists(identityDocumentFile) ||
- Files.deleteIfExists(privateKeyFile) ||
- Files.deleteIfExists(certificateFile);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
+ return getAthenzIdentity(context, TENANT, identityDocumentFile).map(athenzIdentity -> {
+ var privateKeyFile = (ContainerPath) SiaUtils.getPrivateKeyFile(siaDirectory, athenzIdentity);
+ var certificateFile = (ContainerPath) SiaUtils.getCertificateFile(siaDirectory, athenzIdentity);
+ try {
+ return Files.deleteIfExists(identityDocumentFile) ||
+ Files.deleteIfExists(privateKeyFile) ||
+ Files.deleteIfExists(certificateFile);
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }).orElse(false);
}
private boolean shouldRefreshCredentials(Duration age) {
@@ -321,22 +329,23 @@ public class AthenzCredentialsMaintainer implements CredentialsMaintainer {
private SignedIdentityDocument signedIdentityDocument(NodeAgentContext context, IdentityType identityType) {
return switch (identityType) {
case NODE -> identityDocumentClient.getNodeIdentityDocument(context.hostname().value(), documentVersion(context));
- case TENANT -> identityDocumentClient.getTenantIdentityDocument(context.hostname().value(), documentVersion(context));
+ case TENANT -> identityDocumentClient.getTenantIdentityDocument(context.hostname().value(), documentVersion(context)).get();
};
}
- private AthenzIdentity getAthenzIdentity(NodeAgentContext context, IdentityType identityType, ContainerPath identityDocumentFile) {
+ private Optional<AthenzIdentity> getAthenzIdentity(NodeAgentContext context, IdentityType identityType, ContainerPath identityDocumentFile) {
return switch (identityType) {
- case NODE -> context.identity();
+ case NODE -> Optional.of(context.identity());
case TENANT -> getTenantIdentity(context, identityDocumentFile);
};
}
- private AthenzIdentity getTenantIdentity(NodeAgentContext context, ContainerPath identityDocumentFile) {
+ private Optional<AthenzIdentity> getTenantIdentity(NodeAgentContext context, ContainerPath identityDocumentFile) {
if (Files.exists(identityDocumentFile)) {
- return EntityBindingsMapper.readSignedIdentityDocumentFromFile(identityDocumentFile).identityDocument().serviceIdentity();
+ return Optional.of(EntityBindingsMapper.readSignedIdentityDocumentFromFile(identityDocumentFile).identityDocument().serviceIdentity());
} else {
- return identityDocumentClient.getTenantIdentityDocument(context.hostname().value(), documentVersion(context)).identityDocument().serviceIdentity();
+ return identityDocumentClient.getTenantIdentityDocument(context.hostname().value(), documentVersion(context))
+ .map(doc -> doc.identityDocument().serviceIdentity());
}
}