Name
global.DiscoveryAzureRelationshipSensor
Description
Finds and creates relationship between a host hosted on Azure cloud to its matched VM instance
Script
var DiscoveryAzureRelationshipSensor;
(function(){
DiscoveryAzureRelationshipSensor = { findAndCreateRelationToVM: findAndCreateRelationToVM};
function findAndCreateRelationToVM(vmInstance, ciSysId, eccQueueId) {
var vmGlideRecord = null;
if (JSUtil.nil(vmInstance) || JSUtil.nil(ciSysId) || JSUtil.nil(eccQueueId))
return null;
vmGlideRecord = new GlideRecord('cmdb_ci_vm_instance');
vmGlideRecord.addQuery('install_status', 'NOT IN', [7, 100]); //pick active VMs only. 7 - Retired, 100 - Absent
vmGlideRecord.addQuery('vm_inst_id', vmInstance);
vmGlideRecord.query();
if (vmGlideRecord.next()) {
var relGR = new GlideRecord("cmdb_rel_ci");
relGR.addQuery('parent', ciSysId);
relGR.addQuery("type", g_disco_functions.findCIRelationshipType("cmdb_rel_type", "Virtualized by::Virtualizes"));
relGR.addQuery("child", '!=',vmGlideRecord.getUniqueValue());
relGR.query();
relGR.deleteMultiple();
g_disco_functions.createRelationshipIfNotExists(ciSysId, vmGlideRecord, "Virtualized by::Virtualizes");
}
else
DiscoveryLogger.warn("Host hosted on cloud environment has been detected, but no matched cloud object found", 'DiscoveryAzureRelationshipSensor', eccQueueId, null);
return vmGlideRecord;
}
})();
Sys ID
c277428cdb7532003398f1351d961911