Name
sn_sow.SOWRemedialActionSNC
Description
No description available
Script
var SOWRemedialActionSNC = Class.create();
SOWRemedialActionSNC.prototype = {
initialize: function() {
this.investigateConfig = new SOWInvestigateConfig();
this.remedialAction = new sn_reacf.RemedialActionEngine();
this.setActionDisplayConfig();
},
setActionDisplayConfig: function() {
var remedialActions = this.investigateConfig.ACTION_MAP;
var actionDisplayConfig = {};
actionDisplayConfig[remedialActions['END_PROCESS_SERVER']] = {
'displayName': gs.getMessage('End process'),
'displayField': 'name',
};
actionDisplayConfig[remedialActions['END_PROCESS_DEVICE']] = {
'displayName': gs.getMessage('End process'),
'displayField': 'name',
};
actionDisplayConfig[remedialActions['RESTART_SERVICE_SERVER']] = {
'displayName': gs.getMessage('Restart service'),
'displayField': 'service_name',
};
actionDisplayConfig[remedialActions['RESTART_SERVICE_DEVICE']] = {
'displayName': gs.getMessage('Restart service'),
'displayField': 'service_name',
};
this.actionDisplayConfig = actionDisplayConfig;
},
createExecutionRecords: function(ci, parentTable, parentRecordSysId, remedialAction, actionParameters, selectedData) {
var remediationResult = [];
if (gs.nil(ci) || gs.nil(parentTable) || gs.nil(parentRecordSysId) || gs.nil(remedialAction) || gs.nil(actionParameters) || gs.nil(selectedData)) {
gs.error("one or more mandatory fields are not passed");
return;
}
for (var i = 0; i < selectedData.length; i++) {
var actionParams = {};
for (var j = 0; j < actionParameters.length; j++) {
var actionLabel = actionParameters[j]['label'];
var value = selectedData[i][actionParameters[j]['field']].value;
actionParams[actionLabel] = value;
}
var response = this.remedialAction.beginRemediation(remedialAction, parentTable, parentRecordSysId, actionParams, ci, this.investigateConfig.SERVICE_OPERATIONS_WORKSPACE_ORIGIN_RECORD);
var result = {
'statusCode': response['statusCode'],
'displayValue': this.getActionExecutionDisplayValue(remedialAction, selectedData[i])
};
if (response['statusCode'] == this.remedialAction.STATUS_CODES.DUPLICATE) {
result['parentTable'] = response.parentTable;
var parentGr = new GlideRecord(response.parentTable);
if (parentGr.isValid() && parentGr.get(response.parentRecord)) {
result['parentDisplayValue'] = parentGr.getDisplayValue();
}
result['isParentCurrent'] = response.parentRecord == parentRecordSysId;
}
result['remedialActionUniqueId'] = remedialAction;
remediationResult.push(result);
}
var formattedRemediationResult = this.formatRemediationResult(remediationResult, remedialAction);
return formattedRemediationResult;
},
getActionDisplayConfig: function(remedialAction) {
return this.actionDisplayConfig[remedialAction];
},
getActionExecutionDisplayValue: function(remedialAction, selectedDataRow) {
var config = this.getActionDisplayConfig(remedialAction);
var displayField = config && config['displayField'];
if (displayField && selectedDataRow[displayField]) {
var displayValueObj = selectedDataRow[displayField];
return displayValueObj['displayValue'];
}
},
formatRemediationResult: function(remediationResult, remedialAction) {
if (!remediationResult || remediationResult.length == 0) {
return;
}
var groupedRemediationResult = this.groupRemediationResult(remediationResult);
var config = this.getActionDisplayConfig(remedialAction);
if (!config) {
return;
}
var formattedRemediationResult = {};
if (groupedRemediationResult.hasOwnProperty(this.remedialAction.STATUS_CODES.ERROR)) {
formattedRemediationResult[this.remedialAction.STATUS_CODES.ERROR] = this.getInfoMessage(groupedRemediationResult[this.remedialAction.STATUS_CODES.ERROR]);
}
if (groupedRemediationResult.hasOwnProperty(this.remedialAction.STATUS_CODES.DUPLICATE)) {
formattedRemediationResult[this.remedialAction.STATUS_CODES.DUPLICATE] = this.getInfoMessage(groupedRemediationResult[this.remedialAction.STATUS_CODES.DUPLICATE]);
}
if (groupedRemediationResult.hasOwnProperty(this.remedialAction.STATUS_CODES.SUCCESSFUL)) {
formattedRemediationResult[this.remedialAction.STATUS_CODES.SUCCESSFUL] = this.getInfoMessage(groupedRemediationResult[this.remedialAction.STATUS_CODES.SUCCESSFUL]);
}
return formattedRemediationResult;
},
groupRemediationResult: function(remediationResult) {
var groupedRemediationResult = {};
for (var i = 0; i < remediationResult.length; i++) {
var statusCode = remediationResult[i].statusCode;
if (!groupedRemediationResult.hasOwnProperty(statusCode)) {
groupedRemediationResult[statusCode] = [];
}
groupedRemediationResult[statusCode].push(remediationResult[i]);
}
return groupedRemediationResult;
},
getInfoMessage: function(results) {
if (!results || results.length == 0) {
return;
}
var resultsLength = results.length + "";
var noOfActions = resultsLength.split(".")[0];
var displayConfig = this.getActionDisplayConfig(results[0]['remedialActionUniqueId']);
var actionDisplayName = displayConfig && displayConfig['displayName'];
if (results[0].statusCode == this.remedialAction.STATUS_CODES.SUCCESSFUL) {
if (noOfActions == 1) {
var message = gs.getMessage("{0} for {1} has started. You’ll find a new playbook in the side panel.", [actionDisplayName, results[0].displayValue]);
} else {
message = "<span>";
message = message + gs.getMessage("{0} {1} actions have started. You’ll find new playbooks in the side panel.", [noOfActions, actionDisplayName]);
message = message + "<br>";
for (i = 0; i < noOfActions; i++) {
message = message + "<br>";
message = message + gs.getMessage("{0} for {1} has started.", [actionDisplayName, results[i].displayValue]);
}
message = message + "</span>";
}
} else if (results[0].statusCode == this.remedialAction.STATUS_CODES.DUPLICATE) {
if (noOfActions == 1) {
if (results[0].isParentCurrent) {
message = gs.getMessage("{0} for {1} was not started. That action is already in progress for the same CI in this {2}", [actionDisplayName, results[0].displayValue, results[0].parentTable]);
} else {
message = gs.getMessage("{0} for {1} was not started. That action is already in progress for the same CI in {2}", [actionDisplayName, results[0].displayValue, results[0].parentDisplayValue]);
}
} else {
message = "<span>";
message = message + gs.getMessage("{0} {1} actions were not started. Those actions are already in progress for the same CI.", [noOfActions, actionDisplayName]);
message = message + "<br>";
for (i = 0; i < noOfActions; i++) {
message = message + "<br>";
if (results[i].isParentCurrent) {
message = message + gs.getMessage("{0} for {1} is already in progress in this {2}", [actionDisplayName, results[i].displayValue, results[i].parentTable]);
} else {
message = message + gs.getMessage("{0} for {1} is already in progress in {2}", [actionDisplayName, results[i].displayValue, results[i].parentDisplayValue]);
}
}
message = message + "</span>";
}
} else {
if (noOfActions == 1) {
message = gs.getMessage("{0} for {1} failed. Please contact your System Administrator.", [actionDisplayName, results[0].displayValue]);
} else {
message = "<span>";
message = message + gs.getMessage("{0} {1} actions have failed. Please contact your System Administrator.", [noOfActions, actionDisplayName]);
message = message + "<br>";
for (i = 0; i < noOfActions; i++) {
message = message + "<br>";
message = message + gs.getMessage("{0} for {1} has failed.", [actionDisplayName, results[i].displayValue]);
}
message = message + "</span>";
}
}
return message;
},
type: 'SOWRemedialActionSNC'
};
Sys ID
42b94a2bc31121104f1a722e3f40ddc3