Name
sn_itom_integ_app.customConnectorHandler
Description
No description available
Script
var customConnectorHandler = Class.create();
customConnectorHandler.prototype = {
initialize: function() {
this.apiHandler = new sn_em_connector.CustomConnectorUtil();
this.imagesHandler = global.integrationsLaunchpadImageHandler && new global.integrationsLaunchpadImageHandler();
this.mappingHandler = new sn_em_connector.CustomConnectorMappingUtils();
this.severityConst = 'severity_for_all_events/';
this.defaultImageSysIdConst = '2cf1592a532121109472ddeeff7b12a2';
},
createImage: function(){
return this.imagesHandler
? this.imagesHandler.createImage()
: {success: false, error: {message: gs.getMessages('Something went wrong, check for valid imageHandler')}};
},
updateImage: function(image, record_sys_id){
return this.imagesHandler
? this.imagesHandler.updateImage(image, record_sys_id)
: {success: false, error: {message: gs.getMessages('Something went wrong, check for valid imageHandler')}};
},
updateConnectorImage: function(connector_sys_id, image_sys_id){
if (!connector_sys_id)
return {success: false, error: {message: gs.getMessages('Connector sys_id cannot be empty')}};
var grInstance = new GlideRecord('sn_em_connector_push_instance');
grInstance.get(connector_sys_id);
if (grInstance.isValidRecord()){
var definition_sys_id = grInstance.getValue('push_connector_definition');
var gr_hobDefinition = new GlideRecord('sn_em_ai_hob_definition_details');
gr_hobDefinition.get('reference_id', definition_sys_id);
if (gr_hobDefinition.isValidRecord()){
gr_hobDefinition.setValue('image', image_sys_id || this.defaultImageSysIdConst);
gr_hobDefinition.update();
return {success: true};
}
return {success: false, error: {message: gs.getMessages('Cannot find definition sys_id')}};
}
return {success: false, error: {message: gs.getMessages('Cannot find connector sys_id')}};
},
shouldSaveMapping: function(step, mappingData){
if (step > 1) return true;
if (mappingData
&& mappingData.definitionSysId
&& mappingData.severityMap
&& (mappingData.jsonPayload
|| Object.keys(mappingData.jsonMapping).length
|| Object.keys(mappingData.timeOfEventMap).length
|| Object.keys(mappingData.severityMap).some(function(key){return mappingData.severityMap[key];})))
return true;
return false;
},
saveConnector: function(connectorValues, shouldActivateConnector, mappingData, step){
var sysId = connectorValues.sysId;
var retData = {};
connectorValues.event_source_label = connectorValues.source;
connectorValues.type = connectorValues.type || '10';
if (connectorValues.type == '11' && !connectorValues.mid_server)
return {success: false, error: {message: gs.getMessage('Mid Server not selected')}};
connectorValues.image_sys_id = connectorValues.image_sys_id == '-1'
? this.defaultImageSysIdConst
: connectorValues.image_sys_id;
var grInstance = new GlideRecord('sn_em_connector_push_instance');
if(grInstance.get('name', connectorValues.name)){
if (!sysId || sysId != grInstance.sys_id){
return {success: false, error: {message: gs.getMessage('Instance name is already exist')}};
}
}
var grDefinition = new GlideRecord('sn_em_connector_listener');
if (sysId){
grInstance.get(sysId);
if (grInstance.isValidRecord()){
var definition_sysId = grInstance.getValue('push_connector_definition');
if(grDefinition.get('event_source_label', connectorValues.event_source_label)){
if (definition_sysId != grDefinition.sys_id){
return {success: false, error: {message: gs.getMessage('Definition name is already exist')}};
}
}
}
connectorValues.sys_id = sysId;
this.apiHandler.updateInstanceAndDefinitionFields(connectorValues);
retData = {connector_sys_id: sysId};
} else {
if(grDefinition.get('event_source_label', connectorValues.event_source_label)){
return {success: false, error: {message: gs.getMessage('Source name is already exist')}};
}
var responseData = this.apiHandler.createDefinitionAndInstance(connectorValues);
retData = {sys_id: responseData[0], connector_sys_id: responseData[1], url: responseData[2]};
}
if (this.shouldSaveMapping(step, mappingData)){
retData.mappingData = this.mapData(mappingData);
if (!retData.mappingData.success)
return {success: false, error: retData.mappingData.error};
}
if (shouldActivateConnector)
this.activateConnector(retData.connector_sys_id);
return {success: true, data: retData};
},
mapData: function(mappingData){
if (!mappingData.jsonPayload){
return {success: false, error: {message: 'Cannot save mapping - missing json payload'}};
}
if (!mappingData.jsonMapping){
return {success: false, error: {message: 'Cannot save mapping - missing json mapping'}};
}
if (!mappingData.jsonMapping.severity){
return {success: false, error: {message: 'Cannot save mapping - missing severity value'}};
}
var jsonMapping = mappingData.jsonMapping;
jsonMapping.severityMap = mappingData.severityMap || {};
jsonMapping.severityMap.isConstSeverity = jsonMapping.severityMap.isConstSeverity || false;
jsonMapping.timeOfEventMap = mappingData.timeOfEventMap;
if (jsonMapping.severity.startsWith(this.severityConst)){
jsonMapping.severity = jsonMapping.severity.split(this.severityConst).filter(Boolean)[0];
jsonMapping.severityMap.isConstSeverity = true;
}
var nonEmptySeverityMapKeys = Object.keys(jsonMapping.severityMap).filter(function(key){return jsonMapping.severityMap[key];});
if (!nonEmptySeverityMapKeys.length){
return {success: false, error: {message: 'Cannot save mapping - at least one severity value is required'}};
}
jsonMapping = JSON.stringify(jsonMapping);
var retData = this.mappingHandler.createAndUpdateMappingRecord(mappingData.definitionSysId, mappingData.jsonPayload, jsonMapping);
return {success: true, data: retData};
},
activateConnector: function(sysId){
var grInstance = new GlideRecord('sn_em_connector_push_instance');
grInstance.get(sysId);
if (grInstance.isValidRecord()){
var definition_sys_id = grInstance.getValue('push_connector_definition');
var grMapping = new GlideRecord('sn_em_connector_custom_field_mapping');
grMapping.get('push_connector_definition', definition_sys_id);
if (grMapping.isValidRecord()){
this.apiHandler.activateInstanceAndDefinition(sysId);
return {success: true};
}
}
return {success: false, error: {message: 'Cannot activate connector - make sure mapping step was complete'}};
},
deactivateConnector: function(sysId){
this.apiHandler.deactivateInstanceAndDefinition(sysId);
return {success: true};
},
deleteConnector: function(sysId){
this.apiHandler.deleteInstanceAndDefinition(sysId);
return {success: true};
},
type: 'customConnectorHandler'
};
Sys ID
ad37b72777822110feb4c84e2c5a996f