in source/microservices/lib/simulationManager.js [86:135]
async createSimulation(sim) {
try {
const count = sim.devices.reduce((acc, curr) => acc + curr.amount, 0);
if (count > 100) {
const error = new Error();
error.code = 400;
error.error = 'DeviceCreateLimitExceeded';
error.message = 'Exceeded limit of 100 concurrent device creations per request.';
throw (error);
}
let _id;
if (sim.simId && sim.simId !== 'idsAutoDemo') {
_id = sim.simId;
} else {
const suffix = sim.simId || "";
_id = nanoid(9) + suffix;
}
const date = new Date().toISOString();
let _simulation = {
simId: _id,
name: sim.name,
stage: 'sleeping',
devices: sim.devices,
interval: sim.interval,
duration: sim.duration,
runs: 0,
lastRun: '',
createdAt: date,
updatedAt: date,
};
let params = {
TableName: process.env.SIMULATIONS_TBL,
Item: _simulation
};
let data = await docClient.put(params).promise();
if (process.env.SEND_ANONYMOUS_METRIC === 'Yes') {
let metricData = {
eventType: 'create simulation',
duration: sim.duration,
numDevices: count
}
await sendAnonymousMetric(metricData);
}
return (data);
} catch (err) {
console.error(err);
console.error(`Error occurred while attempting to create simulation.`);
throw (err);
}
}