Load Balancer Discovery Pattern Extension steps - CIs not created
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Monday
I have created an Extension steps for AVI Load Balancer Controller - Session based pattern. Requirement is to get markers from JSON payload for Load Balancer Services and Load Balancer pools and insert them into cmdb_key_value table. All steps in Pattern debug works ok except the insert step. Configuration Item sys id of Load Balancer Service is needed for cmdb_key_value table. I dont know how achieve that? I have used EVAL script for configuration_item field no success . I have created a simple script include and call it from the pattern no success as well.Please refer to the attached screenshots. And also my script include which is working in background script.
**********************************************************************************************************
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yesterday
Hi @Marcin Witoslaw ,
Looking at you payload try the following Script and change according to your use case
var rtrn = {};
var payloadObj = JSON.parse(payload || "{}");
prePostNodeLogger.info(prePostLogPrefix + " POST SENSOR STARTED");
if (payloadObj && payloadObj.items) {
var items = payloadObj.items;
for (var i = 0; i < items.length; i++) {
var currentItem = items[i];
if (currentItem.className == "cmdb_ci_lb_service" || currentItem.className == "cmdb_ci_lb_pool") {
var values = currentItem.values || {};
var objectId = values.object_id;
var sysId = currentItem.sys_id; // IRE populates sys_id after identification
if (!sysId && objectId) {
// Fallback: lookup from DB if sys_id not in result
var targetTable = (objectId.indexOf('virtualservice-') > -1) ? "cmdb_ci_lb_service" : "cmdb_ci_lb_pool";
var lookup = new GlideRecord(targetTable);
lookup.addQuery("object_id", objectId);
lookup.setLimit(1);
lookup.query();
if (lookup.next()) {
sysId = lookup.getUniqueValue();
}
}
if (sysId && objectId) {
prePostNodeLogger.info(prePostLogPrefix + " Inserting cmdb_key_value for object_id: " + objectId + " ci sys_id: " + sysId);
var kv = new GlideRecord("cmdb_key_value");
kv.initialize();
kv.setValue("cmdb_ci", sysId);
kv.setValue("key", "object_id");
kv.setValue("value", objectId);
kv.insert();
// Insert additional markers if needed
if (values.name) {
var kv2 = new GlideRecord("cmdb_key_value");
kv2.initialize();
kv2.setValue("cmdb_ci", sysId);
kv2.setValue("key", "name");
kv2.setValue("value", values.name);
kv2.insert();
}
} else {
prePostNodeLogger.warn(prePostLogPrefix + " Could not resolve sys_id for object_id: " + objectId);
}
}
}
}
// Post Sensor - payload return is optional but recommended
rtrn = {
'status': {
'message': 'AVI Post Sensor - cmdb_key_value records processed.',
'isSuccess': true
},
'patternId': patternId,
'payload': JSON.stringify(payloadObj)
};
If it helped you please do mark it as helpful and accept the solution
Thanks,
Vishnu
