-------------------------------------------------------------------------------
Test set: TestSuite
-------------------------------------------------------------------------------
Tests run: 152, Failures: 7, Errors: 0, Skipped: 23, Time elapsed: 1,972.514 sec <<< FAILURE!
testGetImagesDetail(org.jclouds.rackspace.cloudservers.CloudServersUSClientLiveTest)  Time elapsed: 0.378 sec  <<< FAILURE!
java.lang.AssertionError: expected:<Image{created=Wed Aug 17 10:11:30 UTC 2011, id=118, name=CentOS 6.0, progress=null, serverId=null, status=ACTIVE, updated=Wed Aug 17 10:11:30 UTC 2011}> but was:<Image{created=null, id=118, name=CentOS 6.0, progress=null, serverId=null, status=ACTIVE, updated=Wed Aug 17 10:11:30 UTC 2011}>
	at org.testng.Assert.fail(Assert.java:89)
	at org.testng.Assert.failNotEquals(Assert.java:489)
	at org.testng.Assert.assertEquals(Assert.java:118)
	at org.testng.Assert.assertEquals(Assert.java:160)
	at org.jclouds.cloudservers.CloudServersClientLiveTest.testGetImagesDetail(CloudServersClientLiveTest.java:152)
	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:616)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:702)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219)
	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:768)
	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:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
testLimits(org.jclouds.rackspace.cloudservers.CloudServersUSClientLiveTest)  Time elapsed: 0.349 sec  <<< FAILURE!
org.jclouds.http.HttpResponseException: Error parsing input
{statusCode=200, message=OK, headers={Age=[0], Last-Modified=[Wed, 19 Sep 2012 23:57:06 GMT], Connection=[keep-alive], vary=[Accept, Accept-Encoding, X-Auth-Token], Server=[Apache-Coyote/1.1], Cache-Control=[s-maxage=1800], X-Varnish=[888132643], Date=[Wed, 19 Sep 2012 23:57:06 GMT], X-PURGE-KEY=[/717071/limits], Via=[1.1 varnish]}, payload=[content=true, contentMetadata=[contentDisposition=null, contentEncoding=null, contentLanguage=null, contentLength=674, contentMD5=null, contentType=application/json, expires=null], written=false]}
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:71)
	at org.jclouds.http.functions.UnwrapOnlyJsonValue.apply(UnwrapOnlyJsonValue.java:46)
	at org.jclouds.http.functions.UnwrapOnlyJsonValue.apply(UnwrapOnlyJsonValue.java:34)
	at com.google.common.util.concurrent.Futures$3.apply(Futures.java:376)
	at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:518)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.NullPointerException: uri
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:208)
	at org.jclouds.cloudservers.domain.RateLimit.<init>(RateLimit.java:159)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeWithParameterizedConstructorSerializeWithDelegate.newInstance(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:219)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeWithParameterizedConstructorSerializeWithDelegate.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:198)
	at org.jclouds.json.internal.IgnoreNullSetTypeAdapterFactory$1.read(IgnoreNullSetTypeAdapterFactory.java:69)
	at org.jclouds.json.internal.IgnoreNullSetTypeAdapterFactory$1.read(IgnoreNullSetTypeAdapterFactory.java:56)
	at com.google.gson.TypeAdapter$1.read(TypeAdapter.java:199)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:245)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeWithParameterizedConstructorSerializeWithDelegate.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:181)
	at org.jclouds.json.internal.IgnoreNullMapTypeAdapterFactory$1.read(IgnoreNullMapTypeAdapterFactory.java:74)
	at org.jclouds.json.internal.IgnoreNullMapTypeAdapterFactory$1.read(IgnoreNullMapTypeAdapterFactory.java:58)
	at com.google.gson.TypeAdapter$1.read(TypeAdapter.java:199)
	at com.google.gson.Gson.fromJson(Gson.java:791)
	at com.google.gson.Gson.fromJson(Gson.java:757)
	at com.google.gson.Gson.fromJson(Gson.java:706)
	at org.jclouds.json.internal.GsonWrapper.fromJson(GsonWrapper.java:47)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:86)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:80)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:66)
	... 7 more
Caused by: java.lang.NullPointerException: uri
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:208)
	at org.jclouds.cloudservers.domain.RateLimit.<init>(RateLimit.java:159)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeWithParameterizedConstructorSerializeWithDelegate.newInstance(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:219)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeWithParameterizedConstructorSerializeWithDelegate.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:198)
	at org.jclouds.json.internal.IgnoreNullSetTypeAdapterFactory$1.read(IgnoreNullSetTypeAdapterFactory.java:69)
	at org.jclouds.json.internal.IgnoreNullSetTypeAdapterFactory$1.read(IgnoreNullSetTypeAdapterFactory.java:56)
	at com.google.gson.TypeAdapter$1.read(TypeAdapter.java:199)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:245)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeWithParameterizedConstructorSerializeWithDelegate.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:181)
	at org.jclouds.json.internal.IgnoreNullMapTypeAdapterFactory$1.read(IgnoreNullMapTypeAdapterFactory.java:74)
	at org.jclouds.json.internal.IgnoreNullMapTypeAdapterFactory$1.read(IgnoreNullMapTypeAdapterFactory.java:58)
	at com.google.gson.TypeAdapter$1.read(TypeAdapter.java:199)
	at com.google.gson.Gson.fromJson(Gson.java:791)
	at com.google.gson.Gson.fromJson(Gson.java:757)
	at com.google.gson.Gson.fromJson(Gson.java:706)
	at org.jclouds.json.internal.GsonWrapper.fromJson(GsonWrapper.java:47)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:86)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:80)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:66)
	... 7 more
testListSharedIpGroupsDetail(org.jclouds.rackspace.cloudservers.CloudServersUSClientLiveTest)  Time elapsed: 0.534 sec  <<< FAILURE!
java.lang.AssertionError: SharedIpGroup{id=12459, name=ever5257.cscreateSharedIpGroup-208249245, servers=null}
	at org.jclouds.cloudservers.CloudServersClientLiveTest.testListSharedIpGroupsDetail(CloudServersClientLiveTest.java:238)
	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:616)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:702)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219)
	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:768)
	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:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
testCreateSharedIpGroup(org.jclouds.rackspace.cloudservers.CloudServersUSClientLiveTest)  Time elapsed: 1.045 sec  <<< FAILURE!
java.lang.NullPointerException
	at org.jclouds.cloudservers.CloudServersClientLiveTest.testCreateSharedIpGroup(CloudServersClientLiveTest.java:275)
	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:616)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.InvokeMethodRunnable.runOne(InvokeMethodRunnable.java:46)
	at org.testng.internal.InvokeMethodRunnable.run(InvokeMethodRunnable.java:37)
	at org.testng.internal.MethodInvocationHelper.invokeWithTimeoutWithNoExecutor(MethodInvocationHelper.java:222)
	at org.testng.internal.MethodInvocationHelper.invokeWithTimeout(MethodInvocationHelper.java:211)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:717)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219)
	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:768)
	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:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
testRenameServer(org.jclouds.rackspace.cloudservers.CloudServersUSClientLiveTest)  Time elapsed: 0.016 sec  <<< FAILURE!
java.lang.reflect.UndeclaredThrowableException
	at $Proxy79.getServer(Unknown Source)
	at org.jclouds.cloudservers.CloudServersClientLiveTest.testRenameServer(CloudServersClientLiveTest.java:409)
	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:616)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.InvokeMethodRunnable.runOne(InvokeMethodRunnable.java:46)
	at org.testng.internal.InvokeMethodRunnable.run(InvokeMethodRunnable.java:37)
	at org.testng.internal.MethodInvocationHelper.invokeWithTimeoutWithNoExecutor(MethodInvocationHelper.java:222)
	at org.testng.internal.MethodInvocationHelper.invokeWithTimeout(MethodInvocationHelper.java:211)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:717)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219)
	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:768)
	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:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.InterruptedException
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1325)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:263)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:96)
	at org.jclouds.concurrent.ExceptionParsingListenableFuture.get(ExceptionParsingListenableFuture.java:76)
	at org.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
	... 27 more
Caused by: java.lang.InterruptedException
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1325)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:263)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:96)
	at org.jclouds.concurrent.ExceptionParsingListenableFuture.get(ExceptionParsingListenableFuture.java:76)
	at org.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
	... 27 more
testServerDetails(org.jclouds.rackspace.cloudservers.CloudServersUSClientLiveTest)  Time elapsed: 0.013 sec  <<< FAILURE!
java.lang.reflect.UndeclaredThrowableException
	at $Proxy79.getServer(Unknown Source)
	at org.jclouds.cloudservers.CloudServersClientLiveTest.testServerDetails(CloudServersClientLiveTest.java:342)
	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:616)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.InvokeMethodRunnable.runOne(InvokeMethodRunnable.java:46)
	at org.testng.internal.InvokeMethodRunnable.run(InvokeMethodRunnable.java:37)
	at org.testng.internal.MethodInvocationHelper.invokeWithTimeoutWithNoExecutor(MethodInvocationHelper.java:222)
	at org.testng.internal.MethodInvocationHelper.invokeWithTimeout(MethodInvocationHelper.java:211)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:717)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219)
	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:768)
	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:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.InterruptedException
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1325)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:263)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:96)
	at org.jclouds.concurrent.ExceptionParsingListenableFuture.get(ExceptionParsingListenableFuture.java:76)
	at org.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
	... 27 more
Caused by: java.lang.InterruptedException
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1325)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:263)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:96)
	at org.jclouds.concurrent.ExceptionParsingListenableFuture.get(ExceptionParsingListenableFuture.java:76)
	at org.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
	... 27 more
testCreateTwoNodesWithRunScript(org.jclouds.rackspace.cloudservers.compute.CloudServersUSComputeServiceLiveTest)  Time elapsed: 274.973 sec  <<< FAILURE!
org.jclouds.compute.RunNodesException: error running 2 nodes group(cs-) location(cloudservers-us) image(125) size(1) options({taskName=bootstrap, scriptPresent=true})
Execution failures:
0 error[s]
Node failures:
1) IllegalArgumentException on node 21144541:
java.lang.IllegalArgumentException: cannot create admin user 'root'; ensure jclouds is not running as root, or specify an explicit non-root username in AdminAccess
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:92)
	at org.jclouds.scriptbuilder.statements.login.AdminAccess.render(AdminAccess.java:410)
	at org.jclouds.scriptbuilder.domain.StatementList.render(StatementList.java:49)
	at org.jclouds.scriptbuilder.domain.CreateRunScript.addUnixRunScript(CreateRunScript.java:139)
	at org.jclouds.scriptbuilder.domain.CreateRunScript.render(CreateRunScript.java:113)
	at org.jclouds.scriptbuilder.domain.StatementList.render(StatementList.java:49)
	at org.jclouds.scriptbuilder.domain.SwitchArg.render(SwitchArg.java:93)
	at org.jclouds.scriptbuilder.ScriptBuilder.render(ScriptBuilder.java:129)
	at org.jclouds.scriptbuilder.InitScript.render(InitScript.java:329)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.doCall(RunScriptOnNodeAsInitScriptUsingSsh.java:110)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.future(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:70)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.doCall(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:62)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.call(RunScriptOnNodeAsInitScriptUsingSsh.java:79)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:163)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.apply(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:184)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.apply(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:60)
	at com.google.common.util.concurrent.Futures$3.apply(Futures.java:376)
	at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:518)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
2) IllegalArgumentException on node 21144542:
java.lang.IllegalArgumentException: cannot create admin user 'root'; ensure jclouds is not running as root, or specify an explicit non-root username in AdminAccess
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:92)
	at org.jclouds.scriptbuilder.statements.login.AdminAccess.render(AdminAccess.java:410)
	at org.jclouds.scriptbuilder.domain.StatementList.render(StatementList.java:49)
	at org.jclouds.scriptbuilder.domain.CreateRunScript.addUnixRunScript(CreateRunScript.java:139)
	at org.jclouds.scriptbuilder.domain.CreateRunScript.render(CreateRunScript.java:113)
	at org.jclouds.scriptbuilder.domain.StatementList.render(StatementList.java:49)
	at org.jclouds.scriptbuilder.domain.SwitchArg.render(SwitchArg.java:93)
	at org.jclouds.scriptbuilder.ScriptBuilder.render(ScriptBuilder.java:129)
	at org.jclouds.scriptbuilder.InitScript.render(InitScript.java:329)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.doCall(RunScriptOnNodeAsInitScriptUsingSsh.java:110)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.future(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:70)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.doCall(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:62)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.call(RunScriptOnNodeAsInitScriptUsingSsh.java:79)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:163)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.apply(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:184)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.apply(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:60)
	at com.google.common.util.concurrent.Futures$3.apply(Futures.java:376)
	at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:518)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
2 error[s]
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:221)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testCreateTwoNodesWithRunScript(BaseComputeServiceLiveTest.java:339)
	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:616)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:702)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219)
	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:768)
	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:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
