Name
sn_em_connector.CustomConnectorMappingUtils
Description
This script will create or update
Script
var CustomConnectorMappingUtils = Class.create();
CustomConnectorMappingUtils.prototype = {
initialize: function() {},
createAndUpdateMappingRecord: function(sys_id, json_payload, event_field_mapping) {
try {
if (sys_id == '' || sys_id == null) {
gs.error(' Connector definition sys_id is not valid');
return;
}
var field_mapping = new GlideRecord('sn_em_connector_custom_field_mapping');
field_mapping.initialize();
field_mapping.addQuery('push_connector_definition', sys_id);
field_mapping.query();
if (field_mapping.getRowCount() > 0) {
while (field_mapping.next()) {
field_mapping.json_payload = json_payload;
field_mapping.event_field_mapping = event_field_mapping;
field_mapping.push_connector_definition = sys_id;
field_mapping.update();
}
} else {
field_mapping.push_connector_definition = sys_id;
field_mapping.json_payload = json_payload;
field_mapping.event_field_mapping = event_field_mapping;
field_mapping.insert();
}
var definition = new GlideRecord('sn_em_connector_listener');
definition.get(sys_id);
if (definition.isValidRecord()) {
var result_script = '';
var type = definition.getValue('type');
var header_value = definition.getValue('header_value');
var source_value = definition.getValue('event_source_label');
var description = definition.getValue('description');
var map_string_array = [];
map_string_array = this.mapping(event_field_mapping);
var map_string = '';
var complex_payload_flag = false;
complex_payload_flag = map_string_array[0];
map_string = map_string_array[1];
if (type == '1') {
// create instance type connector definition [complex_payload_flag, str];
result_script = result_script + this.prepend() + map_string + this.append(complex_payload_flag) + this.additionalMapping(event_field_mapping, complex_payload_flag);
definition.setValue('script', result_script);
} else if (type == '2') {
// create mid server script or update
var mid_script_mediator = new global.EvtMgmtConnectorMediator();
var mid_server_script_include = definition.getValue('mid_server_script_include');
result_script = result_script + this.mid_prepend(header_value, source_value) + map_string + this.mid_append(header_value, complex_payload_flag) + this.additionalMapping(event_field_mapping, complex_payload_flag);
var mid_script_record = new GlideRecord('ecc_agent_script_include');
mid_script_record.get(mid_server_script_include);
if (mid_script_record.isValidRecord()) {
mid_script_mediator.updateCustomMidScriptInclude(header_value, description, mid_server_script_include, result_script);
} else {
var mid_script_sys_id = mid_script_mediator.createCustomMidScriptInclude(header_value, description, mid_server_script_include, result_script);
definition.setValue('mid_server_script_include', mid_script_sys_id);
}
// create mid type connector definition
}
definition.update();
} else {
throw "No Valid connector definition found for sys_id :" + sys_id;
}
} catch (e) {
throw e;
}
},
mid_prepend: function(header_value, source_value) {
var prefix = "var Event = Packages.com.snc.commons.eventmgmt.Event;\n\
var StringUtil = Packages.com.glide.util.StringUtil;\n\
var JSONObject = Packages.org.json.JSONObject;\n\
var SimpleDateFormat = Packages.java.text.SimpleDateFormat;\n\
var StringUtil = Packages.com.glide.util.StringUtil;\n\
var TimeZone = Packages.java.util.TimeZone;\n\
var GlideDateTime = Packages.com.glide.glideobject.GlideDateTime;\n\
var " + header_value + "= Class.create();\n\
" + header_value + ".prototype = {\n\
initialize: function() {},\n\
transform: function() {\n\n\
var jsonObjectParse = new JSONObject(messageBody);\n\
var requestBody = JSON.parse(jsonObjectParse);\n\
var events = [];\n\
var eventObj = new Event();\n\
var event = {};\n\
event.source = " + '"' + source_value + '"' + ";\n\
//set event class to connector instance name if present\n\
event.event_class = (typeof event_class !== 'undefined' && event_class) ? event_class : " + '"' + source_value + '"' + ";\n";
return prefix;
},
mid_append: function(header_value, complex_payload_flag) {
var suffix = "";
if (!complex_payload_flag) {
suffix = suffix + " var flattenPayload = new FlattenPayload();\n\
var flatPayload = flattenPayload.getFlattenPayload(additional_info);\n\
for (var key in flatPayload) {\n\
additional_info[key] = flatPayload[key];\n\
}\n\
for (key in event) {\n\
eventObj.setField(key, event[key]);\n\
}\n\
for (key in additional_info) {\n\
eventObj.setField(key, additional_info[key]);\n\
}\n\
events.push(eventObj);\n\
// STRY55293363: populate connector tags in eventObj additional info\n\
if (typeof connector_tags !== 'undefined' && connector_tags) {\n\
var tagPrefix = (typeof alert_tags_prefix !== 'undefined' && alert_tags_prefix) ? alert_tags_prefix : 't_';\n\
new ConnectorUtil().populateConnectorTagsWithAlertTagPrefix(events, connector_tags, tagPrefix);\n\
}\n\
return events;\n\
},\n\
type: '" + header_value + "'\n\};\n";
} else {
suffix = suffix + " var flattenPayload = new FlattenPayload();\n\
var flatPayload = flattenPayload.getFlattenPayload(additional_info);\n\
for (var key in flatPayload) {\n\
additional_info[key] = flatPayload[key];\n\
}\n\
for (key in event) {\n\
eventObj.setField(key, event[key]);\n\
}\n\
for (key in additional_info) {\n\
eventObj.setField(key, additional_info[key]);\n\
}\n\
events.push(eventObj);\n\
}\n\
// STRY55293363: populate connector tags in eventObj additional info\n\
if (typeof connector_tags !== 'undefined' && connector_tags) {\n\
var tagPrefix = (typeof alert_tags_prefix !== 'undefined' && alert_tags_prefix) ? alert_tags_prefix : 't_';\n\
new ConnectorUtil().populateConnectorTagsWithAlertTagPrefix(events, connector_tags, tagPrefix);\n\
}\n\
return events;\n\
},\n\
type: '" + header_value + "'\n\};\n";
}
return suffix;
},
mid_custom_mapping: function() {
var str = '';
return str;
},
additional_mid_mapping: function() {
var str = '';
return str;
},
prepend: function() {
var prefix = "\(function process( /*RESTAPIRequest*/ request, body) {\n\
try {\n\n\
var requestBody = JSON.parse(body);\n\
var queryParams = request.queryParams;\n\
var err_event = '';\n\
//Create the new event record\n\
var event = new GlideRecord('em_event');\n\
event.initialize();\n\
event.source = source_label;\n\
//Populate event_class with source instance name if present\n\
event.event_class = (typeof event_class !== 'undefined' && event_class) ? event_class : source_label;\n\
var responseBody = {};\n\
responseBody.eventSysIds = [];\n";
return prefix;
},
append: function(complex_payload_flag) {
var suffix = "";
if (!complex_payload_flag) {
suffix = suffix + "\ //flattened fields has to be seperated and added to additional information.\n\
var flattenPayload = new sn_em_connector.FlattenPayload();\n\
var flatPayload = flattenPayload.getFlattenPayload(additional_info);\n\
for (var key in flatPayload) {\n\
additional_info[key] = flatPayload[key];\n\
}\n\n\
//update additional_info field field with all the query_params from the endpoint\n\
var endpointParamsUtil = new sn_em_connector.EndpointParamsUtil();\n\
endpointParamsUtil.updateAdditionalInfoWithEndpointParams(request.queryParams, additional_info);\n\n\
if (typeof connector_tags !== 'undefined' && connector_tags) {\n\
new sn_em_connector.PushConnectorInstanceUtils().updateAdditionalInfoWithConnectorTags(additional_info, connector_tags);\n\
}\n\
event.additional_info = JSON.stringify(additional_info);\n\n\
responseBody.eventSysIds.push(event.insert());\n\
// The variable 'response' is defined in sn_em_connector scope. Adding scope identifier as prefix makes it accessibel in connectors created in scope other than sn_em_connector.\n\
sn_em_connector.response.setBody(responseBody);\n\
\n\
} catch (er) {\n\
gs.info(er);\n\
status = 500;\n\
return er;\n\
}\n\n\
})(request, body);\n";
} else {
suffix = suffix + "\ //flattened fields has to be seperated and added to additional information.\n\
var flattenPayload = new sn_em_connector.FlattenPayload();\n\
var flatPayload = flattenPayload.getFlattenPayload(additional_info);\n\
for (var key in flatPayload) {\n\
additional_info[key] = flatPayload[key];\n\
}\n\n\
//update additional_info field field with all the query_params from the endpoint\n\
var endpointParamsUtil = new sn_em_connector.EndpointParamsUtil();\n\
endpointParamsUtil.updateAdditionalInfoWithEndpointParams(request.queryParams, additional_info);\n\n\
if (typeof connector_tags !== 'undefined' && connector_tags) {\n\
new sn_em_connector.PushConnectorInstanceUtils().updateAdditionalInfoWithConnectorTags(additional_info, connector_tags);\n\
}\n\
event.additional_info = JSON.stringify(additional_info);\n\n\
responseBody.eventSysIds.push(event.insert());\n\
}\n\
sn_em_connector.response.setBody(responseBody);\n\
}else{\n\
throw complex_payload + ' is missing in alert payload, Cant proceed !!';\n\
}\n\
\n\
} catch (er) {\n\
gs.info(er);\n\
status = 500;\n\
return er;\n\
}\n\n\
})(request, body);\n";
/* * Description:
* Parameters:
* Returns:
*/
}
return suffix;
},
mapping: function(event_field_mapping) {
var str = '';
var event_body = JSON.parse(event_field_mapping);
if (event_body == null)
return str;
var complex_array = [];
// Setting message-key [listEventPayload, prefix, result_msg_key]
var message_key = event_body.message_key;
if (message_key != null && message_key != '') {
complex_array = this.createMessageKeyScript(message_key); // this will create the messagekey script and will check the if mapping value has complex array object or not
}
var complex_payload_flag = false;
var prefix = '';
var message_key_script = '';
if (complex_array != null && complex_array.length == 3) {
complex_payload_flag = complex_array[0]; // true if custom mapping value has complex object eg: alert.agent[i].alertname[1]
prefix = complex_array[1];
message_key_script = complex_array[2];
}
var format = /\[(\d|[0-9]+)\]/g;
// complex value is present then we have to process the events one by one in a loop
if (complex_payload_flag) {
str = str + " var complex_payload = requestBody." + prefix + ";\n\
if(typeof complex_payload !== 'undefined' && complex_payload){\n\
var complex_length = complex_payload.length;\n\
for(var i=0;i<complex_length;i++){\n";
}
str = str + message_key_script;
var isConstSeverityFlag = false;
var severityMap = event_body.severityMap;
if (severityMap != null && severityMap != '') {
isConstSeverityFlag = severityMap.isConstSeverity;
}
// setting severity
var eventSeverity = event_body.severity;
if (eventSeverity != null && eventSeverity != '') {
if (isConstSeverityFlag == false) {
str = str + this.createSeverityScript(eventSeverity, prefix, format, complex_payload_flag);
} else {
var resolutionState = 'New';
switch (eventSeverity.toString().toUpperCase()) {
case 'CRITICAL':
str = str + ' event.severity = "1";\n';
break;
case 'MAJOR':
str = str + ' event.severity = "2";\n';
break;
case 'MINOR':
str = str + ' event.severity = "3";\n';
break;
case 'WARNING':
str = str + ' event.severity = "4";\n';
break;
case 'INFO':
str = str + ' event.severity = "5";\n';
break;
case 'CLEAR':
str = str + ' event.severity = "0";\n';
resolutionState = 'Closing';
break;
}
str = str + " event.resolution_state = '" + resolutionState + "' ;\n\n";
}
}
// time of event, Ui will make time foramt compulsory
// UI is sending \"timeOfEventMap\":{\"time_format\":\"YYYY-MM-DD HH:mm:SS\",\"time_of_event\":\"check_name\",\"time_zone\":\"GMT+13:00\"}
// time zone is not always required, if user doesnt provide this value, we will not abort the action and will process it as normal way
var time = event_body.timeOfEventMap;
if (time != null) {
var alert_creation_time = time.time_of_event;
var time_format = time.time_format;
var timezone = time.time_zone;
if (alert_creation_time != null && time_format != null) {
alert_creation_time = alert_creation_time.trim();
time_format = time_format.trim();
time_format = time_format.toUpperCase();
if (timezone == null || timezone == '') {
timezone = 'GMT+00:00';
}
timezone = timezone.trim();
switch (time_format) {
case 'YYYY-MM-DDTHH:MM:SSZ':
str = str + this.timeformat1(alert_creation_time, timezone);
break;
case 'YYYY-MM-DD HH:MM:SS':
str = str + this.timeformat2(alert_creation_time, timezone);
break;
case 'YYYY-MM-DDTHH:MM:SS.OOOZ':
str = str + this.timeformat3(alert_creation_time, timezone);
break;
case 'YYYY-MM-DDTHH:MM:SS.0000000Z':
str = str + this.timeformat4(alert_creation_time, timezone);
break;
case 'EpochTime(10 digit or 13 digit)':
str = str + this.timeformat5(alert_creation_time, timezone);
break;
}
}
} else {
str = str + '\ var timeOfEvent = new GlideDateTime();\n\
event.time_of_event = timeOfEvent;\n';
}
// description
var customDescription = event_body.description;
if (customDescription != null && customDescription != '') {
str = str + this.createDescriptionScript(customDescription, prefix, format, complex_payload_flag);
}
// node
var customNode = event_body.node;
if (customNode != null && customNode != '') {
str = str + this.createNodeScript(customNode, prefix, format, complex_payload_flag);
}
// resource
var customResource = event_body.resource;
if (customResource != null && customResource != '') {
str = str + this.createResourceScript(customResource, prefix, format, complex_payload_flag);
}
// type
var customType = event_body.type;
if (customType != null && customType != '') {
str = str + this.createTypeScript(customType, prefix, format, complex_payload_flag);
}
// metric-name
var custom_metric_name = event_body.metric_name;
if (custom_metric_name != null && custom_metric_name != '') {
str = str + this.createMetricScript(custom_metric_name, prefix, format, complex_payload_flag);
}
// additional-info
var custom_additional_info = event_body.additional_info;
if (custom_additional_info != null && custom_additional_info != '') {
str = str + this.createAdditionalInfoScript(custom_additional_info, prefix, format, complex_payload_flag);
} else {
str = str + " var additional_info = requestBody;\n";
}
return [complex_payload_flag, str];
},
additionalMapping: function(event_field_mapping, complex_payload_flag) {
var str = '';
var event_body = JSON.parse(event_field_mapping);
if (event_body == null)
return str;
var severityMap = event_body.severityMap;
str = str + '\ \n function severityMapping(severity) {\n\n\
var alertSeverity = severity.toString().toLowerCase();\n\
switch(alertSeverity ) {\n';
if (event_body.severityMap.Critical != null && event_body.severityMap.Critical != '') {
var critical = event_body.severityMap.Critical.toString().toLowerCase();
str = str + '\ case ' + "'" + critical + "'" + ' : \n return "1";\n';
}
if (event_body.severityMap.Major != null && event_body.severityMap.Major != '') {
var major = event_body.severityMap.Major.toString().toLowerCase();
str = str + '\ case ' + "'" + major + "'" + ' : \n return "2";\n';
}
if (event_body.severityMap.Minor != null && event_body.severityMap.Minor != '') {
var minor = event_body.severityMap.Minor.toString().toLowerCase();
str = str + '\ case ' + "'" + minor + "'" + ' : \n return "3";\n';
}
if (event_body.severityMap.Warning != null && event_body.severityMap.Warning != '') {
var warning = event_body.severityMap.Warning.toString().toLowerCase();
str = str + '\ case ' + "'" + warning + "'" + ' : \n return "4";\n';
}
if (event_body.severityMap.Info != null && event_body.severityMap.Info != '') {
var info = event_body.severityMap.Info.toString().toLowerCase();
str = str + '\ case ' + "'" + info + "'" + ' : \n return "5";\n';
}
if (event_body.severityMap.Clear != null && event_body.severityMap.Clear != '') {
var clear = event_body.severityMap.Clear.toString().toLowerCase();
str = str + '\ case ' + "'" + clear + "'" + ' : \n return "0";\n';
}
str = str + "\n } \n\n }";
str = str + "\ function setTimeZone(eventTime, time_zone) {\n\
var gdt = new GlideDateTime(eventTime);\n\
var temp = time_zone.trim();\n\
var length = temp.length;\n\
var opt = temp.substring(3, 4);\n\
var time = temp.substring(4, length);\n\
var array = time.split(':');\n\
var p = array[0] ? array[0] : 0;\n\
var q = array[1] ? array[1] : 0;\n\
var millisec = p * 60 * 60 * 1000 + q * 60 * 1000;\n\
if (opt == '-') {\n\
gdt.subtract(-millisec);\n\
} else {\n\
gdt.subtract(millisec);\n\
}\n\
return gdt;\n\
}\n";
if (complex_payload_flag) {
str = str + " function createErrorCustomEvent(attrs, e){\n\
gs.error('Error is occurring while setting ' + attrs + ' field of servicenow event with exception: ' + e + ', hence aborting the action!!');\n\
var error_event = new GlideRecord('em_event');\n\
error_event.initialize();\n\
error_event.source = 'Self Health Event - ' + source_label;\n\
var _event_class = (typeof event_class !== 'undefined' && event_class) ? event_class : source_label;\n\
error_event.event_class = _event_class;\n\
error_event.message_key = 'self_health_event_' + source_label + '_' + _event_class;\n\
error_event.severity = '1';\n\
error_event.description = ' Event cant be created for source: ' + source_label + ' due to exception : ' + e;\n\
return error_event;\n\
}\n";
}
return str;
},
createMessageKeyScript: function(message_key) {
var result_msg_key = "// Setting Message-key field \n\
var eventMessageKey = '';\n";
var msg_key_length = message_key.length;
var listEventPayload = false;
var prefix = '';
var sending_prefix = '';
var suffix = '';
var format = /\[(\d|[0-9]+)\]/g;
// first check if value has array list or not eg alert.agent[0] using format reg
for (var i = 0; i < msg_key_length; i++) {
var _msg_key_item = message_key[i]; // alert.agent.0.agentName"]
var _target = _msg_key_item; // it will be used later
if (_msg_key_item.match(format)) {
listEventPayload = true;
_msg_key_item = _msg_key_item.replace(format, '[i]');
var itemArray = _msg_key_item.split('[i]');
prefix = itemArray[0];
var prefix1 = prefix + '[i]';
// suffix = itemArray[1];
suffix = _target.substring(prefix1.toString().length, _target.toString().length);
break;
}
}
if (listEventPayload) {
result_msg_key = result_msg_key + " try{";
}
for (var i = 0; i < msg_key_length; i++) {
var msg_key_item = message_key[i];
if (listEventPayload && msg_key_item.contains(prefix)) {
msg_key_item = msg_key_item.replace(format, '[i]');
var target = msg_key_item;
var item_Array = msg_key_item.split('[i]');
sending_prefix = item_Array[0];
var prefix2 = sending_prefix + '[i]'; // alert.agent[i]
suffix = target.substring(prefix2.toString().length, target.toString().length);
msg_key_item = prefix2 + suffix;
}
result_msg_key = result_msg_key + " \n if( typeof requestBody." + msg_key_item + " !== 'undefined' && requestBody." + msg_key_item + ") {\n\
if(eventMessageKey != '')\n\
eventMessageKey = eventMessageKey + '-';\n\
eventMessageKey = eventMessageKey + requestBody." + msg_key_item + ";\n\
}\n";
}
result_msg_key = result_msg_key + " event.message_key = eventMessageKey;\n\n";
if (listEventPayload) {
result_msg_key = result_msg_key + " }catch(e){ \n\
err_event = createErrorCustomEvent('message_key', e);\n\
responseBody.eventSysIds.push(err_event.insert());\n\
status = 500;\n\
return e;\n\
}\n";
}
return [listEventPayload, sending_prefix, result_msg_key];
},
createNodeScript: function(node, prefix, format, complex_payload_flag) {
var result_node = "// Setting Node field \n\
var eventNode = '';\n";
var node_length = node.length;
if (complex_payload_flag) {
result_node = result_node + " try{";
}
for (var i = 0; i < node_length; i++) {
var node_item = node[i];
if (complex_payload_flag && node_item.contains(prefix)) {
node_item = node_item.replace(format, '[i]');
var target = node_item;
var itemArray = node_item.split('[i]');
var pre = itemArray[0];
pre = pre + '[i]';
var suffix = target.substring(pre.toString().length, target.toString().length);
node_item = pre + suffix;
}
result_node = result_node + " \n if( typeof requestBody." + node_item + " !== 'undefined' && requestBody." + node_item + ") {\n\
if(eventNode != '')\n\
eventNode = eventNode + '-';\n\
eventNode = eventNode + requestBody." + node_item + ";\n\
}\n";
}
result_node = result_node + " event.node = eventNode;\n\n";
if (complex_payload_flag) {
result_node = result_node + " }catch(e){ \n\
err_event = createErrorCustomEvent('node', e);\n\
responseBody.eventSysIds.push(err_event.insert());\n\
status = 500;\n\
return e;\n\
}\n";
}
return result_node;
},
createResourceScript: function(resource, prefix, format, complex_payload_flag) {
var result_resource = "// Setting Resource field \n\
var eventResource = '';\n";
if (complex_payload_flag) {
result_resource = result_resource + " try{";
}
var resource_length = resource.length;
for (var i = 0; i < resource_length; i++) {
var resource_item = resource[i];
if (complex_payload_flag && resource_item.contains(prefix)) {
resource_item = resource_item.replace(format, '[i]');
var target = resource_item;
var itemArray = resource_item.split('[i]');
var pre = itemArray[0];
pre = pre + '[i]';
var suffix = target.substring(pre.toString().length, target.toString().length);
resource_item = pre + suffix;
}
result_resource = result_resource + " \n if( typeof requestBody." + resource_item + " !== 'undefined' && requestBody." + resource_item + ") {\n\
if(eventResource != '')\n\
eventResource = eventResource + '-';\n\
eventResource = eventResource + requestBody." + resource_item + ";\n\
}\n";
}
result_resource = result_resource + " event.resource = eventResource;\n\n";
if (complex_payload_flag) {
result_resource = result_resource + " }catch(e){ \n\
err_event = createErrorCustomEvent('resource', e);\n\
responseBody.eventSysIds.push(err_event.insert());\n\
status = 500;\n\
return e;\n\
}\n";
}
return result_resource;
},
createDescriptionScript: function(customDescription, prefix, format, complex_payload_flag) {
var res_desc = "// Setting Description field \n\
var eventDescription = '';\n";
if (complex_payload_flag) {
res_desc = res_desc + " try{";
}
var custom_desc_length = customDescription.length;
for (var i = 0; i < custom_desc_length; i++) {
var cus_desc_item = customDescription[i];
if (complex_payload_flag && cus_desc_item.contains(prefix)) {
cus_desc_item = cus_desc_item.replace(format, '[i]');
var target = cus_desc_item;
var itemArray = cus_desc_item.split('[i]');
var pre = itemArray[0];
pre = pre + '[i]';
var suffix = target.substring(pre.toString().length, target.toString().length);
cus_desc_item = pre + suffix;
}
res_desc = res_desc + " \n if( typeof requestBody." + cus_desc_item + " !== 'undefined' && requestBody." + cus_desc_item + ") {\n\
if(eventDescription != '')\n\
eventDescription = eventDescription + ',';\n\
eventDescription = eventDescription + requestBody." + cus_desc_item + ";\n\
}\n";
}
res_desc = res_desc + " event.description = eventDescription;\n\n";
if (complex_payload_flag) {
res_desc = res_desc + " }catch(e){ \n\
err_event = createErrorCustomEvent('description', e);\n\
responseBody.eventSysIds.push(err_event.insert());\n\
status = 500;\n\
return e;\n\
}\n";
}
return res_desc;
},
createTypeScript: function(customType, prefix, format, complex_payload_flag) {
var res_type = "// Setting Type field \n\
var eventType = '';\n";
if (complex_payload_flag) {
res_type = res_type + " try{";
}
var custom_type_length = customType.length;
for (var i = 0; i < custom_type_length; i++) {
var cus_type_item = customType[i];
if (complex_payload_flag && cus_type_item.contains(prefix)) {
cus_type_item = cus_type_item.replace(format, '[i]');
var target = cus_type_item;
var itemArray = cus_type_item.split('[i]');
var pre = itemArray[0];
pre = pre + '[i]';
var suffix = target.substring(pre.toString().length, target.toString().length);
cus_type_item = pre + suffix;
}
res_type = res_type + " \n if( typeof requestBody." + cus_type_item + " !== 'undefined' && requestBody." + cus_type_item + ") {\n\
if(eventType != '')\n\
eventType = eventType + '-';\n\
eventType = eventType + requestBody." + cus_type_item + ";\n\
}\n";
}
res_type = res_type + " event.type = eventType;\n\n";
if (complex_payload_flag) {
res_type = res_type + " }catch(e){ \n\
err_event = createErrorCustomEvent('type', e);\n\
responseBody.eventSysIds.push(err_event.insert());\n\
status = 500;\n\
return e;\n\
}\n";
}
return res_type;
},
createMetricScript: function(metric_name, prefix, format, complex_payload_flag) {
var result_metric_name = "// Setting Metric field \n\
var eventMetric = '';\n";
if (complex_payload_flag) {
result_metric_name = result_metric_name + " try{";
}
var metric_name_length = metric_name.length;
for (var i = 0; i < metric_name_length; i++) {
var metric_name_item = metric_name[i];
if (complex_payload_flag && metric_name_item.contains(prefix)) {
metric_name_item = metric_name_item.replace(format, '[i]');
var target = metric_name_item;
var itemArray = metric_name_item.split('[i]');
var pre = itemArray[0];
pre = pre + '[i]';
var suffix = target.substring(pre.toString().length, target.toString().length);
metric_name_item = pre + suffix;
}
result_metric_name = result_metric_name + " \n if( typeof requestBody." + metric_name_item + " !== 'undefined' && requestBody." + metric_name_item + ") {\n\
if(eventMetric != '')\n\
eventMetric = eventMetric + '-';\n\
eventMetric = eventMetric + requestBody." + metric_name_item + ";\n\
}\n";
}
result_metric_name = result_metric_name + " event.metric_name = eventMetric;\n\n";
if (complex_payload_flag) {
result_metric_name = result_metric_name + " }catch(e){ \n\
err_event = createErrorCustomEvent('metric_name', e);\n\
responseBody.eventSysIds.push(err_event.insert());\n\
status = 500;\n\
return e;\n\
}\n";
}
return result_metric_name;
},
createAdditionalInfoScript: function(additionalInfo, prefix, format, complex_payload_flag) {
var result_additional_info = ' var additional_info={};\n';
var additional_info_str = '';
if(complex_payload_flag){
result_additional_info = result_additional_info + " try{";
}
var additional_info_length = additionalInfo.length;
for (var i = 0; i < additional_info_length; i++) {
var additional_info_length_item = additionalInfo[i];
if (complex_payload_flag && additional_info_length_item.contains(prefix)) {
additional_info_length_item = additional_info_length_item.replace(format, '[i]');
var target = additional_info_length_item;
var item_array = additional_info_length_item.split('[i]');
var _prefix = item_array[0];
var pre = _prefix;
_prefix = _prefix + '[i]';
var suffix = target.substring(_prefix.toString().length, target.toString().length);
additional_info_length_item = pre + '[' + i.toString() + ']' + suffix;
}
additional_info_str = additional_info_str + " additional_info['" + additional_info_length_item + "']= requestBody." + additional_info_length_item + " ;\n ";
}
result_additional_info = result_additional_info + additional_info_str;
if (complex_payload_flag) {
result_additional_info = result_additional_info + " }catch(e){ \n\
err_event = createErrorCustomEvent('additonal_info', e);\n\
responseBody.eventSysIds.push(err_event.insert());\n\
status = 500;\n\
return e;\n\
}\n";
}
return result_additional_info;
},
createSeverityScript: function(eventSeverity, prefix, format, complex_payload_flag) {
var res_sev = '';
var sev_str = '';
if (complex_payload_flag) {
res_sev = res_sev + " try{";
}
if (complex_payload_flag && eventSeverity.contains(prefix)) {
var target = eventSeverity;
eventSeverity = eventSeverity.replace(format, '[i]');
var itemArray = eventSeverity.split('[i]');
var pre = itemArray[0];
pre = pre + '[i]';
var suffix = target.substring(pre.toString().length, target.toString().length);
eventSeverity = pre + suffix;
}
sev_str = sev_str + 'requestBody.' + eventSeverity;
res_sev = res_sev + "\ var event_severity = " + sev_str + ";\n\
var severity = severityMapping(event_severity);\n\
if(severity == '0'){\n\
event.resolution_state = 'Closing';\n\
}else{\n\
event.resolution_state = 'New';\n\
}\n\
event.severity = severity;\n\n";
if (complex_payload_flag) {
res_sev = res_sev + " }catch(e){ \n\
err_event = createErrorCustomEvent('severity', e);\n\
responseBody.eventSysIds.push(err_event.insert());\n\
status = 500;\n\
return e;\n\
}\n";
}
return res_sev;
},
timeformat1: function(alert_creation_time, time_zone) {
var result = '';
var alertTime = alert_creation_time;
result = result + '\ var firedDateTime = requestBody.' + alertTime + ';\n\
//"timestamp": "2021-08-19T10:39:00Z"\n\
var time_of_event = new GlideDateTime(firedDateTime.substr(0, firedDateTime.indexOf("Z")).replace("T", " "));\n\
time_of_event = setTimeZone(time_of_event,' + "'" + time_zone + "'" + ');\n\
event.time_of_event = time_of_event;\n\n';
return result;
},
timeformat2: function(alert_creation_time, time_zone) {
var result = '';
var alertTime = alert_creation_time;
result = result + '\ var time_of_event = requestBody.' + alertTime + ';\n\
time_of_event = setTimeZone(time_of_event,' + "'" + time_zone + "'" + ');\n\
event.time_of_event = new GlideDateTime(time_of_event);\n\n';
return result;
},
timeformat3: function(alert_creation_time, time_zone) {
var result = '';
var alertTime = alert_creation_time;
result = result + '\ var time_of_event = requestBody.' + alertTime + ';\n\
time_of_event = timeOfEvent.replace("Z", "+0000");\n\
time_of_event = timeOfEvent.replace("T", " ");\n\
time_of_event = setTimeZone(time_of_event,' + "'" + time_zone + "'" + ');\n\
event.time_of_event = new GlideDateTime(time_of_event);\n\n';
return result;
},
timeformat4: function(alert_creation_time, time_zone) {
var result = '';
var alertTime = alert_creation_time;
result = result + '\ var timeOfEvent = requestBody.' + alertTime + ';\n\
var time_of_event = new GlideDateTime(timeOfEvent.substr(0, timeOfEvent.indexOf(".")).replace("T", " "));\n\
time_of_event = setTimeZone(time_of_event,' + "'" + time_zone + "'" + ');\n\
event.time_of_event = new GlideDateTime(extractTimeOfEvent);\n\n';
return result;
},
timeformat5: function(alert_creation_time, time_zone) {
var result = '';
var alertTime = alert_creation_time;
result = result + '\ var timeOfEvent = requestBody.' + alertTime + ';\n\
var currentTimeOfEvent = new GlideDateTime();\n\
if (timeOfEvent && typeof timeOfEvent == "number") {\n\
if(timeOfEvent.toString().length == 10){\n\
currentTimeOfEvent.setNumericValue(parseInt(timeOfEvent) * 1000);\n\
}else if(timeOfEvent.toString().length > 10){\n\
currentTimeOfEvent.setNumericValue(parseInt(timeOfEvent));\n\
}\n\
}else if(timeOfEvent && typeof timeOfEvent == "string"){\n\
if(timeOfEvent.length == 10){\n\
currentTimeOfEvent.setNumericValue(parseInt(timeOfEvent) * 1000);\n\
}else if(timeOfEvent.length > 10){\n\
currentTimeOfEvent.setNumericValue(parseInt(timeOfEvent));\n\
}\n\
}\n\
event.time_of_event = currentTimeOfEvent;\n\n';
return result;
},
type: 'CustomConnectorMappingUtils'
};
Sys ID
01b089a847c6e1d02328cc48946d435e