CLI: check and retry for import
Issue
- Very often, when running scripts to import platform and then its agent, we run into errors like this one:
2014-08-04 12:31:21] [JBM-1407148192] [qlmss4h] [ INFO] Trying to import this JON-Agent into example.server.com
Exception in thread "main" org.rhq.enterprise.client.script.CLIScriptException: javax.script.ScriptException: sun.org.mozilla.javascript.internal.WrappedException: Wrapped java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 (<Unknown source>#18) in <Unknown source> at line number 18
at org.rhq.enterprise.client.commands.ScriptCommand.executeScriptFile(ScriptCommand.java:298)
at org.rhq.enterprise.client.commands.ScriptCommand.execute(ScriptCommand.java:108)
at org.rhq.enterprise.client.ClientMain$StartupConfiguration.process(ClientMain.java:141)
at org.rhq.enterprise.client.ClientMain.main(ClientMain.java:161)
Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.WrappedException: Wrapped java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 (<Unknown source>#18) in <Unknown source> at line number 18
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:224)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
at org.rhq.enterprise.client.commands.ScriptCommand.executeScriptFile(ScriptCommand.java:287)
... 3 more
Caused by: sun.org.mozilla.javascript.internal.WrappedException: Wrapped java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 (<Unknown source>#18)
at sun.org.mozilla.javascript.internal.Context.throwAsScriptRuntimeEx(Context.java:1808)
at sun.org.mozilla.javascript.internal.MemberBox.invoke(MemberBox.java:196)
at sun.org.mozilla.javascript.internal.NativeJavaMethod.call(NativeJavaMethod.java:245)
at sun.org.mozilla.javascript.internal.Interpreter.interpretLoop(Interpreter.java:1706)
at sun.org.mozilla.javascript.internal.Interpreter.interpret(Interpreter.java:849)
at sun.org.mozilla.javascript.internal.InterpretedFunction.call(InterpretedFunction.java:162)
at sun.org.mozilla.javascript.internal.ContextFactory.doTopCall(ContextFactory.java:430)
at com.sun.script.javascript.RhinoScriptEngine$1.superDoTopCall(RhinoScriptEngine.java:116)
at com.sun.script.javascript.RhinoScriptEngine$1.doTopCall(RhinoScriptEngine.java:109)
at sun.org.mozilla.javascript.internal.ScriptRuntime.doTopCall(ScriptRuntime.java:3160)
at sun.org.mozilla.javascript.internal.InterpretedFunction.exec(InterpretedFunction.java:173)
at sun.org.mozilla.javascript.internal.Context.evaluateReader(Context.java:1169)
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:214)
... 5 more
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.org.mozilla.javascript.internal.MemberBox.invoke(MemberBox.java:167)
- Why do we sometimes get
java.lang.IndexOutOfBoundsException
when trying to import agent for the just added platform resource?
Environment
- Red Hat JBoss Operations Network (JON) 3.1.2
- Red Hat JBoss ON Command Line Interface (CLI) 3.1.2
- Trying to run shell script that will first import the platform resource and then its agent;
- Running script similar to:
# check if platform is already imported into jon
importStatus_executeUsecase "resname=$(hostname -f)"
if [ $? -ne 0 ]; then
# try to import platform first
importPlatform.js
importAgent.js
importDatasource.js
fi
- The importAgent.js searches for just added platform and adds it's agent resource to the inventory as in the following example:
var myPlatformCriteria = new ResourceCriteria();
myPlatformCriteria.addFilterResourceTypeName("Linux");
myPlatformCriteria.addFilterName(resname);
var myPlatformResources = ResourceManager.findResourcesByCriteria(myPlatformCriteria);
var myPlatformResource = myPlatformResources.get(0);
var myAgentCriteria = new ResourceCriteria();
myAgentCriteria.addFilterInventoryStatus(InventoryStatus.NEW);
myAgentCriteria.addFilterResourceTypeName("RHQ Agent");
myAgentCriteria.addFilterName("RHQ Agent");
myAgentCriteria.addFilterParentResourceId(myPlatformResource.id);
var myAgents = ResourceManager.findResourcesByCriteria(myAgentCriteria);
if (myAgents.size() > 0) {
var myAgentResource = myAgents.get(0);
DiscoveryBoss.importResources([myAgentResource.id]);
}
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.