summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-05-12 10:49:18 +0200
committerMartin Polden <mpolden@mpolden.no>2022-05-13 09:24:34 +0200
commitc8671df2c8ca29a037e148f758e6092be6a6128c (patch)
treef6e72ba8dc5d0f8c024e42471d1b1bf002dc2055 /node-repository
parente0e2af53a7d6df0291e416e3ad56a5132569014c (diff)
Simplify
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java84
1 files changed, 15 insertions, 69 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java
index 7bbf5efba92..1e20b26ccd9 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java
@@ -25,7 +25,6 @@ import com.yahoo.slime.Cursor;
import com.yahoo.slime.Inspector;
import com.yahoo.slime.Slime;
import com.yahoo.slime.SlimeUtils;
-import com.yahoo.slime.Type;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.node.Address;
import com.yahoo.vespa.hosted.provision.node.Agent;
@@ -275,7 +274,7 @@ public class NodeSerializer {
ipAddressesFromSlime(object, ipAddressPoolKey),
addressesFromSlime(object)),
object.field(hostnameKey).asString(),
- parentHostnameFromSlime(object),
+ SlimeUtils.optionalString(object.field(parentHostnameKey)),
flavor,
statusFromSlime(object),
state,
@@ -283,11 +282,11 @@ public class NodeSerializer {
historyFromSlime(object),
nodeTypeFromString(object.field(nodeTypeKey).asString()),
Reports.fromSlime(object.field(reportsKey)),
- modelNameFromSlime(object),
- reservedToFromSlime(object.field(reservedToKey)),
- exclusiveToApplicationIdFromSlime(object.field(exclusiveToApplicationIdKey)),
- exclusiveToClusterTypeFromSlime(object.field(exclusiveToClusterTypeKey)),
- switchHostnameFromSlime(object.field(switchHostnameKey)),
+ SlimeUtils.optionalString(object.field(modelNameKey)),
+ SlimeUtils.optionalString(object.field(reservedToKey)).map(TenantName::from),
+ SlimeUtils.optionalString(object.field(exclusiveToApplicationIdKey)).map(ApplicationId::fromSerializedForm),
+ SlimeUtils.optionalString(object.field(exclusiveToClusterTypeKey)).map(ClusterSpec.Type::from),
+ SlimeUtils.optionalString(object.field(switchHostnameKey)),
trustedCertificatesFromSlime(object));
}
@@ -303,12 +302,7 @@ public class NodeSerializer {
object.field(wantToFailKey).asBool(),
new OsVersion(versionFromSlime(object.field(osVersionKey)),
versionFromSlime(object.field(wantedOsVersionKey))),
- instantFromSlime(object.field(firmwareCheckKey)));
- }
-
- private Optional<String> switchHostnameFromSlime(Inspector field) {
- if (!field.valid()) return Optional.empty();
- return Optional.of(field.asString());
+ SlimeUtils.optionalInstant(object.field(firmwareCheckKey)));
}
private Flavor flavorFromSlime(Inspector object) {
@@ -373,35 +367,15 @@ public class NodeSerializer {
private ClusterMembership clusterMembershipFromSlime(Inspector object) {
return ClusterMembership.from(object.field(serviceIdKey).asString(),
versionFromSlime(object.field(wantedVespaVersionKey)).get(),
- containerImageRepoFromSlime(object.field(wantedContainerImageRepoKey)));
+ containerImageFromSlime(object.field(wantedContainerImageRepoKey)));
}
private Optional<Version> versionFromSlime(Inspector object) {
- if ( ! object.valid()) return Optional.empty();
- return Optional.of(Version.fromString(object.asString()));
- }
-
- private Optional<DockerImage> containerImageRepoFromSlime(Inspector object) {
- if ( ! object.valid() || object.asString().isEmpty()) return Optional.empty();
- return Optional.of(DockerImage.fromString(object.asString()));
+ return object.valid() ? Optional.of(Version.fromString(object.asString())) : Optional.empty();
}
private Optional<DockerImage> containerImageFromSlime(Inspector object) {
- if ( ! object.valid()) return Optional.empty();
- return Optional.of(DockerImage.fromString(object.asString()));
- }
-
- private Optional<Instant> instantFromSlime(Inspector object) {
- if ( ! object.valid())
- return Optional.empty();
- return Optional.of(Instant.ofEpochMilli(object.asLong()));
- }
-
- private Optional<String> parentHostnameFromSlime(Inspector object) {
- if (object.field(parentHostnameKey).valid())
- return Optional.of(object.field(parentHostnameKey).asString());
- else
- return Optional.empty();
+ return SlimeUtils.optionalString(object).map(DockerImage::fromString);
}
private Set<String> ipAddressesFromSlime(Inspector object, String key) {
@@ -412,43 +386,15 @@ public class NodeSerializer {
private List<Address> addressesFromSlime(Inspector object) {
return SlimeUtils.entriesStream(object.field(containersKey))
- .map(elem -> new Address(elem.field(containerHostnameKey).asString()))
- .collect(Collectors.toList());
- }
-
- private Optional<String> modelNameFromSlime(Inspector object) {
- if (object.field(modelNameKey).valid()) {
- return Optional.of(object.field(modelNameKey).asString());
- }
- return Optional.empty();
- }
-
- private Optional<TenantName> reservedToFromSlime(Inspector object) {
- if (! object.valid()) return Optional.empty();
- if (object.type() != Type.STRING)
- throw new IllegalArgumentException("Expected 'reservedTo' to be a string but is " + object);
- return Optional.of(TenantName.from(object.asString()));
- }
-
- private Optional<ApplicationId> exclusiveToApplicationIdFromSlime(Inspector object) {
- if (! object.valid()) return Optional.empty();
- if (object.type() != Type.STRING)
- throw new IllegalArgumentException("Expected 'exclusiveTo' to be a string but is " + object);
- return Optional.of(ApplicationId.fromSerializedForm(object.asString()));
- }
-
- private Optional<ClusterSpec.Type> exclusiveToClusterTypeFromSlime(Inspector object) {
- if (! object.valid()) return Optional.empty();
- if (object.type() != Type.STRING)
- throw new IllegalArgumentException("Expected 'exclusiveToClusterType' to be a string but is " + object);
- return Optional.of(ClusterSpec.Type.from(object.asString()));
+ .map(elem -> new Address(elem.field(containerHostnameKey).asString()))
+ .collect(Collectors.toList());
}
private List<TrustStoreItem> trustedCertificatesFromSlime(Inspector object) {
return SlimeUtils.entriesStream(object.field(trustedCertificatesKey))
- .map(elem -> new TrustStoreItem(elem.field(fingerprintKey).asString(),
- Instant.ofEpochMilli(elem.field(expiresKey).asLong())))
- .collect(Collectors.toList());
+ .map(elem -> new TrustStoreItem(elem.field(fingerprintKey).asString(),
+ Instant.ofEpochMilli(elem.field(expiresKey).asLong())))
+ .collect(Collectors.toList());
}
// ----------------- Enum <-> string mappings ----------------------------------------