Name

sn_em_connector.PushConnectorConfigurations

Description

Fetches configurations of the push connector and applies them on the event.

Script

var PushConnectorConfigurations = Class.create();
PushConnectorConfigurations.prototype = {
  initialize: function() {},

  applyConfigurations: function(event, sys_id, connector_sys_id) {
      var table;
      var queryparam;
      var sysid;
      var fieldname = 'field_name';
      var value1 = 'value';
      var connector_sys_id = connector_sys_id;
      if (connector_sys_id != null && connector_sys_id != '') {
          table = 'sn_em_connector_push_instance_config_param';
          queryparam = 'push_connector_instance';
          sysid = connector_sys_id;
          fieldname = 'name';
          value1 = 'value';
      } else {
          table = 'sn_em_connector_push_config';
          queryparam = 'push_connector';
          sysid = sys_id;
      }

      ////// Change the logic please here connector instance will come in to the picture
      var gr = new GlideRecord(table);
      gr.addActiveQuery();
      gr.addQuery(queryparam, sysid);
      gr.query();

      // pass the instance name as flag while receiving the payload using the new api and then send it to connector def and here we will check if that flag is not empty, if it is not empty then use other flow
      while (gr.next()) {

          var field = gr.getValue(fieldname);
          var value = gr.getValue(value1);

          if (field == 'severity') {

              if (event['resolution_state'] != 'Closing') {
                  if (event['source'] == 'ThousandEyes') {
                      if (!event['severity']) {
                          event[field] = value;
                      }
                  } else {
                      event[field] = value;
                  }
              }

          } else if (field == 'time_zone' && event['source'] == 'ThousandEyes') {

              // set time zone
              var type = event['type'];
              if (!type.includes(" - AGENT_") && !type.includes("WEBHOOK_TEST")) {

                  var eventTime = event['time_of_event'];
                  var gdt = new GlideDateTime(eventTime);
                  var temp = value.trim();
                  var length = temp.length;
                  var opt = temp.substring(3, 4);
                  var time = temp.substring(4, length);
                  var array = time.split(":");

                  var p = array[0] ? array[0] : 0;
                  var q = array[1] ? array[1] : 0;

                  var millisec = p * 60 * 60 * 1000 + q * 60 * 1000;
                  if (opt == '-') {
                      gdt.subtract(-millisec);
                  } else {
                      gdt.subtract(millisec);
                  }
                  event.time_of_event = gdt;
              }

          } else {
              event[field] = value;
          }
      }


      return event;
  },

  /**
  * @param {*} sys_id - sys_id of the push connector
  * @param {*} connector_sys_id - sys_id of push connector instance
  * @param {*} configParameterName - Push connector parameter name
  *
  */
  getConfigurationValue: function(sys_id, connector_sys_id, configParameterName) {
  	var configValue = '';

  	var CONNECTOR_CONFIG_CACHE_NAME = 'sn_itom_em_push_connector_param_cache';
  	var CONNECTOR_CONFIG_TABLE_NAME = 'sn_em_connector_push_config';

  	var CONNECTOR_INSTANCE_CONFIG_CACHE_NAME = 'sn_itom_em_push_connector_instance_param_cache';
  	var CONNECTOR_INSTANCE_CONFIG_TABLE_NAME = 'sn_em_connector_push_instance_config_param';

  	var pushConfigTableName;
  	var connectorConfigCacheName;
  	var glideQueryParam;
  	var sysid;
  	var fieldname = 'field_name';

  	if (connector_sys_id && connector_sys_id !== '') {
  		// Push connector instance configuration
  		pushConfigTableName = CONNECTOR_INSTANCE_CONFIG_TABLE_NAME;
  		connectorConfigCacheName = CONNECTOR_INSTANCE_CONFIG_CACHE_NAME;
  		sysid = connector_sys_id;
  		glideQueryParam = 'push_connector_instance';
  		fieldname = 'name';
  	} else {
  		// Push connector configuration
  		pushConfigTableName = CONNECTOR_CONFIG_TABLE_NAME;
  		connectorConfigCacheName = CONNECTOR_CONFIG_CACHE_NAME;
  		sysid = sys_id;
  		glideQueryParam = 'push_connector';
  	}
  	

  	var cachedVal = sn_scoped_cache.ScopedCacheManager.get(connectorConfigCacheName, this._getConfigurationCacheKey(sysid, configParameterName));

  	if (!cachedVal) {
  		var gr = new GlideRecord(pushConfigTableName);
  		gr.addActiveQuery();
  		gr.addQuery(glideQueryParam, sysid);
  		gr.addQuery(fieldname, configParameterName);
  		gr.query();

  		if (gr.next()) {
  			configValue = gr.getValue('value');
  			var configRecordSysId = gr.getValue('sys_id');
  			sn_scoped_cache.ScopedCacheManager.putRow(connectorConfigCacheName, this._getConfigurationCacheKey(sysid, configParameterName), configValue, configRecordSysId, pushConfigTableName);

              // gs.info("PushConnectorConfiguration:: Added in cache :: " + connectorConfigCacheName + " :: " + sysid + "#" + configParameterName + "#" + gs.getUserID() + " - " + configValue);
  		}
  	} else {
  		configValue = cachedVal;
  		
  		// gs.info("PushConnectorConfiguration:: Found in cache :: " + connectorConfigCacheName + " :: " + sysid + "#" + configParameterName + "#" + gs.getUserID() + " - " + configValue);
  	}

  	return configValue;
  },

  /**
   *
   * @param connectorSysId - Push connector SYS ID
   * @param configParameterName - Push connector configuration parameter name
   * @returns  CACHE KEY - composed as follows :
   * CONNECTOR_SYS_ID # CONFIG_PARAMETER_NAME # CURRENT_USER_ID
   */
  _getConfigurationCacheKey : function(connectorSysId, configParameterName) {
  	var SEPARATOR = '#';
  	var currentUserId = gs.getUserID();
  	return "" + connectorSysId + SEPARATOR + configParameterName + SEPARATOR + currentUserId;
  },

  type: 'PushConnectorConfigurations'
};

Sys ID

6d69b9a1eb30301030d6e91338522885

Offical Documentation

Official Docs: