VMware Cloud Community
PowerPaul201110
Enthusiast
Enthusiast

AWS Plug-In NullPointerException when trying to get EC2Instances from EC2Reservation

Hi all,

I am using vRealize Orchestrator Plug-In for Amazon Web Services (AWS) v. 1.1 and trying to query an EC2Instance by its ID using the following script:

var region = "eu-central-1"

var InstanceId = "i-123123123"

var clients = Server.findAllForType("AWS:AWSClient");

for each (var client in clients) {   

    if (region != null && client.region.name != region) {

        System.debug("Skipping region '"+client.region.name+"'");

        continue;

    } else {

        System.debug("Searching region '"+client.region.name+"'");

    }

   

    var ec2Client = client.getAmazonEC2Client();

    var myEC2Filter = new EC2Filter().withName("instance-id").withValues([InstanceId]) ;   

    var myEC2DescribeInstancesRequest = new EC2DescribeInstancesRequest().withFilters([myEC2Filter]) ;

   

    try {

        var result = ec2Client.describeInstances(myEC2DescribeInstancesRequest);

       

        var reservations = result.getReservations();

        for each (var reservation in reservations) {

            System.log("Reservation: " + reservation);

           

            System.log("Reservation ID: " + reservation.getReservationId());

            System.log("Owner ID: " + reservation.getOwnerId());

            System.log("Instances: " + reservation.getInstances());

        }

       

    } catch (e) {

        System.error(e);

    }

}

However, everything looks quite good until I try to run (line #29 above):

System.log("Instances: " + reservation.getInstances());

Resulting in a NullPointerException:

InternalError: Cannot create EC2Instance object : java.lang.NullPointerException

It looks like a bug since the data is available and get printed with (line #25):

System.log("Reservation: " + reservation);

Any ideas how to fix the behavior?

Thanks and best regards,

Paul

Tags (2)
Reply
0 Kudos
5 Replies
PowerPaul201110
Enthusiast
Enthusiast

As addendum, the same exception is thrown when I try to directly query the vRO server for the type EC2Instance:

System.log(Server.findForType("AWS:EC2Instance",InstanceId));

Error Message:

Unable to find for type, reason : Cannot create EC2Instance object : java.lang.NullPointerException

Reply
0 Kudos
iiliev
VMware Employee
VMware Employee

Hi,

Could you check if there is more info (like exception stack trace showing the line number where the exception occurred in Java code) in vRO server log file(s)? The main log file is /var/log/vco/app-server/server.log

Also, it might worth it to increase the plug-in log level to DEBUG using vRO Control Center UI and then try to reproduce the same error; this could dump some more info in the log files.

Reply
0 Kudos
PowerPaul201110
Enthusiast
Enthusiast

Hi Ilian,

thanks for the hint. Set log level to DEBUG and found a Java stack trace:

2018-11-09 13:40:04.115+0100 [WorkflowExecutorPool-Thread-21] DEBUG {|__SYSTEM|vra7@domain.local:Find EC2Instance by ID:0a5a6c2c-b061-4283-9bb8-4288b4becb89:token=d1f782e2-2c3e-4ca4-af8f-8a2697a7e09c} [ModulesFactory] Object EC2Instance creation error

java.lang.NullPointerException

at ch.dunes.vso.sdk.ModulesFactory.createInstance(ModulesFactory.java:876)

at ch.dunes.vso.sdk.ModulesFactory.wrapObjectInScope(ModulesFactory.java:857)

at ch.dunes.scripting.jsmodel.DunesWrapFactory.wrapAsJavaObject(DunesWrapFactory.java:143)

at ch.dunes.scripting.jsmodel.DunesWrapFactory.wrap(DunesWrapFactory.java:84)

at ch.dunes.scripting.jsmodel.DunesWrapFactory.wrapAsJavaObject(DunesWrapFactory.java:119)

at ch.dunes.scripting.jsmodel.DunesWrapFactory.wrap(DunesWrapFactory.java:84)

at org.mozilla.javascript.Context.javaToJS(Context.java:1679)

at ch.dunes.vso.sdk.DynamicWrapperHelper.javaToJS(DynamicWrapperHelper.java:67)

at ch.dunes.vso.sdk.WrappedJavaMethod.call(WrappedJavaMethod.java:178)

at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1473)

at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815)

at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109)

at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)

at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)

at org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:120)

at ch.dunes.scripting.server.script.MainScriptingObject.executeScript(MainScriptingObject.java:259)

at ch.dunes.scripting.server.script.MainScriptingObject.executeScript(MainScriptingObject.java:245)

at ch.dunes.workflow.engine.mbean.WorkflowScriptRunner.execute(WorkflowScriptRunner.java:187)

at ch.dunes.workflow.engine.mbean.runner.WorkflowItemTaskRunner.execute(WorkflowItemTaskRunner.java:45)

at ch.dunes.workflow.engine.mbean.runner.WorkflowItemTaskRunner.execute(WorkflowItemTaskRunner.java:26)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.executeItem(WorkflowHandler.java:1264)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.requestElementExecution(WorkflowHandler.java:1221)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.handleWorkflowTokenNextStep(WorkflowHandler.java:884)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.executeToken(WorkflowHandler.java:769)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.handleTokenExecution(WorkflowHandler.java:695)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.access$100(WorkflowHandler.java:116)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler$1.execute(WorkflowHandler.java:471)

at ch.dunes.model.ar.AccessRightsTemplate.executeWithAccessRights(AccessRightsTemplate.java:16)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.doExecute(WorkflowHandler.java:467)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.run(WorkflowHandler.java:282)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

2018-11-09 13:40:04.117+0100 [WorkflowExecutorPool-Thread-21] ERROR {|__SYSTEM|vra7@domain.local:Find EC2Instance by ID:0a5a6c2c-b061-4283-9bb8-4288b4becb89:token=d1f782e2-2c3e-4ca4-af8f-8a2697a7e09c} [SCRIPTING_LOG] [Find EC2Instance by ID (11/9/18 13:40:03)] Cannot create EC2Instance object : java.lang.NullPointerException

2018-11-09 13:40:04.117+0100 [WorkflowExecutorPool-Thread-21] DEBUG {|__SYSTEM|vra7@domain.local:Find EC2Instance by ID:0a5a6c2c-b061-4283-9bb8-4288b4becb89:token=d1f782e2-2c3e-4ca4-af8f-8a2697a7e09c} [WorkflowScriptRunner] Execute exception

org.mozilla.javascript.EvaluatorException: Cannot create EC2Instance object : java.lang.NullPointerException

at ch.dunes.vso.sdk.ModulesFactory.createInstance(ModulesFactory.java:880)

at ch.dunes.vso.sdk.ModulesFactory.wrapObjectInScope(ModulesFactory.java:857)

at ch.dunes.scripting.jsmodel.DunesWrapFactory.wrapAsJavaObject(DunesWrapFactory.java:143)

at ch.dunes.scripting.jsmodel.DunesWrapFactory.wrap(DunesWrapFactory.java:84)

at ch.dunes.scripting.jsmodel.DunesWrapFactory.wrapAsJavaObject(DunesWrapFactory.java:119)

at ch.dunes.scripting.jsmodel.DunesWrapFactory.wrap(DunesWrapFactory.java:84)

at org.mozilla.javascript.Context.javaToJS(Context.java:1679)

at ch.dunes.vso.sdk.DynamicWrapperHelper.javaToJS(DynamicWrapperHelper.java:67)

at ch.dunes.vso.sdk.WrappedJavaMethod.call(WrappedJavaMethod.java:178)

at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1473)

at script(Workflow:Find EC2Instance by ID / Scriptable task (item1):25)

at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815)

at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109)

at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)

at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)

at org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:120)

at ch.dunes.scripting.server.script.MainScriptingObject.executeScript(MainScriptingObject.java:259)

at ch.dunes.scripting.server.script.MainScriptingObject.executeScript(MainScriptingObject.java:245)

at ch.dunes.workflow.engine.mbean.WorkflowScriptRunner.execute(WorkflowScriptRunner.java:187)

at ch.dunes.workflow.engine.mbean.runner.WorkflowItemTaskRunner.execute(WorkflowItemTaskRunner.java:45)

at ch.dunes.workflow.engine.mbean.runner.WorkflowItemTaskRunner.execute(WorkflowItemTaskRunner.java:26)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.executeItem(WorkflowHandler.java:1264)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.requestElementExecution(WorkflowHandler.java:1221)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.handleWorkflowTokenNextStep(WorkflowHandler.java:884)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.executeToken(WorkflowHandler.java:769)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.handleTokenExecution(WorkflowHandler.java:695)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.access$100(WorkflowHandler.java:116)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler$1.execute(WorkflowHandler.java:471)

at ch.dunes.model.ar.AccessRightsTemplate.executeWithAccessRights(AccessRightsTemplate.java:16)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.doExecute(WorkflowHandler.java:467)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.run(WorkflowHandler.java:282)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

2018-11-09 13:40:04.118+0100 [WorkflowExecutorPool-Thread-21] WARN  {|__SYSTEM|vra7@domain.local:Find EC2Instance by ID:0a5a6c2c-b061-4283-9bb8-4288b4becb89:token=d1f782e2-2c3e-4ca4-af8f-8a2697a7e09c} [WorkflowItemTaskRunner] Script execution error on workflow : Find EC2Instance by ID / 'Scriptable task'(item1) : Cannot create EC2Instance object : java.lang.NullPointerException

2018-11-09 13:40:04.118+0100 [WorkflowExecutorPool-Thread-21] DEBUG {|__SYSTEM|vra7@domain.local:Find EC2Instance by ID:0a5a6c2c-b061-4283-9bb8-4288b4becb89:token=d1f782e2-2c3e-4ca4-af8f-8a2697a7e09c} [WorkflowItemTaskRunner] Script execution error stack

ch.dunes.workflow.engine.mbean.ScriptExecutionException: Cannot create EC2Instance object : java.lang.NullPointerException

at ch.dunes.workflow.engine.mbean.WorkflowScriptRunner.execute(WorkflowScriptRunner.java:199)

at ch.dunes.workflow.engine.mbean.runner.WorkflowItemTaskRunner.execute(WorkflowItemTaskRunner.java:45)

at ch.dunes.workflow.engine.mbean.runner.WorkflowItemTaskRunner.execute(WorkflowItemTaskRunner.java:26)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.executeItem(WorkflowHandler.java:1264)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.requestElementExecution(WorkflowHandler.java:1221)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.handleWorkflowTokenNextStep(WorkflowHandler.java:884)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.executeToken(WorkflowHandler.java:769)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.handleTokenExecution(WorkflowHandler.java:695)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.access$100(WorkflowHandler.java:116)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler$1.execute(WorkflowHandler.java:471)

at ch.dunes.model.ar.AccessRightsTemplate.executeWithAccessRights(AccessRightsTemplate.java:16)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.doExecute(WorkflowHandler.java:467)

at ch.dunes.workflow.engine.mbean.helper.WorkflowHandler.run(WorkflowHandler.java:282)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

Is this meaningful?

Thanks Paul

Reply
0 Kudos
iiliev
VMware Employee
VMware Employee

Yes, thanks Paul.

For some reason, the code fails to create a Javascript wrapper for the EC2Instance object. Unfortunately, it doesn't (and cannot) tell us why Smiley Sad

This type of error is not something that can be easily resolved at your side; we need to try to reproduce it in our environment to figure out what is going on. At the end, to fix it will probably require a patch for the plug-in. So, if not a problem for you, I would suggest to contact your VMware support representative to open an official support request.

BTW, forgot to ask which vRO version is this?

Reply
0 Kudos
PowerPaul201110
Enthusiast
Enthusiast

Hi Ilian,

thanks for the feedback. So I will create a new case referring to this threat.

My vRO version is 7.5.0

BR

Paul

Reply
0 Kudos