Name

sn_itom_pattern.NutanixEventSensor

Description

No description available

Script

var NutanixEventSensor = Class.create();
NutanixEventSensor.prototype = {
  GLIDE_CMP_DEBUG: 'glide.cmp.debug',

  initialize: function() {
  },

  /*
   * this method will return the latest event timestamp
   * @param entriesArr
   */
  getLastTimeStamp : function(entriesArr) {
  	var latestTimestamp;
  	if(entriesArr.length > 0){
  		latestTimestamp = entriesArr[entriesArr.length-1].complete_time_usecs + 1;
  	}
  	return latestTimestamp;

  },
  
  parseJson : function(jsonString) {
  	var entriesArr = this.getEntriesList(jsonString);
  	var clusterUuid = '';
  	
  	if(entriesArr != null){
  		for(var key in entriesArr){
  			var entry = entriesArr[key];
  			clusterUuid = entry.cluster_uuid;
  			for(var entity in entry.entity_list){
  				var resourceId = entry.entity_list[entity].entity_id;
  				var resourceType = "Nutanix " + entry.entity_list[entity].entity_type;
  				this.populateCloudEvent(entry, resourceId, resourceType);
  			}
  		}
  		var latestTimestamp = this.getLastTimeStamp(entriesArr);

  		if(latestTimestamp){
  			gs.info("NutanixEventSensor: updated cluster UUID "+clusterUuid+" with timestamp "+latestTimestamp);
  			this.updateSaHashTable(clusterUuid, latestTimestamp);
  		}
  	}else{
  		
  		gs.warn("NutanixEventSensor: could not find entities tag");
  	}
  },

  updateSaHashTable : function(clusterUuid, timestamp) {
  	var tsHandler = new EventsTimestampHandler();
  	tsHandler.updateSaTableForAccountWithLatestEvent(clusterUuid, timestamp);
  },

  populateCloudEvent : function(entry, resourceId, resourceType) {
  	
  	var cloudEventGr = new GlideRecord('sn_cmp_cloud_event');
  	var headerName = 'event-type';
  	var headers = {};
  	headers[headerName] = 'NutanixStackDriver';
  
  	cloudEventGr.initialize();
  	cloudEventGr.event_name = 'ConfigurationItemChangeNotification';
  	
  	cloudEventGr.ci = this.getCIObj(resourceId);
  	cloudEventGr.state = 'ready';
  	cloudEventGr.source = 'nutanixstackdriver';
  	cloudEventGr.resource_id = resourceId;
  	cloudEventGr.resource_type = this._getResourceType(resourceType);
  	cloudEventGr.headers = JSON.stringify(headers);
  	cloudEventGr.query_params = '{}';
  	cloudEventGr.payload = JSON.stringify(entry);
  	cloudEventGr.insert();
  	//}
  },

  getCIObj : function(objectId) {
  	var ciGr = new GlideRecord('cmdb_ci_nutanix_vm_instance');
  	ciGr.addQuery('vm_inst_id',objectId);
  	ciGr.query();
  	if(ciGr.next())
  		return ciGr.getUniqueValue();
  },

  getEntriesList : function(jsonString) {
  	return jsonString[0].entities;
  },
  
  _getResourceType : function(resourceName) {
  	var ciGr = new GlideRecord('sn_capi_resource_type');
  	ciGr.addQuery('name',resourceName);
  	ciGr.query();
  	if(ciGr.next())
  		return ciGr.sys_id;
  },

  type: 'NutanixEventSensor'
};

Sys ID

73a8cc30db46b700e7dc7c4daf961928

Offical Documentation

Official Docs: