async buildRecentlyChanged()

in source/backend/discovery/src/discovery/updatedResources.js [8:48]


    async buildRecentlyChanged({rootAccountId, accounts, customUserAgent, rootAccountRole}) {
        logger.info("buildRecentlyChanged");

        let changed = new Map();
        let all = new Map();

        for (let account of accounts) {
            try {
                const role = account.accountId === rootAccountId ? rootAccountRole :
                    `arn:aws:iam::${account.accountId}:role/ZoomDiscoveryRole`;

                const creds = await login.login(role);

                for (let region of account.regions) {
                    let allNodes = await this.getAll(customUserAgent, creds, region.name);

                    if (allNodes.Results) {
                        allNodes.Results.reduce((acc, element) => {
                            let result = JSON.parse(element);
                            return acc.set(result.resourceId, result);
                        }, all);
                    }

                    let recentlyChanged = await this.getRecentlyChanged(customUserAgent, creds, region.name);

                    if (recentlyChanged.Results) {
                        recentlyChanged.Results.reduce((acc, element) => {
                            let result = JSON.parse(element);
                            return acc.set(result.resourceId, result);
                        }, changed);
                    }
                }
            }
            catch (err) {
                logger.error(`Import api data failed for account ${account.accountId}: Error was ${err}`);
                zoomUtils.dumpError(err);
            }
        }

        return { all: all, updated: changed };
    }