Name

sn_itom_pattern.PayloadExtractor

Description

Allow Scripts to extract context list from payloads. Should return comma seperated list of context data.

Script

var PayloadExtractor = Class.create();

PayloadExtractor.prototype = {
  initialize: function(payload) {
  	if (JSUtil.nil(payload))
  		return;

  	this.payload = payload;
  },

  /*
  returns the comma-sperated sys_ids associated with a given class

  example payload:
     {
       "items" : [ {
         "className" : "cmdb_ci_cloud_service_account",
         "sysId" : "1cc860f67713330099808d1168106145"
       }, {
         "className" : "cmdb_ci_google_datacenter",
         "sysId" : "39d8e0f67713330099808d116810610c"
       }, {
         "className" : "cmdb_ci_google_datacenter",
         "sysId" : "3dd8e0f67713330099808d1168106109"
       }, {
         "className" : "cmdb_ci_google_datacenter",
         "sysId" : "7dd8e0f67713330099808d116810610b"
       } ],
       "relations": [ {
         "className" : "cmdb_ci_lb_pool_member",
         "sysId" : "456ec6b4a455c33ca5479009a1dd861b"
       } ]
     }

  the input:
     extract('cmdb_ci_google_datacenter');
  should return:
     '3dd8e0f67713330099808d1168106109,39d8e0f67713330099808d116810610c,7dd8e0f67713330099808d116810610b'

  */
  extract: function(className) {
  	if (className == null)
  		throw "Must provide a class name to extract from payload";

  	var items = this.payload.items;
  	if (items == null)
  		return "";

  	var contextResult = [];

  	for (var i = 0; i < items.length; i++) {
  		if(items[i].className != className)
  			continue;

  		contextResult.push(items[i].sysId);
  	}

  	contextResult.sort();
  	var result = contextResult.join();

  	return result;
  }
};

Sys ID

e294a8767713330099808d1168106116

Offical Documentation

Official Docs: