aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2020-08-05 16:17:37 +0200
committerGitHub <noreply@github.com>2020-08-05 16:17:37 +0200
commit91180ce35894fdfebb5e8743ee3543d43cb64ca4 (patch)
tree1432858ddc4753842d0eb600a96aaedc3294418d
parentbd4bcb7f35660c3736291ced6c7997cb776ac108 (diff)
parent110d2ddfe12ee3c9a1a312f8cab727c956b881c1 (diff)
Merge pull request #13994 from vespa-engine/ogronnesby/stop-reading-billing-info
Stop reading BillingInfo but write the default value
-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"),