Name
sn_cmdb_int_util.CMDBIntegrationErrorParser
Description
No description available
Script
var CMDBIntegrationErrorParser = Class.create();
CMDBIntegrationErrorParser.prototype = {
initialize: function() {},
parseRow: function(row) {
if (row.getValue("sys_import_state") == "error") {
//Check for IRE log.
var ireLog = new GlideRecord("import_log");
ireLog.addQuery("level", "2");
ireLog.setLimit(20);
ireLog.addQuery("import_set_row", row.getValue("sys_id"));
ireLog.addQuery("message", "STARTSWITH", "Identification Reconciliation Engine(IRE) Processing errors->");
ireLog.addQuery("sys_created_on", ">=", row.getValue("sys_created_on"));
ireLog.query();
if (ireLog.next()) {
var message = ireLog.getValue("message");
//This message is split by line returns.
var ireMessages = message.split("\n");
//Ignore the first row.
for (var i = 1; i < ireMessages.length; i++) {
var ireMessage = ireMessages[i];
ireMessage = this.cleanIREMessage(ireMessage);
if (!gs.nil(ireMessage)) {
this.createErrorRecord(row, ireMessage, "ire");
}
}
}
}
},
parseRowForIREWarnings: function(row) {
//Check for IRE log.
var ireLog = new GlideRecord("import_log");
ireLog.addQuery("level", "0");
ireLog.addQuery("import_set_row", row.getValue("sys_id"));
ireLog.setLimit(1);
ireLog.addQuery("message", "STARTSWITH", "Identification Reconciliation Engine(IRE) Processing warnings-");
ireLog.addQuery("sys_created_on", ">=", row.getValue("sys_created_on"));
ireLog.query();
if (ireLog.next()) {
var message = ireLog.getValue("message");
//This message is split by line returns.
var ireMessages = message.split("\n");
//Ignore the first row.
for (var i = 1; i < ireMessages.length; i++) {
var ireMessage = ireMessages[i];
ireMessage = this.cleanIREMessage(ireMessage);
if (!gs.nil(ireMessage)) {
this.createErrorRecord(row, ireMessage, "ire");
}
}
}
},
cleanIREMessage: function(message) {
// Remove the leading number.
message = message.replace(/^\d+:\s*/, "");
// Some errors have two sentences. The second sentence isn't unique.
if (message.indexOf(". ") > 0) {
message = message.substring(0, message.indexOf(". ") + 1);
}
if (message == "ABANDONED: Abandoned due to too many errors") {
return null;
}
return message;
},
createErrorRecord: function(row, message, category) {
//Find my execution import set.
var executionImportSet = new GlideRecord("sn_cmdb_int_util_cmdb_integration_execution_import_set");
executionImportSet.addQuery("import_set", row.sys_import_set.sys_id);
executionImportSet.setLimit(1);
executionImportSet.query();
if (!executionImportSet.next()) {
return;
}
var error = new GlideRecord("sn_cmdb_int_util_cmdb_integration_execution_error");
error.addQuery("cmdb_integration_execution_import_set", executionImportSet.sys_id);
error.setLimit(1);
error.addQuery("error_message", message);
error.query();
if (error.next()) {
error.setValue("count", 1 + parseInt(error.getValue("count")));
error.update();
} else {
error.initialize();
error.setValue("cmdb_integration_execution_import_set", executionImportSet.sys_id);
error.setValue("error_message", message);
error.setValue("category", category);
error.setValue("target_table", row.getTableName());
error.setValue("target_sys_id", row.getValue("sys_id"));
error.setValue("count", 1);
error.insert();
}
},
createImportErrorRecord: function(import_set, message, category) {
//Find my execution import set.
var executionImportSet = new GlideRecord("sn_cmdb_int_util_cmdb_integration_execution_import_set");
executionImportSet.addQuery("import_set", import_set.sys_id);
executionImportSet.setLimit(1);
executionImportSet.query();
if (!executionImportSet.next()) {
return;
}
var error = new GlideRecord("sn_cmdb_int_util_cmdb_integration_execution_error");
error.addQuery("cmdb_integration_execution_import_set", executionImportSet.sys_id);
error.setLimit(1);
error.addQuery("error_message", message);
error.query();
if (error.next()) {
error.setValue("count", 1 + parseInt(error.getValue("count")));
error.update();
} else {
error.initialize();
error.setValue("cmdb_integration_execution_import_set", executionImportSet.sys_id);
error.setValue("error_message", message);
error.setValue("category", category);
error.setValue("count", 1);
error.insert();
}
},
createExecutionErrorRecord: function(execution_import_set, message, category) {
var error = new GlideRecord("sn_cmdb_int_util_cmdb_integration_execution_error");
error.addQuery("cmdb_integration_execution_import_set", execution_import_set.sys_id);
error.setLimit(1);
error.addQuery("error_message", message);
error.query();
if (error.next()) {
error.setValue("count", 1 + parseInt(error.getValue("count")));
error.update();
} else {
error.initialize();
error.setValue("cmdb_integration_execution_import_set", execution_import_set.sys_id);
error.setValue("error_message", message);
error.setValue("category", category);
error.setValue("count", 1);
error.insert();
}
},
captureTransformHistoryErrors: function(transform_history) {
var importLogGR = new GlideRecord("import_log");
importLogGR.addQuery("run_history", transform_history.getUniqueValue());
importLogGR.addQuery("level", "IN", "1,2");
importLogGR.addQuery("sys_created_on", ">=", transform_history.getValue("sys_created_on"));
importLogGR.setLimit(10);
importLogGR.query();
if (!importLogGR.hasNext())
return;
var grExecution = new GlideRecord('sn_cmdb_int_util_cmdb_integration_execution_import_set');
grExecution.addQuery('import_set', transform_history.set);
grExecution.orderByDesc('sys_created_on');
grExecution.setLimit(1);
grExecution.query();
if (!grExecution.next())
return;
while (importLogGR.next())
this.createExecutionErrorRecord(grExecution, importLogGR.message, 'datasource');
},
type: 'CMDBIntegrationErrorParser'
};
Sys ID
4962b9e673320010011e3e2dfef6a787