Ejemplo n.º 1
0
    function loadAuditSummary(jobs, rowScopesIn) {
      const levels = { system_info: -1, info: 0, warning: 1, error: 2 };
      const jobMessages = {};
      const createTimes = {};

      _.each(jobs, (job) => {
      // keep track of the job create times
      // only messages newer than the job's create time should be displayed.
        createTimes[job.job_id] = moment(job.create_time).valueOf();
      });

      jobMessagesService.getAuditMessagesSummary()
        .then((resp) => {
          const messagesPerJob = resp.messagesPerJob;
          _.each(messagesPerJob, (job) => {
            // ignore system messages (id==='')
            if (job.key !== '') {
              if (job.levels && job.levels.buckets && job.levels.buckets.length) {
                let highestLevel = 0;
                let highestLevelText = '';
                let msgTime = 0;

                _.each(job.levels.buckets, (level) => {
                  const label = level.key;
                  // note the highest message level
                  if (levels[label] > highestLevel) {
                    highestLevel = levels[label];
                    if (level.latestMessage && level.latestMessage.buckets && level.latestMessage.buckets.length) {
                      _.each(level.latestMessage.buckets, (msg) => {
                        // there should only be one result here.
                        highestLevelText = msg.key;

                        // note the time in ms for the highest level
                        // so we can filter them out later if they're earlier than the
                        // job's create time.
                        if (msg.latestMessage && msg.latestMessage.value_as_string) {
                          const time = moment(msg.latestMessage.value_as_string);
                          msgTime = time.valueOf();
                        }

                      });
                    }
                  }
                });

                jobMessages[job.key] = {
                  job_id: job.key,
                  highestLevelText,
                  highestLevel,
                  msgTime
                };
              }
            }
          });

          // loop over the rowScopesIn and add icons if applicable
          _.each(rowScopesIn, (rs) => {
            const job = jobMessages[rs.job.job_id];
            if (job && job.msgTime >= createTimes[job.job_id]) {
              rs.jobAudit.jobWarningClass = '';
              rs.jobAudit.jobWarningText = mlEscape(job.highestLevelText);
              if (job.highestLevel === 1) {
                rs.jobAudit.jobWarningClass = 'job-warning fa fa-exclamation-circle';
              } else if (job.highestLevel === 2) {
                rs.jobAudit.jobWarningClass = 'job-error fa fa-exclamation-triangle';
              }
            }
          });

        }).catch((resp) => {
          console.log('loadAuditSummary: audit messages for all jobs could not be loaded');

          if (resp.message) {
            msgs.error(resp.message);
          }
        });
    }
Ejemplo n.º 2
0
    function loadAuditMessages(jobs, rowScopesIn, jobId) {
      const createTimes = {};
      const fromRange = '1M';
      const aDayAgo = moment().subtract(1, 'days');

      _.each(jobs, (job) => {
        if (auditMessages[job.job_id] === undefined) {
          auditMessages[job.job_id] = [];
        }
        // keep track of the job create times
        // only messages newer than the job's create time should be displayed.
        createTimes[job.job_id] = moment(job.create_time).valueOf();
      });

      // function for adding messages to job
      // deduplicated based on time and message
      function addMessage(id, msg) {
        if (auditMessages[id] !== undefined &&
         msg.timeMs >= createTimes[id]) {
          if (!_.findWhere(auditMessages[id], { timeMs: msg.timeMs, message: msg.message, node_name: msg.node_name })) {
            auditMessages[id].push(msg);
          }
        }
      }

      return jobMessagesService.getJobAuditMessages(fromRange, jobId)
        .then((resp) => {
          const messages = resp.messages;
          _.each(messages, (msg) => {
            const time = moment(msg.timestamp);
            msg.time = time.format(TIME_FORMAT);
            msg.timeMs = time.valueOf();
            msg.isRecent = (time > aDayAgo);

            if (msg.job_id === '') {
            // system message
              msg.level = 'system_info';
              addMessage(jobId, msg);
            } else {
            // job specific message
              addMessage(msg.job_id, msg);
            }
          });

          // if we've loaded messages for just one job, they may be out of order
          // so sorting is needed.
          auditMessages[jobId] = _.sortBy(auditMessages[jobId], 'timeMs');

          _.each(rowScopesIn, (rs) => {
            if (rs.job.job_id === jobId) {
              rs.jobAudit.messages = auditMessages[jobId];
            }
          });

        })
        .catch((resp) => {
          console.log('loadAuditMessages: audit messages for ' + jobId + ' could not be loaded');
          if (resp.message) {
            msgs.error(resp.message);
          }
        });
    }