-------------------------------------------------------------------------------
Test set: TestSuite
-------------------------------------------------------------------------------
Tests run: 145, Failures: 8, Errors: 0, Skipped: 13, Time elapsed: 2,497.126 sec <<< FAILURE!
testImageById(org.jclouds.trmk.vcloudexpress.compute.TerremarkVCloudExpressComputeServiceLiveTest)  Time elapsed: 0.543 sec  <<< FAILURE!
java.lang.NullPointerException: parent
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:208)
	at org.jclouds.trmk.vcloud_0_8.compute.functions.ImageForVCloudExpressVAppTemplate.apply(ImageForVCloudExpressVAppTemplate.java:71)
	at org.jclouds.trmk.vcloud_0_8.compute.functions.ImageForVCloudExpressVAppTemplate.apply(ImageForVCloudExpressVAppTemplate.java:41)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.TerremarkVCloudGetImageStrategy.getImage(TerremarkVCloudGetImageStrategy.java:56)
	at org.jclouds.compute.internal.BaseComputeService.getImage(BaseComputeService.java:415)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy71.getImage(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testImageById(BaseComputeServiceLiveTest.java:208)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testCreateAndRunAService(org.jclouds.trmk.vcloudexpress.compute.TerremarkVCloudExpressComputeServiceLiveTest)  Time elapsed: 334.651 sec  <<< FAILURE!
java.lang.AssertionError: node tags did not match [vcxs] {id=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vapp/505445, providerId=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vapp/505445, uri=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vapp/505445, name=vcxs-483, uri=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vapp/505445, location={scope=ZONE, id=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32, description=Miami Environment 1, parent=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/org/48}, group=vcxs, os={family=ubuntu, name=46, version=, description=Ubuntu Linux (64-bit), is64Bit=true}, status=RUNNING, loginPort=22, hostname=vcxs-483, privateAddresses=[10.114.34.134], publicAddresses=[204.51.115.134], hardware={id=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vapp/505445, providerId=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vapp/505445, name=vcxs-483, location={scope=ZONE, id=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32, description=Miami Environment 1, parent=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/org/48}, processors=[{cores=1.0, speed=1.0}], ram=512, volumes=[{id=0, type=LOCAL, size=4.0, bootDevice=true, durable=true}], hypervisor=VMware, supportsImage=idEquals(https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vapp/505445)}, loginUser=vcloud}
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.checkTagsInNodeEquals(BaseComputeServiceLiveTest.java:719)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.createAndRunAServiceInGroup(BaseComputeServiceLiveTest.java:680)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testCreateAndRunAService(BaseComputeServiceLiveTest.java:660)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testAScriptExecutionAfterBootWithBasicTemplate(org.jclouds.trmk.vcloudexpress.compute.TerremarkVCloudExpressComputeServiceLiveTest)  Time elapsed: 338.031 sec  <<< FAILURE!
org.jclouds.compute.RunScriptOnNodesException: error runScript on filtered nodes options({loginUser=vcloud, loginPasswordPresent=true, loginPrivateKeyPresent=true, authenticateSudo=true, runAsRoot=false, wrapInInitScript=false})
Execution failures:
0 error[s]
Node failures:
1) AuthorizationException on node https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vapp/505448:
org.jclouds.rest.AuthorizationException: (vcloud:rsa[fingerprint(0b:18:cb:c5:7b:c4:7e:d2:07:f2:45:ca:33:18:67:fc),sha1(f9:06:20:2d:f6:18:16:4a:7d:73:ac:ef:23:ca:30:0a:c7:b0:30:bd)]@204.51.115.139:22) (vcloud:rsa[fingerprint(0b:18:cb:c5:7b:c4:7e:d2:07:f2:45:ca:33:18:67:fc),sha1(f9:06:20:2d:f6:18:16:4a:7d:73:ac:ef:23:ca:30:0a:c7:b0:30:bd)]@204.51.115.139:22) error acquiring {hostAndPort=204.51.115.139:22, loginUser=vcloud, ssh=null, connectTimeout=60000, sessionTimeout=60000} (not retryable): Exhausted available authentication methods
	at org.jclouds.sshj.SshjSshClient.propagate(SshjSshClient.java:382)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:213)
	at org.jclouds.sshj.SshjSshClient.connect(SshjSshClient.java:223)
	at org.jclouds.compute.callables.RunScriptOnNodeUsingSsh.call(RunScriptOnNodeUsingSsh.java:80)
	at org.jclouds.compute.strategy.RunScriptOnNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(RunScriptOnNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:69)
	at org.jclouds.compute.strategy.RunScriptOnNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(RunScriptOnNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:44)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods
	at net.schmizz.sshj.userauth.UserAuthImpl.authenticate(UserAuthImpl.java:114)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:205)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:190)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:266)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:236)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:220)
	at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:140)
	at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:40)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:193)
	... 9 more
Caused by: net.schmizz.sshj.userauth.UserAuthException: keyboard-interactive auth failed
	at net.schmizz.sshj.userauth.UserAuthImpl.handle(UserAuthImpl.java:157)
	at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:474)
	at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:127)
	at net.schmizz.sshj.transport.Decoder.received(Decoder.java:195)
	at net.schmizz.sshj.transport.Reader.run(Reader.java:72)
1 error[s]
	at org.jclouds.compute.internal.BaseComputeService.runScriptOnNodesMatching(BaseComputeService.java:572)
	at org.jclouds.compute.internal.BaseComputeService.runScriptOnNodesMatching(BaseComputeService.java:532)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy71.runScriptOnNodesMatching(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testAScriptExecutionAfterBootWithBasicTemplate(BaseComputeServiceLiveTest.java:230)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods
	at net.schmizz.sshj.userauth.UserAuthImpl.authenticate(UserAuthImpl.java:114)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:205)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:190)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:266)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:236)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:220)
	at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:140)
	at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:40)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:193)
	... 9 more
Caused by: net.schmizz.sshj.userauth.UserAuthException: keyboard-interactive auth failed
	at net.schmizz.sshj.userauth.UserAuthImpl.handle(UserAuthImpl.java:157)
	at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:474)
	at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:127)
	at net.schmizz.sshj.transport.Decoder.received(Decoder.java:195)
	at net.schmizz.sshj.transport.Reader.run(Reader.java:72)
1 error[s]
	at org.jclouds.compute.internal.BaseComputeService.runScriptOnNodesMatching(BaseComputeService.java:572)
	at org.jclouds.compute.internal.BaseComputeService.runScriptOnNodesMatching(BaseComputeService.java:532)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy71.runScriptOnNodesMatching(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testAScriptExecutionAfterBootWithBasicTemplate(BaseComputeServiceLiveTest.java:230)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testCreateTwoNodesWithRunScript(org.jclouds.trmk.vcloudexpress.compute.TerremarkVCloudExpressComputeServiceLiveTest)  Time elapsed: 228.636 sec  <<< FAILURE!
org.jclouds.compute.RunNodesException: error running 2 nodes group(vcx) location(https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32) image(https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vappTemplate/41) size(cpu=1,ram=512,disk=10) options(TerremarkVCloudTemplateOptions [keyPair=6e:d1:7c:cc:46:03:45:81:bc:35:ec:2d:de:f8:b5:10, noKeyPair=false, inboundPorts=[22], privateKey=false, publicKey=false, runScript=true, port:seconds=-1:-1, userMetadata: {}])
Execution failures:
0 error[s]
Node failures:
1) AuthorizationException on node https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vapp/505459:
org.jclouds.rest.AuthorizationException: (vcloud:rsa[fingerprint(6e:d1:7c:cc:46:03:45:81:bc:35:ec:2d:de:f8:b5:10),sha1(4c:5a:e7:50:2c:dd:63:98:34:7e:a8:d9:3b:bc:b6:bc:32:89:b9:b3)]@204.51.124.15:22) (vcloud:rsa[fingerprint(6e:d1:7c:cc:46:03:45:81:bc:35:ec:2d:de:f8:b5:10),sha1(4c:5a:e7:50:2c:dd:63:98:34:7e:a8:d9:3b:bc:b6:bc:32:89:b9:b3)]@204.51.124.15:22) error acquiring {hostAndPort=204.51.124.15:22, loginUser=vcloud, ssh=null, connectTimeout=60000, sessionTimeout=60000} (not retryable): Exhausted available authentication methods
	at org.jclouds.sshj.SshjSshClient.propagate(SshjSshClient.java:382)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:213)
	at org.jclouds.sshj.SshjSshClient.connect(SshjSshClient.java:223)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.call(RunScriptOnNodeAsInitScriptUsingSsh.java:78)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:127)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.apply(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:148)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.apply(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:55)
	at com.google.common.util.concurrent.Futures$1.apply(Futures.java:720)
	at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:859)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods
	at net.schmizz.sshj.userauth.UserAuthImpl.authenticate(UserAuthImpl.java:114)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:205)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:190)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:266)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:236)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:220)
	at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:140)
	at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:40)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:193)
	... 10 more
Caused by: net.schmizz.sshj.userauth.UserAuthException: keyboard-interactive auth failed
	at net.schmizz.sshj.userauth.UserAuthImpl.handle(UserAuthImpl.java:157)
	at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:474)
	at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:127)
	at net.schmizz.sshj.transport.Decoder.received(Decoder.java:195)
	at net.schmizz.sshj.transport.Reader.run(Reader.java:72)
2) AuthorizationException on node https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vapp/505461:
org.jclouds.rest.AuthorizationException: (vcloud:rsa[fingerprint(6e:d1:7c:cc:46:03:45:81:bc:35:ec:2d:de:f8:b5:10),sha1(4c:5a:e7:50:2c:dd:63:98:34:7e:a8:d9:3b:bc:b6:bc:32:89:b9:b3)]@204.51.124.16:22) (vcloud:rsa[fingerprint(6e:d1:7c:cc:46:03:45:81:bc:35:ec:2d:de:f8:b5:10),sha1(4c:5a:e7:50:2c:dd:63:98:34:7e:a8:d9:3b:bc:b6:bc:32:89:b9:b3)]@204.51.124.16:22) error acquiring {hostAndPort=204.51.124.16:22, loginUser=vcloud, ssh=null, connectTimeout=60000, sessionTimeout=60000} (not retryable): Exhausted available authentication methods
	at org.jclouds.sshj.SshjSshClient.propagate(SshjSshClient.java:382)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:213)
	at org.jclouds.sshj.SshjSshClient.connect(SshjSshClient.java:223)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.call(RunScriptOnNodeAsInitScriptUsingSsh.java:78)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:127)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.apply(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:148)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.apply(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:55)
	at com.google.common.util.concurrent.Futures$1.apply(Futures.java:720)
	at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:859)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods
	at net.schmizz.sshj.userauth.UserAuthImpl.authenticate(UserAuthImpl.java:114)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:205)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:190)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:266)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:236)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:220)
	at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:140)
	at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:40)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:193)
	... 10 more
Caused by: net.schmizz.sshj.userauth.UserAuthException: keyboard-interactive auth failed
	at net.schmizz.sshj.userauth.UserAuthImpl.handle(UserAuthImpl.java:157)
	at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:474)
	at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:127)
	at net.schmizz.sshj.transport.Decoder.received(Decoder.java:195)
	at net.schmizz.sshj.transport.Reader.run(Reader.java:72)
2 error[s]
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:226)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy71.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testCreateTwoNodesWithRunScript(BaseComputeServiceLiveTest.java:343)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods
	at net.schmizz.sshj.userauth.UserAuthImpl.authenticate(UserAuthImpl.java:114)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:205)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:190)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:266)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:236)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:220)
	at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:140)
	at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:40)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:193)
	... 10 more
Caused by: net.schmizz.sshj.userauth.UserAuthException: keyboard-interactive auth failed
	at net.schmizz.sshj.userauth.UserAuthImpl.handle(UserAuthImpl.java:157)
	at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:474)
	at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:127)
	at net.schmizz.sshj.transport.Decoder.received(Decoder.java:195)
	at net.schmizz.sshj.transport.Reader.run(Reader.java:72)
2) AuthorizationException on node https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vapp/505461:
org.jclouds.rest.AuthorizationException: (vcloud:rsa[fingerprint(6e:d1:7c:cc:46:03:45:81:bc:35:ec:2d:de:f8:b5:10),sha1(4c:5a:e7:50:2c:dd:63:98:34:7e:a8:d9:3b:bc:b6:bc:32:89:b9:b3)]@204.51.124.16:22) (vcloud:rsa[fingerprint(6e:d1:7c:cc:46:03:45:81:bc:35:ec:2d:de:f8:b5:10),sha1(4c:5a:e7:50:2c:dd:63:98:34:7e:a8:d9:3b:bc:b6:bc:32:89:b9:b3)]@204.51.124.16:22) error acquiring {hostAndPort=204.51.124.16:22, loginUser=vcloud, ssh=null, connectTimeout=60000, sessionTimeout=60000} (not retryable): Exhausted available authentication methods
	at org.jclouds.sshj.SshjSshClient.propagate(SshjSshClient.java:382)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:213)
	at org.jclouds.sshj.SshjSshClient.connect(SshjSshClient.java:223)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.call(RunScriptOnNodeAsInitScriptUsingSsh.java:78)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:127)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.apply(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:148)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.apply(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:55)
	at com.google.common.util.concurrent.Futures$1.apply(Futures.java:720)
	at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:859)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods
	at net.schmizz.sshj.userauth.UserAuthImpl.authenticate(UserAuthImpl.java:114)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:205)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:190)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:266)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:236)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:220)
	at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:140)
	at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:40)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:193)
	... 10 more
Caused by: net.schmizz.sshj.userauth.UserAuthException: keyboard-interactive auth failed
	at net.schmizz.sshj.userauth.UserAuthImpl.handle(UserAuthImpl.java:157)
	at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:474)
	at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:127)
	at net.schmizz.sshj.transport.Decoder.received(Decoder.java:195)
	at net.schmizz.sshj.transport.Reader.run(Reader.java:72)
2 error[s]
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:226)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy71.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testCreateTwoNodesWithRunScript(BaseComputeServiceLiveTest.java:343)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testTemplateBuilderWithImageIdSpecified(org.jclouds.trmk.vcloudexpress.compute.TerremarkVCloudExpressTemplateBuilderLiveTest)  Time elapsed: 5.799 sec  <<< FAILURE!
java.lang.AssertionError: expected [{image={id=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vappTemplate/41, providerId=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vappTemplate/41, uri=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vappTemplate/41, name=Ubuntu Server 10.04 LTS x64, uri=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vappTemplate/41, location={scope=REGION, id=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/org/48, description=adrian@jclouds.org, parent=trmk-vcloudexpress}, os={family=ubuntu, version=10.04, description=Ubuntu Server 10.04 LTS x64, is64Bit=true}, description=username: vcloud (SSH) or (Console)
password: TmrkCl0ud1s#1!
This template contains a base install of Ubuntu Server 10.04 LTS x64. The hostname and base IP will be set as part of the server creation process based on user input. Once deployment is complete, please connect via the console and change the vcloud password. To connect via SSH you must use your private key. Instructions for using public key authentication with SSH and Putty are available on the vCloud Express community site., status=AVAILABLE, loginUser=vcloud}, hardware={id=cpu=1,ram=512,disk=10, providerId=cpu=1,ram=512,disk=10, processors=[{cores=1.0, speed=1.0}], ram=512, volumes=[{type=LOCAL, size=10.0, bootDevice=true, durable=true}], hypervisor=VMware, supportsImage=ALWAYS_TRUE}, location={scope=ZONE, id=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32, description=Miami Environment 1, parent=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/org/48}, options=TerremarkVCloudTemplateOptions [keyPair=null, noKeyPair=false, inboundPorts=[22], privateKey=false, publicKey=false, runScript=false, port:seconds=-1:-1, userMetadata: {}]}] but found [{image={id=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vappTemplate/41, providerId=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vappTemplate/41, uri=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vappTemplate/41, name=Ubuntu Server 10.04 LTS x64, uri=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vappTemplate/41, location={scope=REGION, id=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/org/48, description=adrian@jclouds.org, parent=trmk-vcloudexpress}, os={family=ubuntu, version=10.04, description=Ubuntu Server 10.04 LTS x64, is64Bit=true}, description=username: vcloud (SSH) or (Console)
password: TmrkCl0ud1s#1!
This template contains a base install of Ubuntu Server 10.04 LTS x64. The hostname and base IP will be set as part of the server creation process based on user input. Once deployment is complete, please connect via the console and change the vcloud password. To connect via SSH you must use your private key. Instructions for using public key authentication with SSH and Putty are available on the vCloud Express community site., status=AVAILABLE, loginUser=vcloud}, hardware={id=cpu=1,ram=512,disk=10, providerId=cpu=1,ram=512,disk=10, processors=[{cores=1.0, speed=1.0}], ram=512, volumes=[{type=LOCAL, size=10.0, bootDevice=true, durable=true}], hypervisor=VMware, supportsImage=ALWAYS_TRUE}, location={scope=REGION, id=https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/org/48, description=adrian@jclouds.org, parent=trmk-vcloudexpress}, options=TerremarkVCloudTemplateOptions [keyPair=null, noKeyPair=false, inboundPorts=[22], privateKey=false, publicKey=false, runScript=false, port:seconds=-1:-1, userMetadata: {}]}]
	at org.testng.Assert.fail(Assert.java:94)
	at org.testng.Assert.failNotEquals(Assert.java:494)
	at org.testng.Assert.assertEquals(Assert.java:123)
	at org.testng.Assert.assertEquals(Assert.java:176)
	at org.testng.Assert.assertEquals(Assert.java:186)
	at org.jclouds.compute.internal.BaseTemplateBuilderLiveTest.testTemplateBuilderWithImageIdSpecified(BaseTemplateBuilderLiveTest.java:246)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testGetVDCNetwork(org.jclouds.trmk.vcloudexpress.TerremarkVCloudExpressClientLiveTest)  Time elapsed: 3.994 sec  <<< FAILURE!
java.util.NoSuchElementException: entity 10.114.34.128/26 in vdc Miami Environment 1, org adrian@jclouds.org not found in [bbbbbbbbbbbbbbb, ddddddddddddddd, vcx-block-1115]
	at org.jclouds.trmk.vcloud_0_8.binders.OrgNameVDCNameResourceEntityNameToEndpoint.getEndpointOfResourceInVDC(OrgNameVDCNameResourceEntityNameToEndpoint.java:51)
	at org.jclouds.trmk.vcloud_0_8.binders.OrgNameVDCNameResourceNameToEndpoint.bindToRequest(OrgNameVDCNameResourceNameToEndpoint.java:73)
	at org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:315)
	at org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:134)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.toCommand(InvokeSyncToAsyncHttpMethod.java:242)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:127)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy67.findNetworkInOrgVDCNamed(Unknown Source)
	at org.jclouds.trmk.vcloud_0_8.TerremarkClientLiveTest.testGetVDCNetwork(TerremarkClientLiveTest.java:569)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testInstantiateAndPowerOn(org.jclouds.trmk.vcloudexpress.TerremarkVCloudExpressClientLiveTest)  Time elapsed: 16.495 sec  <<< FAILURE!
java.lang.IllegalStateException: Server with name "ddddddddddddddd" already exists.
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:63)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:71)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy67.instantiateVAppTemplateInVDC(Unknown Source)
	at org.jclouds.trmk.vcloud_0_8.TerremarkClientLiveTest.testInstantiateAndPowerOn(TerremarkClientLiveTest.java:214)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32/action/instantiateVAppTemplate HTTP/1.1 failed with response: HTTP/1.1 500 Server with name "ddddddddddddddd" already exists.; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>Server with name "ddddddddddddddd" already exists.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	... 31 more
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32/action/instantiateVAppTemplate HTTP/1.1 failed with response: HTTP/1.1 500 Server with name "ddddddddddddddd" already exists.; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>Server with name "ddddddddddddddd" already exists.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	... 31 more

testPropertiesCanOverrideDefaultNetwork(org.jclouds.trmk.vcloudexpress.TerremarkVCloudExpressClientLiveTest)  Time elapsed: 4.298 sec  <<< FAILURE!
java.util.NoSuchElementException: entity 10.114.34.128/26 in vdc Miami Environment 1, org adrian@jclouds.org not found in [bbbbbbbbbbbbbbb, ddddddddddddddd, vcx-block-1115]
	at org.jclouds.trmk.vcloud_0_8.binders.OrgNameVDCNameResourceEntityNameToEndpoint.getEndpointOfResourceInVDC(OrgNameVDCNameResourceEntityNameToEndpoint.java:51)
	at org.jclouds.trmk.vcloud_0_8.binders.OrgNameVDCNameResourceNameToEndpoint.bindToRequest(OrgNameVDCNameResourceNameToEndpoint.java:73)
	at org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:315)
	at org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:134)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.toCommand(InvokeSyncToAsyncHttpMethod.java:242)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:127)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy67.findNetworkInOrgVDCNamed(Unknown Source)
	at org.jclouds.trmk.vcloud_0_8.TerremarkClientLiveTest.testPropertiesCanOverrideDefaultNetwork(TerremarkClientLiveTest.java:592)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

