aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorØyvind Grønnesby <oyving@verizonmedia.com>2020-08-05 15:02:35 +0200
committerØyvind Grønnesby <oyving@verizonmedia.com>2020-08-05 15:02:35 +0200
commit110d2ddfe12ee3c9a1a312f8cab727c956b881c1 (patch)
treeab0a37e33dba5b20f23e98fbfbc6303feacba9d3
parent75b7675c38fddf27daf17bcb46fc575d8dc8049e (diff)
Stop reading BillingInfo but write the default value
Preparing to completely remove BillingInfo as it was never used. First step is to stop reading it. Once that has propagated we can remove the class completely.
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java16
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java9
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/CloudAccessControl.java4
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java12
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/SignatureFilterTest.java2
6 files changed, 14 insertions, 31 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java
index 12b985d1812..599fa962527 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java
@@ -100,26 +100,20 @@ public abstract class LockedTenant {
/** A locked CloudTenant. */
public static class Cloud extends LockedTenant {
- private final BillingInfo billingInfo;
private final BiMap<PublicKey, Principal> developerKeys;
- private Cloud(TenantName name, BillingInfo billingInfo, BiMap<PublicKey, Principal> developerKeys) {
+ private Cloud(TenantName name, BiMap<PublicKey, Principal> developerKeys) {
super(name);
- this.billingInfo = billingInfo;
this.developerKeys = ImmutableBiMap.copyOf(developerKeys);
}
private Cloud(CloudTenant tenant) {
- this(tenant.name(), tenant.billingInfo(), tenant.developerKeys());
+ this(tenant.name(), tenant.developerKeys());
}
@Override
public CloudTenant get() {
- return new CloudTenant(name, billingInfo, developerKeys);
- }
-
- public Cloud with(BillingInfo billingInfo) {
- return new Cloud(name, billingInfo, developerKeys);
+ return new CloudTenant(name, developerKeys);
}
public Cloud withDeveloperKey(PublicKey key, Principal principal) {
@@ -127,13 +121,13 @@ public abstract class LockedTenant {
if (keys.containsKey(key))
throw new IllegalArgumentException("Key " + KeyUtils.toPem(key) + " is already owned by " + keys.get(key));
keys.put(key, principal);
- return new Cloud(name, billingInfo, keys);
+ return new Cloud(name, keys);
}
public Cloud withoutDeveloperKey(PublicKey key) {
BiMap<PublicKey, Principal> keys = HashBiMap.create(developerKeys);
keys.remove(key);
- return new Cloud(name, billingInfo, keys);
+ return new Cloud(name, keys);
}
}
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 d4d5f4deb7b..5e9d5c44d4c 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
@@ -84,8 +84,12 @@ public class TenantSerializer {
}
private void toSlime(CloudTenant tenant, Cursor root) {
+ // BillingInfo was never used and always just a static default value. To retire this
+ // field we continue to write the default value and stop reading it.
+ // TODO(ogronnesby, 2020-08-05): Remove when a version where we do not read the field has propagated.
+ var legacyBillingInfo = new BillingInfo("customer", "Vespa");
developerKeysToSlime(tenant.developerKeys(), root.setArray(pemDeveloperKeysField));
- toSlime(tenant.billingInfo(), root.setObject(billingInfoField));
+ toSlime(legacyBillingInfo, root.setObject(billingInfoField));
}
private void developerKeysToSlime(BiMap<PublicKey, Principal> keys, Cursor array) {
@@ -124,9 +128,8 @@ public class TenantSerializer {
private CloudTenant cloudTenantFrom(Inspector tenantObject) {
TenantName name = TenantName.from(tenantObject.field(nameField).asString());
- BillingInfo billingInfo = billingInfoFrom(tenantObject.field(billingInfoField));
BiMap<PublicKey, Principal> developerKeys = developerKeysFromSlime(tenantObject.field(pemDeveloperKeysField));
- return new CloudTenant(name, billingInfo, developerKeys);
+ return new CloudTenant(name, developerKeys);
}
private BiMap<PublicKey, Principal> developerKeysFromSlime(Inspector array) {
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/CloudAccessControl.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/CloudAccessControl.java
index ec4d9ff3626..320b376c2ae 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/CloudAccessControl.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/CloudAccessControl.java
@@ -34,8 +34,6 @@ import static com.yahoo.vespa.hosted.controller.api.role.RoleDefinition.*;
*/
public class CloudAccessControl implements AccessControl {
- private static final BillingInfo defaultBillingInfo = new BillingInfo("customer", "Vespa");
-
private final UserManagement userManagement;
private final BooleanFlag enablePublicSignup;
private final BillingController billingController;
@@ -52,7 +50,7 @@ public class CloudAccessControl implements AccessControl {
requireTenantCreationAllowed((Auth0Credentials) credentials);
CloudTenantSpec spec = (CloudTenantSpec) tenantSpec;
- CloudTenant tenant = CloudTenant.create(spec.tenant(), defaultBillingInfo);
+ CloudTenant tenant = CloudTenant.create(spec.tenant());
for (Role role : Roles.tenantRoles(spec.tenant())) {
userManagement.createRole(role);
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java
index 8601fb34e8f..d208a1e4e63 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java
@@ -4,11 +4,9 @@ package com.yahoo.vespa.hosted.controller.tenant;
import com.google.common.collect.BiMap;
import com.google.common.collect.ImmutableBiMap;
import com.yahoo.config.provision.TenantName;
-import com.yahoo.vespa.hosted.controller.api.integration.organization.BillingInfo;
import java.security.Principal;
import java.security.PublicKey;
-import java.util.Objects;
import java.util.Optional;
/**
@@ -18,26 +16,20 @@ import java.util.Optional;
*/
public class CloudTenant extends Tenant {
- private final BillingInfo billingInfo;
private final BiMap<PublicKey, Principal> developerKeys;
/** Public for the serialization layer — do not use! */
- public CloudTenant(TenantName name, BillingInfo info, BiMap<PublicKey, Principal> developerKeys) {
+ public CloudTenant(TenantName name, BiMap<PublicKey, Principal> developerKeys) {
super(name, Optional.empty());
- billingInfo = info;
this.developerKeys = developerKeys;
}
/** Creates a tenant with the given name, provided it passes validation. */
- public static CloudTenant create(TenantName tenantName, BillingInfo billingInfo) {
+ public static CloudTenant create(TenantName tenantName) {
return new CloudTenant(requireName(tenantName),
- Objects.requireNonNull(billingInfo),
ImmutableBiMap.of());
}
- /** Returns the billing info for this tenant. */
- public BillingInfo billingInfo() { return billingInfo; }
-
/** Returns the set of developer keys and their corresponding developers for this tenant. */
public BiMap<PublicKey, Principal> developerKeys() { return developerKeys; }
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 9c085bb72f7..0f4ea3dd2ce 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
@@ -78,12 +78,10 @@ public class TenantSerializerTest {
@Test
public void cloud_tenant() {
CloudTenant tenant = new CloudTenant(TenantName.from("elderly-lady"),
- new BillingInfo("old cat lady", "vespa"),
ImmutableBiMap.of(publicKey, new SimplePrincipal("joe"),
otherPublicKey, new SimplePrincipal("jane")));
CloudTenant serialized = (CloudTenant) serializer.tenantFrom(serializer.toSlime(tenant));
assertEquals(tenant.name(), serialized.name());
- assertEquals(tenant.billingInfo(), serialized.billingInfo());
assertEquals(tenant.developerKeys(), serialized.developerKeys());
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/SignatureFilterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/SignatureFilterTest.java
index 6e1480d45e7..3c13962916a 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/SignatureFilterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/SignatureFilterTest.java
@@ -66,7 +66,6 @@ public class SignatureFilterTest {
signer = new RequestSigner(privateKey, id.serializedForm(), tester.clock());
tester.curator().writeTenant(new CloudTenant(appId.tenant(),
- new BillingInfo("id", "code"),
ImmutableBiMap.of()));
tester.curator().writeApplication(new Application(appId, tester.clock().instant()));
}
@@ -105,7 +104,6 @@ public class SignatureFilterTest {
// Signed request gets a developer role when a matching developer key is stored for the tenant.
tester.curator().writeTenant(new CloudTenant(appId.tenant(),
- new BillingInfo("id", "code"),
ImmutableBiMap.of(publicKey, () -> "user")));
verifySecurityContext(requestOf(signer.signed(request.copy(), Method.POST, () -> new ByteArrayInputStream(hiBytes)), hiBytes),
new SecurityContext(new SimplePrincipal("user"),