From e4c42bbaa1605ae7be01ccbc5a621b87989e06c6 Mon Sep 17 00:00:00 2001 From: Joseph White Date: Tue, 12 Jun 2018 22:11:17 -0400 Subject: [PATCH] Improve error handling for catastrophe metric --- etl/js/config/supremm/dataset_maps/pcp.js | 35 +++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/etl/js/config/supremm/dataset_maps/pcp.js b/etl/js/config/supremm/dataset_maps/pcp.js index 959b3d6c..c886bf72 100644 --- a/etl/js/config/supremm/dataset_maps/pcp.js +++ b/etl/js/config/supremm/dataset_maps/pcp.js @@ -425,8 +425,39 @@ module.exports = function(config) { return this.getcov.call(this, job, "cpuperf.cpiref"); } }, - "catastrophe": { - ref: "catastrophe.value" + catastrophe: { + formula: function (job) { + var result = { + value: null, + error: this.metricErrors.codes.metricMissingNotAvailOnThisHost.value + }; + + if (job.catastrophe) { + if (job.catastrophe.error) { + switch (job.catastrophe.error) { + case 1: + result.error = this.metricErrors.codes.metricDisabledByUser.value; + break; + case 2: + result.error = this.metricErrors.codes.metricInsufficientData.value; + break; + case 6: + result.error = this.metricErrors.codes.metricCounterRollover.value; + break; + default: + result.error = this.metricErrors.codes.metricMissingUnknownReason.value; + break; + } + } else if (Number.isNaN(job.catastrophe.value)) { + result.error = this.metricErrors.codes.metricSummarizationError.value; + } else { + result.value = job.catastrophe.value; + result.error = 0; + } + } + + return result; + } }, "cpldref": { ref: "cpuperf.cpldref.avg"