diff options
Diffstat (limited to 'controller-server')
6 files changed, 36 insertions, 7 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java index 7b3babdd2a8..954582a8ec7 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java @@ -164,7 +164,7 @@ public class UserApiHandler extends LoggingRequestHandler { root.setBool("isCd", controller.system().isCd()); root.setBool(enable_public_signup_flow.id().toString(), enable_public_signup_flow.with(FetchVector.Dimension.CONSOLE_USER_EMAIL, user.email()).value()); - root.setBool("maxTrialTenants", maxTrialTenants()); + root.setBool("hasTrialCapacity", hasTrialCapacity()); toSlime(root.setObject("user"), user); @@ -348,11 +348,11 @@ public class UserApiHandler extends LoggingRequestHandler { return new MessageResponse(user + " is no longer a member of " + role); } - private boolean maxTrialTenants() { - if (! controller.system().isPublic()) return false; + private boolean hasTrialCapacity() { + if (! controller.system().isPublic()) return true; var existing = controller.tenants().asList().stream().map(Tenant::name).collect(Collectors.toList()); var trialTenants = controller.serviceRegistry().billingController().tenantsWithPlan(existing, PlanId.from("trial")); - return maxTrialTenants.value() > 0 && maxTrialTenants.value() >= trialTenants.size(); + return maxTrialTenants.value() < 0 || trialTenants.size() < maxTrialTenants.value(); } private static Inspector bodyInspector(HttpRequest request) { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiTest.java index d9ad30020db..0ed30871ded 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiTest.java @@ -245,4 +245,21 @@ public class UserApiTest extends ControllerContainerCloudTest { .user(user), new File("user-with-applications-cloud.json")); } + + @Test + public void maxTrialTenants() { + ContainerTester tester = new ContainerTester(container, responseFiles); + ((InMemoryFlagSource) tester.controller().flagSource()) + .withIntFlag(Flags.MAX_TRIAL_TENANTS.id(), 1) + .withBooleanFlag(Flags.ENABLE_PUBLIC_SIGNUP_FLOW.id(), true); + ControllerTester controller = new ControllerTester(tester); + Set<Role> operator = Set.of(Role.hostedOperator(), Role.hostedSupporter(), Role.hostedAccountant()); + User user = new User("dev@domail", "Joe Developer", "dev", null); + + controller.createTenant("tenant1", Tenant.Type.cloud); + + tester.assertResponse( + request("/api/user/v1/user").user(user), + new File("user-without-trial-capacity-cloud.json")); + } } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-athenz.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-athenz.json index 40b48efbf62..2ae3514bec3 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-athenz.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-athenz.json @@ -2,7 +2,7 @@ "isPublic": false, "isCd": false, "enable-public-signup-flow": (ignore), - "maxTrialTenants": (ignore), + "hasTrialCapacity": (ignore), "user": { "name": "Joe Developer", "email": "dev@domail", diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-cloud.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-cloud.json index 24e7f0f8947..2d2a137c2ca 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-cloud.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-cloud.json @@ -2,7 +2,7 @@ "isPublic": true, "isCd": false, "enable-public-signup-flow": (ignore), - "maxTrialTenants": (ignore), + "hasTrialCapacity": true, "user": { "name": "Joe Developer", "email": "dev@domail", diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-applications.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-applications.json index ee13e9b35a3..e03a18a1949 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-applications.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-applications.json @@ -2,7 +2,7 @@ "isPublic": (ignore), "isCd": (ignore), "enable-public-signup-flow": (ignore), - "maxTrialTenants": (ignore), + "hasTrialCapacity": (ignore), "user": { "name": "Joe Developer", "email": "dev@domail", diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-trial-capacity-cloud.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-trial-capacity-cloud.json new file mode 100644 index 00000000000..a7410b14850 --- /dev/null +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-trial-capacity-cloud.json @@ -0,0 +1,12 @@ +{ + "isPublic": true, + "isCd": false, + "enable-public-signup-flow": true, + "hasTrialCapacity": false, + "user": { + "name": "Joe Developer", + "email": "dev@domail", + "nickname": "dev" + }, + "tenants": {} +}
\ No newline at end of file |