Calling a script include from a module, how to pass parameters?

Cedric Creton
Tera Expert

Dear Community,

 

To return the hosts running a DB instance, I'm calling a script include from a module.

Screenshot 2024-04-12 at 12.10.15.png

 

It calls this SI

 

var FilterDBRunningHosts = Class.create();
FilterDBRunningHosts.prototype = {
filterHosts: function() {
// Query all db instances
 
var instance = new GlideRecord("cmdb_ci_db_instance");
//var instance = new GlideRecord("cmdb_ci_db_postgresql_instance");
 
instance.query();

var runsOnSysIds = [];
// loop through instances
while (instance.next()) {
// find parents
var relationshipGr = new GlideRecord('cmdb_rel_ci');
relationshipGr.addQuery('parent',instance.sys_id);
relationshipGr.addQuery('type','60bc4e22c0a8010e01f074cbe6bd73c3');
relationshipGr.query();

var childCiSysIds = [];
// push sys.ids
while (relationshipGr.next()) {
childCiSysIds.push(relationshipGr.child.sys_id.toString());
}

var ciGr = new GlideRecord('cmdb_ci');
ciGr.addQuery('sys_id', 'IN', childCiSysIds);
ciGr.query();
//gs.log('CI count: ' + ciGr.getRowCount());
// push sys.ids
while (ciGr.next()) {
runsOnSysIds.push(ciGr.sys_id.toString());
}

}
//gs.log(runsOnSysIds);
return runsOnSysIds;
 
}
};

 

And returns me all sys_id of the servers 🙂

 

Now I'm trying to enhance this Si to use .any CMDB subclass of  cmdb_ci_db_instance passed as parameter.

But seems the parameters is not/badly transmitted 

 

filterHostsAny2: function(db_class) {
//var instance = new GlideRecord("cmdb_ci_db_instance");
var instance = new GlideRecord(db_class);
instance.query();
 
// init empty array
var runsOnSysIds = [];
// loop through instances
while (instance.next()) {
// find parents
var relationshipGr = new GlideRecord('cmdb_rel_ci');
relationshipGr.addQuery('parent', instance.sys_id);
relationshipGr.addQuery('type', '60bc4e22c0a8010e01f074cbe6bd73c3');
relationshipGr.query();
var childCiSysIds = [];
 
while (relationshipGr.next()) {
childCiSysIds.push(relationshipGr.child.sys_id.toString());
}

var ciGr = new GlideRecord('cmdb_ci');
ciGr.addQuery('sys_id', 'IN', childCiSysIds);
ciGr.query();
 
while (ciGr.next()) {
 
runsOnSysIds.push(ciGr.sys_id.toString());
}

}
 
//return runsOnSysIds;
return db_class;
}

 

(db_class returns "undefined")

Screenshot 2024-04-12 at 12.25.15.png

 

Does this call works too?

How to pass a parameter efficiently to the script include?

 

Ma ny thanks in advance foryour advises!

 

Cedric

0 REPLIES 0