-
Language:
English
-
Language:
English
Red Hat Training
A Red Hat training course is available for Red Hat JBoss Operations Network
3. Getting Data for Single and Multiple Resources
When you run any sort of operation or function, you frequently have to pull the results from that operation, the data, into another function.
For example, this exports and writes whatever the results from the data variable was:
exporter.write(data.get(0))
Using
get(0)
takes the first object that was returned and uses it.
There can be instances when there are a lot of objects returned that could potentially be used in the next step of the script, and there are a couple of different ways to handle it.
One option, instead of
get(0)
, is to work incrementally through each object in a list. For example, this gets the data for each metric definition (i) for a resource.
Example 3. get(i)
if( mdefs != null ) { if( mdefs.size() > 1 ) { for( i =0; i < mdefs.size(); ++i) { mdef = mdefs.get(i); var data = MeasurementDataManager.findDataForResource(resources.get(0).id,[mdef.id],start,end,"") exporter.write(data.get(0)); } } ...8<...
Other objects can be sent to an array, and then the operation or task can be performed for each object in that array. This example searches for all JBoss AS 5 servers, sends the results to an array, and then performs a restart operation on each server.
Example 4. An Array
//find the resources //use a plugin filter to make sure they are all of the same type criteria = new ResourceCriteria(); criteria.addFilterPluginName('JBossAS5') var resources = ResourceManager.findResourcesByCriteria(criteria).toArray(); var resType = ResourceTypeManager.getResourceTypeByNameAndPlugin('JBossAS Server', 'JBossAS5'); // go through the array var idx=0; var jbossServers = new Array(); for( i in resources ) { if( resources[i].resourceType.id == resType.id ) { jbossServers[idx] = resources[i]; idx = idx + 1; } } // restart the resources for( a in resources ) { var jboss = ProxyFactory.getResource(jbossServers[a].id); jboss.restart() }
The
util.js
support script has a foreach
function that also iterates cleanly through arrays, collections, and maps, as well as generic objects.
Which method you use to handle multiple objects — or whether you even want to handle multiple objects — depends on the type of information and the purpose of the script. These are just some options to keep in mind.