Ce contenu n'est pas disponible dans la langue sélectionnée.

12.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))
Copy to Clipboard Toggle word wrap
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 12.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,1)

	  exporter.write(data.get(0));
     }
  }
  ...8<...
Copy to Clipboard Toggle word wrap
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 12.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()
}
Copy to Clipboard Toggle word wrap
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.
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat