async updateSimulation()

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);
        }
    }