Name
sn_cmp.CloudEventHandler
Description
No description available
Script
var CloudEventHandler = Class.create();
CloudEventHandler.prototype = Object.extendsObject(CloudPatternBase, {
GLIDE_CMP_DEBUG: 'glide.cmp.debug',
ERROR_EVENTS_DEFAULT_DOMAIN: 'sn_cmp.error_events.default_domain',
initialize: function() {
this._errorEventsDefaultDomain = gs.getProperty(this.ERROR_EVENTS_DEFAULT_DOMAIN,'');
},
processEvent : function(headersStr, bodyStr, queryParamsStr) {
//must be implemented by each provider handler
var response = {};
response.state = 'error';
response.error_message = 'processEvent function is not implemented';
return response;
},
getErrorEventsDefaultDomain: function() {
return this._errorEventsDefaultDomain;
},
_verifyLDC : function(serviceAccountId, ldc) {
var serviceAccountGr = this._verifyServiceAccount(serviceAccountId);
if (!serviceAccountGr)
return false;
var datacenterlist = '';
var dataCenterGr = new GlideRecord('cmdb_ci_logical_datacenter');
dataCenterGr.addQuery('region',ldc);
dataCenterGr.query();
while(dataCenterGr.next()) {
datacenterlist = datacenterlist + dataCenterGr.getUniqueValue();
if(dataCenterGr.hasNext()) {
datacenterlist = datacenterlist + ',';
}
}
if(datacenterlist == '') return false;
var ciRel = new GlideRecord('cmdb_rel_ci');
ciRel.addQuery('type.name', 'Hosted on::Hosts');
ciRel.addQuery('child',serviceAccountGr.getUniqueValue());
ciRel.addQuery('parent','IN',datacenterlist);
ciRel.setLimit(1);
ciRel.query();
return ciRel.hasNext();
},
_verifyCredential : function(serviceAccountId) {
var serviceAccountGr = this._verifyServiceAccount(serviceAccountId);
if (!serviceAccountGr)
return "";
return serviceAccountGr.discovery_credentials.sys_id+'';
},
_verifyServiceAccount : function(serviceAccountId) {
var serviceAccountGr = new GlideRecord('cmdb_ci_cloud_service_account');
if (!serviceAccountGr.get('account_id', serviceAccountId))
return null;
return serviceAccountGr;
},
_getValidatorName : function(resourceType) {
var resourceTypeGr = new GlideRecord('sn_capi_resource_type');
if (!resourceTypeGr || !resourceTypeGr.get('name', resourceType))
return null;
var ciClass = resourceTypeGr.getValue('ci_class');
if (!ciClass)
return null;
var validatorGr = new GlideRecord('cmdb_cmp_cloud_model_validator');
validatorGr.addQuery('ci_class',ciClass);
validatorGr.addQuery('validator_type','4');//insert/update type
validatorGr.query();
if (validatorGr.next())
return validatorGr.getValue('validator_name');
},
_getClassTypeId : function(resourceType) {
var resourceTypeGr = this._getResourceTypeGr(resourceType);
if (!resourceTypeGr || !resourceTypeGr.get('name', resourceType))
return null;
var ciClass = resourceTypeGr.getValue('ci_class');
return (ciClass) ? ciClass : null;
},
_getCiId : function(classType, inputObjectId) {
var cmdbCloudCi = new GlideRecord(classType);
var record = cmdbCloudCi.get('object_id', inputObjectId);
return (record) ? cmdbCloudCi.getUniqueValue() : '';
},
_debug : function(msg) {
if (gs.getProperty(this.GLIDE_CMP_DEBUG,false))
gs.info('['+this.type+']********'+msg);
},
_updateResponse : function(response, resourceType, cloudModelPayload) {
var resourceTypeGr = this._getResourceTypeGr(resourceType);
var ciClass;
if (!resourceTypeGr)
return;
response.resource_type = resourceTypeGr.getUniqueValue();
ciClass = resourceTypeGr.getValue('ci_class');
response.resource_block = this._getResourceblock(resourceTypeGr.getUniqueValue());
if (ciClass) {
cloudModelPayload = new global.JSON().decode(cloudModelPayload);
for (var key in cloudModelPayload) {
if (key.indexOf(ciClass) == 0) {
var ciId = cloudModelPayload[key];
if (ciId){
response.ci = ciId;
}
break;
}
}
}
},
_getResourceblock : function(resourceTypeId) {
var rt_rb_mapping = new GlideRecord('sn_cmp_rt_rb_m2m');
if (rt_rb_mapping.get('resource_type',resourceTypeId))
return rt_rb_mapping.getValue('resource_block');
return '';
},
type: 'CloudEventHandler'
});
Sys ID
c6dfbea1d7d4320097eb6ccf6e6103d1