in source/microservices/lib/simulationManager.js [163:208]
async updateSimulation(action, simulations) {
try {
const responses = await Promise.all(simulations.map(async (newSim) => {
let _params = {
TableName: process.env.SIMULATIONS_TBL,
Key: {
simId: newSim.simId
}
};
const date = new Date().toISOString();
let sim = await docClient.get(_params).promise();
sim.Item.updatedAt = date;
sim.Item.runs += 1;
sim.Item.stage = newSim.stage;
if (action === 'start') {
sim.Item.stage = 'running';
sim.Item.lastRun = date;
await this._queueSimulatorAction(sim.Item);
return this._saveSimulation(sim.Item);
} else if (action === 'stop') {
sim.Item.stage = 'stopping';
return this._saveSimulation(sim.Item);
} else {
let error = new Error();
error.code = 400;
error.error = "InvalidAction";
error.message = `Invalid action ${action}`;
throw (error);
}
}));
if (process.env.SEND_ANONYMOUS_METRIC === 'Yes' && action === 'start') {
let metricData = {
eventType: 'start simulation',
numSimulations: simulations.length
};
metricData.simType = simulations[0].simId.includes('idsAutoDemo') ? 'autoDemo' : 'custom';
await sendAnonymousMetric(metricData);
}
return responses;
} catch (err) {
console.error(err);
console.error(`Error occurred while attempting to start simulations.`);
throw (err);
}
}