Name
sn_itom_integ_app.pushConnectorHandler
Description
No description available
Script
var pushConnectorHandler = Class.create();
pushConnectorHandler.prototype = {
initialize: function() {
},
saveConnectorInstance: function(connectorValues, connectorDynamicValues, shouldActivate){
if (!connectorValues)
return {success: false, error: {message: gs.getMessage('Instance data is empty')}};
var dataValidation = this.validateConnectorData(connectorValues, connectorDynamicValues);
if (!dataValidation.isValid){
return {success: false, error: {message: dataValidation.errorMessage, errorsArr: dataValidation.errorsArr}};
}
var grConnectorInstance = new GlideRecord('sn_em_connector_push_instance');
if(grConnectorInstance.get('name', connectorValues.name)){
if (!connectorValues.sysId || connectorValues.sysId != grConnectorInstance.sys_id){
return {success: false, error: {message: gs.getMessage('Instance name is already exist')}};
}
}
var result = connectorValues.sysId
? this.updateConnectorInstance(grConnectorInstance, connectorValues, shouldActivate)
: this.createConnectorInstance(grConnectorInstance, connectorValues, shouldActivate);
if (!result.success)
return result;
if(grConnectorInstance.get(result.data.sys_id)){
var instanceDetailsHandler = new connectorInstanceDetailsHandler();
instanceDetailsHandler.updateInstanceDetails(result.data.sys_id, connectorValues);
result.data.url = grConnectorInstance.url;
result.data.connectorDynamicValues = this.updateConnectorInstanceValues(connectorDynamicValues, result.data.sys_id);
}
return result;
},
updateConnectorInstance: function(gr, connectorValues, shouldActivate){
if(!gr.get(connectorValues.sysId)){
return {success: false, error: {message: gs.getMessage('cannot find sysId of updated instance')}};
}
delete connectorValues.sysId;
delete connectorValues.sys_id;
Object.keys(connectorValues).forEach(function(connectorValue){gr[connectorValue] = connectorValues[connectorValue];});
var activationAvailablity = this.checkActivationAvailablity(gr);
if (shouldActivate && activationAvailablity.available) {
gr.active = true;
}
var sysId = gr.update();
return sysId
? !shouldActivate || activationAvailablity.available
? {success: true, data: {sys_id: sysId}}
: {success: false, error: {message: activationAvailablity.message}}
: {success: false, error: {message: gs.getMessage('Update failed')}};
},
createConnectorInstance: function(gr, connectorValues, shouldActivate) {
gr.newRecord();
Object.keys(connectorValues).forEach(function(connectorValue){gr[connectorValue] = connectorValues[connectorValue];});
var activationAvailablity = this.checkActivationAvailablity(gr);
if (shouldActivate && activationAvailablity.available) {
gr.active = true;
}
var sysId = gr.insert();
return sysId
? !shouldActivate || activationAvailablity.available
? {success: true, data: {sys_id: sysId}}
: {success: false, error: {message: activationAvailablity.message}}
: {success: false, error: {message: gs.getMessage('Insert failed')}};
},
updateConnectorInstanceValues: function(connectorDynamicValues, sysId){
var updatedValues = [];
connectorDynamicValues && Object.keys(connectorDynamicValues || {}).forEach(function(connectorDynamicValue){
var gr = new GlideRecord('sn_em_connector_push_instance_config_param');
gr.addQuery('push_connector_instance', sysId);
gr.addQuery('name', connectorDynamicValue);
gr.query();
if (gr.next()){
gr.value = connectorDynamicValues[connectorDynamicValue];
updatedValues.push(gr.update());
}
});
return updatedValues;
},
activateConnector: function(sysId){
var gr = new GlideRecord('sn_em_connector_push_instance');
if (sysId && gr.get(sysId)){
var activationAvailablity = this.checkActivationAvailablity(gr);
if (activationAvailablity.available){
gr.active = true;
var updateSuccess = gr.update();
return updateSuccess
? {success: true, data: {sys_id: sysId}}
: {success: false, error: {message: gs.getMessage('Activation failed')}};
}
return {success: false, error: {message: activationAvailablity.message}};
}
return {success: false, error: {message: gs.getMessage('sys_id not found')}};
},
deactivateConnector: function(sysId){
var gr = new GlideRecord('sn_em_connector_push_instance');
if (sysId && gr.get(sysId)){
gr.active = false;
var updateSuccess = gr.update();
return updateSuccess
? {success: true, data: {sys_id: sysId}}
: {success: false, error: {message: gs.getMessage('Deactivation failed')}};
}
return {success: false, error: {message: gs.getMessage('sys_id not found')}};
},
deleteConnector: function(sysId){
var gr = new GlideRecord('sn_em_connector_push_instance');
if (sysId && gr.get(sysId)){
var deleteSuccess = gr.deleteRecord();
return deleteSuccess
? {success: true}
: {success: false, error: {message: gs.getMessage('Delete failed')}};
}
return {success: false, error: {message: gs.getMessage('sys_id not found')}};
},
validateConnectorData: function(connectorValues, connectorDynamicValues){
var formValidatorFields = ['name', 'push_connector_definition'];
var errorsList = [];
formValidatorFields.forEach(function(field){
if (!connectorValues[field] || !connectorValues[field].trim().length) {
errorsList.push({fieldName: field, errorMessage: 'field cannot be empty'});
}
});
if (connectorValues.type == '5' && !connectorValues.mid_server)
errorsList.push({fieldName: 'mid_server', errorMessage: 'field cannot be empty'});
var errorMessage = '';
errorsList.forEach(function(error){
errorMessage += errorMessage.length ? ', ' : '';
errorMessage += error.fieldName + ' - ' + error.errorMessage;
});
return {isValid: !errorsList.length, errorsArr: errorsList, errorMessage: errorMessage};
},
checkActivationAvailablity: function(gr_instance){
var gr_definition = new GlideRecord('sn_em_connector_listener');
if (gr_instance.push_connector_definition && gr_definition.get(gr_instance.push_connector_definition)){
return gr_definition.active
? {available: true}
: {available: false, message: gs.getMessage('Activation failed - definition is inactive')};
}
return {available: false, message: gs.getMessage('Cannot find definition sys_id')};
},
type: 'pushConnectorHandler'
};
Sys ID
aaa612a677642110feb4c84e2c5a99ac