summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorsmorgrav <smorgrav@verizonmedia.com>2020-10-29 14:10:36 +0100
committersmorgrav <smorgrav@verizonmedia.com>2020-10-29 14:10:36 +0100
commit029c1d48dbf1a6405134156bd8d19363f536d00e (patch)
tree395d9f26e5fd8e25a814bce0fb9e3a075cc41872 /controller-server
parenta7812b136b061fed17da514ab831a818bed7daf2 (diff)
Back and forth on which cursor to work with in tenantinfo serialization
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java8
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/TenantInfoParser.java40
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java4
3 files changed, 44 insertions, 8 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java
index d9a93ab9352..ab9f1fb45ec 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java
@@ -23,7 +23,6 @@ import java.security.Principal;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.List;
-import java.util.Objects;
import java.util.Optional;
/**
@@ -59,7 +58,7 @@ public class TenantSerializer {
private static final String customerIdField = "customerId";
private static final String productCodeField = "productCode";
private static final String pemDeveloperKeysField = "pemDeveloperKeys";
- private static final String tenantInfo = "info";
+ private static final String tenantInfoField = "info";
public Slime toSlime(Tenant tenant) {
Slime slime = new Slime();
@@ -134,7 +133,7 @@ public class TenantSerializer {
TenantName name = TenantName.from(tenantObject.field(nameField).asString());
Optional<Principal> creator = SlimeUtils.optionalString(tenantObject.field(creatorField)).map(SimplePrincipal::new);
BiMap<PublicKey, Principal> developerKeys = developerKeysFromSlime(tenantObject.field(pemDeveloperKeysField));
- TenantInfo info = tenantInfoFromSlime(tenantObject);
+ TenantInfo info = tenantInfoFromSlime(tenantObject.field(tenantInfoField));
return new CloudTenant(name, creator, developerKeys, info);
}
@@ -147,8 +146,7 @@ public class TenantSerializer {
return keys.build();
}
- TenantInfo tenantInfoFromSlime(Inspector parentObject) {
- Inspector infoObject = parentObject.field("info");
+ TenantInfo tenantInfoFromSlime(Inspector infoObject) {
if (!infoObject.valid()) return TenantInfo.EmptyInfo;
return TenantInfo.EmptyInfo
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/TenantInfoParser.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/TenantInfoParser.java
new file mode 100644
index 00000000000..0c7f02b3042
--- /dev/null
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/TenantInfoParser.java
@@ -0,0 +1,40 @@
+package com.yahoo.vespa.hosted.controller.restapi.application;
+
+import com.yahoo.slime.Inspector;
+import com.yahoo.vespa.hosted.controller.tenant.TenantInfo;
+import com.yahoo.vespa.hosted.controller.tenant.TenantInfoAddress;
+import com.yahoo.vespa.hosted.controller.tenant.TenantInfoBillingContact;
+
+public class TenantInfoParser {
+
+ TenantInfo tenantInfoFromSlime(Inspector infoObject) {
+ if (!infoObject.valid()) return TenantInfo.EmptyInfo;
+
+ return TenantInfo.EmptyInfo
+ .withName(infoObject.field("name").asString())
+ .withEmail(infoObject.field("email").asString())
+ .withWebsite(infoObject.field("website").asString())
+ .withContactName(infoObject.field("contactName").asString())
+ .withContactEmail(infoObject.field("contactEmail").asString())
+ .withInvoiceEmail(infoObject.field("invoiceEmail").asString())
+ .withAddress(tenantInfoAddressFromSlime(infoObject.field("address")))
+ .withBillingContact(tenantInfoBillingContactFromSlime(infoObject.field("billingContact")));
+ }
+
+ private TenantInfoAddress tenantInfoAddressFromSlime(Inspector addressObject) {
+ return TenantInfoAddress.EmptyAddress
+ .withAddressLines(addressObject.field("addressLines").asString())
+ .withPostalCodeOrZip(addressObject.field("postalCodeOrZip").asString())
+ .withCity(addressObject.field("city").asString())
+ .withStateRegionProvince(addressObject.field("stateRegionProvince").asString())
+ .withCountry(addressObject.field("country").asString());
+ }
+
+ private TenantInfoBillingContact tenantInfoBillingContactFromSlime(Inspector billingObject) {
+ return TenantInfoBillingContact.EmptyBillingContact
+ .withName(billingObject.field("name").asString())
+ .withEmail(billingObject.field("email").asString())
+ .withPhone(billingObject.field("phone").asString())
+ .withAddress(tenantInfoAddressFromSlime(billingObject.field("address")));
+ }
+}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java
index 3e12629d864..1ef1753bb24 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java
@@ -128,9 +128,7 @@ public class TenantSerializerTest {
Slime slime = new Slime();
Cursor parentCursor = slime.setObject();
serializer.toSlime(fullInfo, parentCursor);
- TenantInfo roundTripInfo = serializer.tenantInfoFromSlime(parentCursor);
- String toStr = parentCursor.toString();
-
+ TenantInfo roundTripInfo = serializer.tenantInfoFromSlime(parentCursor.field("info"));
assertTrue(fullInfo.equals(roundTripInfo));
}