Name
sn_cmp.VMwareEventHandler
Description
No description available
Script
var VMwareEventHandler = Class.create();
VMwareEventHandler.prototype = Object.extendsObject(CloudEventHandler, {
processEvent : function(headersStr, bodyStr, queryParamsStr){
var response = {};
response.sys_domain = this.getErrorEventsDefaultDomain();
var json = new global.JSON();
var headers = json.decode(headersStr);
var body = json.decode(bodyStr);
var queryParams = json.decode(queryParamsStr);
var eccQueueSysId = headers.eccQueueSysId;
var eventName = headers.eventName;
var ciSysId = headers.ciSysId;
var status = headers.status;
var statusSysId = headers.statusSysId;
var ciTable = headers.ciTable;
var data = body.data;
var accountId = body.vcenter_instance_uuid;
var subject;
if (data)
subject = data.fullFormattedMessage;
var serviceAccountGr = this._verifyServiceAccount(accountId);
if (!gs.nil(serviceAccountGr))
response.sys_domain = gs.nil(serviceAccountGr.sys_domain) ? '' : serviceAccountGr.sys_domain;
if (!status || status == 'error') {
response.state = 'error';
response.error_message = gs.getMessage('Error processing event {0}', [eventName]);
return response;
}
if (!ciSysId || !ciTable) {
response.state = 'skipped';
response.error_message = gs.getMessage('Cannot locate CI with event {0}', [eventName]);
return response;
}
var gr = new GlideRecord(ciTable);
if (!gr.get(ciSysId)) {
response.state = 'skipped';
response.error_message = gs.getMessage('Cannot locate CI with event {0}', [eventName]);
return response;
}
if (status == 'discovering'){
if (!statusSysId)
status = 'error';
var statusGr = new GlideRecord('discovery_status');
if (!statusGr.get(statusSysId))
status = 'error';
status = statusGr.getValue('state');
if (status == 'error') {
response.state = 'error';
response.error_message = gs.getMessage('Error discovering CI with event {0}', [eventName]);
return response;
}
if (status == 'Canceled') {
response.state = 'skipped';
response.error_message = gs.getMessage('Discovery canceled for CI with event {0}', [eventName]);
return response;
}
if (status != 'Completed') {
response.state = 'ready'; // discovery is still going for this CI, set event state to ready so it can be re-processed
return response;
}
}
if (subject)
response.subject = subject;
response.event_name = eventName;
response.ci = ciSysId;
var resourceId = gr.getValue('object_id');
if (resourceId)
response.resource_id = resourceId;
var resourceTypeGr = this._getResourceTypeGr(ciTable);
if (resourceTypeGr) {
response.resource_type = resourceTypeGr.getUniqueValue();
response.resource_block = this._getResourceblock(resourceTypeGr.getUniqueValue());
}
response.state = 'processed';
return response;
},
_getResourceTypeGr : function(tableName){
var resourceTypeGr = new GlideRecord('sn_capi_resource_type');
resourceTypeGr.addQuery('ci_class', tableName);
var qc = resourceTypeGr.addQuery('product.name','VMware vSphere');
qc.addOrCondition('product.name','VMware VDisk');
resourceTypeGr.query();
if (resourceTypeGr.next())
return resourceTypeGr;
return null;
},
type: 'VMwareEventHandler'
});
Sys ID
cd7b97e6d734320097eb6ccf6e61038a