aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@vespa.ai>2023-10-25 09:45:56 +0200
committerBjørn Christian Seime <bjorncs@vespa.ai>2023-10-25 09:45:56 +0200
commitb18f4727e5c4523cd8f953b48a126bf8e9c2ad99 (patch)
tree320257acc0d2885da5eae15ab6ed572484058eb2
parent8530db7c170861a3cec1b03e44ebdb7864845b1c (diff)
Use markdown in trial notification
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java17
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java15
2 files changed, 22 insertions, 10 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java
index bdec74dc865..6ec83921dd3 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java
@@ -151,31 +151,36 @@ public class CloudTrialExpirer extends ControllerMaintainer {
}
private void notifySignup(Tenant tenant) {
- queueNotification(tenant, "Welcome to Vespa Cloud", "Welcome to Vespa Cloud",
+ var consoleMsg = "Welcome to Vespa Cloud trial! [Manage plan](%s)".formatted(billingUrl(tenant));
+ queueNotification(tenant, consoleMsg, "Welcome to Vespa Cloud",
"Welcome to Vespa Cloud! We hope you will enjoy your trial. " +
"Please reach out to us if you have any questions or feedback.");
}
private void notifyMidCheckIn(Tenant tenant) {
- queueNotification(tenant, "How is your Vespa Cloud trial going?", "How is your Vespa Cloud trial going?",
+ var consoleMsg = "You're halfway through the *14 day* trial period. [Manage plan](%s)".formatted(billingUrl(tenant));
+ queueNotification(tenant, consoleMsg, "How is your Vespa Cloud trial going?",
"How is your Vespa Cloud trial going? " +
"Please reach out to us if you have any questions or feedback.");
}
private void notifyExpiresSoon(Tenant tenant) {
- queueNotification(tenant, "Your Vespa Cloud trial expires in 2 days", "Your Vespa Cloud trial expires in 2 days",
+ var consoleMsg = "Your Vespa Cloud trial expires in *2* days. [Manage plan](%s)".formatted(billingUrl(tenant));
+ queueNotification(tenant, consoleMsg, "Your Vespa Cloud trial expires in 2 days",
"Your Vespa Cloud trial expires in 2 days. " +
"Please reach out to us if you have any questions or feedback.");
}
private void notifyExpiresImmediately(Tenant tenant) {
- queueNotification(tenant, "Your Vespa Cloud trial expires tomorrow", "Your Vespa Cloud trial expires tomorrow",
+ var consoleMsg = "Your Vespa Cloud trial expires *tomorrow*. [Manage plan](%s)".formatted(billingUrl(tenant));
+ queueNotification(tenant, consoleMsg, "Your Vespa Cloud trial expires tomorrow",
"Your Vespa Cloud trial expires tomorrow. " +
"Please reach out to us if you have any questions or feedback.");
}
private void notifyExpired(Tenant tenant) {
- queueNotification(tenant, "Your Vespa Cloud trial has expired", "Your Vespa Cloud trial has expired",
+ var consoleMsg = "Your Vespa Cloud trial has expired. [Upgrade plan](%s)".formatted(billingUrl(tenant));
+ queueNotification(tenant, consoleMsg, "Your Vespa Cloud trial has expired",
"Your Vespa Cloud trial has expired. " +
"Please reach out to us if you have any questions or feedback.");
}
@@ -195,6 +200,8 @@ public class CloudTrialExpirer extends ControllerMaintainer {
source, Notification.Type.account, Notification.Level.info, consoleMsg, List.of(), mail);
}
+ private String billingUrl(Tenant t) { return controller().serviceRegistry().consoleUrls().tenantBilling(t.name()); }
+
private static TrialNotifications.Status updatedStatus(Tenant t, Instant i, TrialNotifications.State s) {
return new TrialNotifications.Status(t.name(), s, i);
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java
index 07ce2e415a7..4abfb90b436 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java
@@ -110,27 +110,32 @@ public class CloudTrialExpirerTest {
.withBooleanFlag(Flags.CLOUD_TRIAL_NOTIFICATIONS.id(), true);
registerTenant(tenant.value(), "trial", Duration.ZERO);
assertEquals(0.0, expirer.maintain());
- assertEquals("Welcome to Vespa Cloud", lastAccountLevelNotificationTitle(tenant));
+ var expected = "Welcome to Vespa Cloud trial! [Manage plan](https://console.tld/tenant/trial-tenant/account/billing)";
+ assertEquals(expected, lastAccountLevelNotificationTitle(tenant));
assertLastEmailEquals(mailer, "welcome.html");
+ expected = "You're halfway through the *14 day* trial period. [Manage plan](https://console.tld/tenant/trial-tenant/account/billing)";
clock.advance(Duration.ofDays(7));
assertEquals(0.0, expirer.maintain());
- assertEquals("How is your Vespa Cloud trial going?", lastAccountLevelNotificationTitle(tenant));
+ assertEquals(expected, lastAccountLevelNotificationTitle(tenant));
assertLastEmailEquals(mailer, "trial-reminder.html");
+ expected = "Your Vespa Cloud trial expires in *2* days. [Manage plan](https://console.tld/tenant/trial-tenant/account/billing)";
clock.advance(Duration.ofDays(5));
assertEquals(0.0, expirer.maintain());
- assertEquals("Your Vespa Cloud trial expires in 2 days", lastAccountLevelNotificationTitle(tenant));
+ assertEquals(expected, lastAccountLevelNotificationTitle(tenant));
assertLastEmailEquals(mailer, "trial-expiring-soon.html");
+ expected = "Your Vespa Cloud trial expires *tomorrow*. [Manage plan](https://console.tld/tenant/trial-tenant/account/billing)";
clock.advance(Duration.ofDays(1));
assertEquals(0.0, expirer.maintain());
- assertEquals("Your Vespa Cloud trial expires tomorrow", lastAccountLevelNotificationTitle(tenant));
+ assertEquals(expected, lastAccountLevelNotificationTitle(tenant));
assertLastEmailEquals(mailer, "trial-expiring-immediately.html");
+ expected = "Your Vespa Cloud trial has expired. [Upgrade plan](https://console.tld/tenant/trial-tenant/account/billing)";
clock.advance(Duration.ofDays(2));
assertEquals(0.0, expirer.maintain());
- assertEquals("Your Vespa Cloud trial has expired", lastAccountLevelNotificationTitle(tenant));
+ assertEquals(expected, lastAccountLevelNotificationTitle(tenant));
assertLastEmailEquals(mailer, "trial-expired.html");
}