summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2019-08-21 15:41:45 +0200
committerValerij Fredriksen <valerijf@verizonmedia.com>2019-08-21 15:41:45 +0200
commit55bc1a0dbda018c69337f33436d93124aca24e52 (patch)
tree84690905e7eea2e560c28ff49e7d8c796a578142
parentfcf44cdd8c2aff47da0eb1708d786152f756983d (diff)
Serialize flavor overrides
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java13
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java13
2 files changed, 23 insertions, 3 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 4f43b53c0e7..0346db3a4b7 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
@@ -13,6 +13,7 @@ import com.yahoo.config.provision.NodeFlavors;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.config.provision.host.FlavorOverrides;
import com.yahoo.config.provision.serialization.NetworkPortsSerializer;
import com.yahoo.slime.ArrayTraverser;
import com.yahoo.slime.Cursor;
@@ -153,6 +154,10 @@ public class NodeSerializer {
private void toSlime(Flavor flavor, Cursor object) {
if (flavor.isConfigured()) {
object.setString(flavorKey, flavor.name());
+ if (flavor.flavorOverrides().isPresent()) {
+ Cursor resourcesObject = object.setObject(resourcesKey);
+ flavor.flavorOverrides().get().diskGb().ifPresent(diskGb -> resourcesObject.setDouble(diskKey, diskGb));
+ }
}
else {
NodeResources resources = flavor.resources();
@@ -229,12 +234,14 @@ public class NodeSerializer {
}
private Flavor flavorFromSlime(Inspector object) {
+ Inspector resources = object.field(resourcesKey);
+
if (object.field(flavorKey).valid()) {
- return flavors.getFlavorOrThrow(object.field(flavorKey).asString());
+ Flavor flavor = flavors.getFlavorOrThrow(object.field(flavorKey).asString());
+ if (!resources.valid()) return flavor;
+ return flavor.withFlavorOverrides(FlavorOverrides.ofDisk(resources.field(diskKey).asDouble()));
}
else {
- Inspector resources = object.field(resourcesKey);
-
// TODO: Simplify Sept. 2019
double bandwidth = Optional.of(resources.field(bandwidthKey))
.filter(Inspector::valid)
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java
index b2550872a1d..84f707eb505 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java
@@ -12,6 +12,7 @@ import com.yahoo.config.provision.NetworkPorts;
import com.yahoo.config.provision.NodeFlavors;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.config.provision.host.FlavorOverrides;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Slime;
import com.yahoo.slime.Type;
@@ -277,6 +278,18 @@ public class SerializationTest {
}
@Test
+ public void flavor_overrides_serialization() {
+ Node node = createNode();
+ assertEquals(2, node.flavor().getMinDiskAvailableGb(), 0);
+ node = node.with(node.flavor().withFlavorOverrides(FlavorOverrides.ofDisk(1234)));
+ assertEquals(1234, node.flavor().getMinDiskAvailableGb(), 0);
+
+ Node copy = nodeSerializer.fromJson(Node.State.provisioned, nodeSerializer.toJson(node));
+ assertEquals(1234, copy.flavor().getMinDiskAvailableGb(), 0);
+ assertEquals(node, copy);
+ }
+
+ @Test
public void want_to_deprovision_defaults_to_false() {
String nodeData =
"{\n" +