Name
sn_agent.AgentNowCommandAutoGenerator
Description
Generate command from prefix and parameters + validation
Script
var AgentNowCommandAutoGenerator = Class.create();
AgentNowCommandAutoGenerator.prototype = {
initialize: function() {
this.TRUE = '1';
},
generateCommand: function(tableName, commandPrefix, parentTableName, checkSysID) {
var currentCommand = commandPrefix;
var gr = new GlideRecord(tableName);
gr.addQuery(parentTableName, checkSysID);
gr.addQuery('active', 'true');
gr.query();
while (gr.next()) {
var paramName = gr.getValue('name');
// must_sudo is special, so don't add it to the list of arguments
if (paramName == 'must_sudo')
continue;
var flagVal = gr.getValue('flag');
var isValueRequired = gr.getValue('value_required');
var mandatory = gr.getValue('mandatory');
if (isValueRequired == this.TRUE) {
if (mandatory == '0') {
currentCommand += ' {{if .labels.params_' + paramName + '}} ' + flagVal + ' {{.labels.params_' + paramName + '}} {{end}}';
} else {
currentCommand += ' ' + flagVal + ' {{.labels.params_' + paramName + '}}';
}
} else {
currentCommand += ' ' + flagVal;
}
}
return currentCommand;
},
triggerCommandChange: function(checkTableName, checkSysID) {
var checkAgentGr = new GlideRecord(checkTableName);
checkAgentGr.addQuery('sys_id', checkSysID);
checkAgentGr.query();
if (checkAgentGr.next()) {
checkAgentGr.setValue('command', 'tempValue');
checkAgentGr.update();
}
},
validate: function(current) {
var flagVal = current.flag;
var paramName = current.name;
var prefix;
if (current.check_def) {
prefix = current.check_def.command_prefix;
} else if (current.check) {
prefix = current.check.command_prefix;
}
if (prefix && prefix.indexOf(paramName) == -1) {
if (!flagVal && (paramName != 'must_sudo')) {
return gs.getMessage('Missing Flag value for {0} There must be flag (short or long) parameter defined.', paramName);
}
}
if (current.mandatory == '1' && current.active == '0') {
return gs.getMessage('Parameter {0} is mandatory, it cannot be inactive', paramName);
}
if (current.mandatory == '1' && current.active == '1') {
if (current.check && !current.value)
return gs.getMessage('Parameter {0} is mandatory and active, there is need to be value in the value field', paramName);
if (current.check_def && !current.default_value)
return gs.getMessage('Parameter {0} is mandatory and active, there is need to be value in the default value field', paramName);
}
return null;
},
type: 'AgentNowCommandAutoGenerator'
};
Sys ID
3f834a35c7b40010b9a4362c14c260d5