Name

sn_pipeline.ValidateEnvironment

Description

A script to be called by the client to validate pipeline environments.

Script

var ValidateEnvironment = Class.create();
ValidateEnvironment.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

  getConstants: function() {
  	gs.debug('Getting constants');
      var constants = {
          ajaxConstants: PipelineConstants.ajaxParameters.environmentValidation,
          inputConstants: PipelineConstants.flow.environmentValidation.input,
          outputConstants: PipelineConstants.flow.environmentValidation.output,
          actions: PipelineConstants.flow.environmentValidation.actions,
  		fields: PipelineConstants.formFields
      };
      gs.debug('Returning constants ' + JSON.stringify(constants));
      return JSON.stringify(constants);
  },
  validate: function() {
      try {
          var ajaxConstants = PipelineConstants.ajaxParameters.environmentValidation;
          var inputConstants = PipelineConstants.flow.environmentValidation.input;
          var outputConstants = PipelineConstants.flow.environmentValidation.output;
          var actions = PipelineConstants.flow.environmentValidation.actions;

          gs.info('Validating...');
  		var grEnvironment = new GlideRecord(PipelineConstants.table.ENVIRONMENT_TABLE);
  		grEnvironment.get(this.getParameter(ajaxConstants.ENVIRONMENT_SYS_ID));
  		
  		if (!grEnvironment.canRead()) {
  			return JSON.stringify({
  				error_message: gs.getMessage("User does not have read access to this environment record"),
  				error_code: 1
  			});
  		}
  		
          var isController = this.getParameter(ajaxConstants.IS_CONTROLLER) === 'true';
          var inputs = {};
          inputs[inputConstants.URL] = this.getParameter(ajaxConstants.URL);
  		
  		if (this.getParameter(ajaxConstants.CREDENTIAL)) {
  			var grAlias = new GlideRecordSecure('sys_alias');
  			if (grAlias.get(this.getParameter(ajaxConstants.CREDENTIAL))) {
  				inputs[inputConstants.CREDENTIAL] = grAlias;
  			} else {
  				return JSON.stringify({
  					error_message: gs.getMessage("User does not have read access to the environment's credential record"),
  					error_code: 1
  				});
  			}
  		} else {
  			inputs[inputConstants.CREDENTIAL] = grEnvironment.instance_credential.getRefRecord();
  		}
          
          if (isController) {
              inputs[inputConstants.SOURCE_INSTANCE_ID] = gs.getProperty('instance_id');
              if (this.getParameter(ajaxConstants.PIPELINE_TYPE_NAME))
                  inputs[inputConstants.PIPELINE_TYPE_NAME] = this.getParameter(ajaxConstants.PIPELINE_TYPE_NAME);
          }
  		var action = isController ? actions.CONTROLLER : actions.CONNECTION;
          gs.info('Running ' + action + ' with inputs: ' + JSON.stringify(inputs));
          var result = sn_fd.FlowAPI.getRunner()
              .action(action)
              .inForeground()
              .withInputs(inputs)
              .run();
          var outputs = result.getOutputs();
          gs.info('Results from '+ action +': ' + JSON.stringify(outputs));
          return JSON.stringify(outputs);
      } catch (ex) {
          gs.error(ex.getMessage());
          var message = gs.getMessage('Please check URL and credentials.');
          return JSON.stringify({
              error_message: message,
              error_code: 1
          });
      }
  },
  type: 'ValidateEnvironment'
});

Sys ID

dbae08189bde30100290af417ef04b83

Offical Documentation

Official Docs: