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

Offical Documentation

Official Docs: