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