-
Notifications
You must be signed in to change notification settings - Fork 442
/
provision-sandbox-instance-for-one-user-and-deliver-email.js
62 lines (41 loc) · 2.22 KB
/
provision-sandbox-instance-for-one-user-and-deliver-email.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
module.exports = {
friendlyName: 'Provision Sandbox instance for one user and deliver email.',
description: 'Provisions a new Fleet Sandbox instance for a user on the Fleet Sandbox waitlist, and sends an email to the user.',
extendedDescription: 'This script will provision a Sandbox instance for the user who has been on the waitlist the longest.',
fn: async function () {
let earliestCreatedUserCurrentlyOnWaitlist = await User.find({inSandboxWaitlist: true})
.limit(1)
.sort('createdAt ASC');
// If there are no users on the Fleet sandbox waitlist, end the script.
if(earliestCreatedUserCurrentlyOnWaitlist.length === 0){
sails.log('There are no users currently waiting on the Fleet Sandbox Waitlist.');
return;
}
let userToRemoveFromSandboxWaitlist = earliestCreatedUserCurrentlyOnWaitlist[0];
let sandboxInstanceDetails = await sails.helpers.fleetSandboxCloudProvisioner.provisionNewFleetSandboxInstance.with({
firstName: userToRemoveFromSandboxWaitlist.firstName,
lastName: userToRemoveFromSandboxWaitlist.lastName,
emailAddress: userToRemoveFromSandboxWaitlist.emailAddress,
})
.intercept((err)=>{
return new Error(`When attempting to provision a new Fleet Sandbox instance for a User (id:${userToRemoveFromSandboxWaitlist.id}), an error occured. Full error: ${err}`);
});
await User.updateOne({id: userToRemoveFromSandboxWaitlist.id})
.set({
fleetSandboxURL: sandboxInstanceDetails.fleetSandboxURL,
fleetSandboxExpiresAt: sandboxInstanceDetails.fleetSandboxExpiresAt,
fleetSandboxDemoKey: sandboxInstanceDetails.fleetSandboxDemoKey,
inSandboxWaitlist: false,
});
// Send the user an email to let them know that their Fleet sandbox instance is ready.
await sails.helpers.sendTemplateEmail.with({
to: userToRemoveFromSandboxWaitlist.emailAddress,
from: sails.config.custom.fromEmailAddress,
fromName: sails.config.custom.fromName,
subject: 'Your Fleet Sandbox instance is ready!',
template: 'email-sandbox-ready-approved',
templateData: {},
});
sails.log(`Successfully removed a user (id: ${userToRemoveFromSandboxWaitlist.id}) from the Fleet Sandbox waitlist.`);
}
};