collect_data.js 1 KB
'use strict';

const Collect = require('../../ci/collect_data');

const {
    Project
} = require('../../models');

module.exports = {
    async collect(ctx) {
        let projects,
            servers = {};

        setInterval(async() => {
            if (!projects) projects = await Project.findAll();
            if (!projects || !projects.length) {
                return;
            }

            projects.forEach(async(p) => {
                let hosts = [];
                let target = p.deploy['production'].target;
                if (typeof target === 'string') {
                    hosts.push(target);
                } else {
                    hosts = target;
                }

                hosts = hosts || [];

                hosts.forEach((host) => {
                    if (!servers[host]) {
                        servers[host] = new Collect(host, p.name, p.cloud);
                    }

                    servers[host].collect();
                });
            });
        }, 5000);
    }
};