-------------------------------------------------------------------------------
Test set: TestSuite
-------------------------------------------------------------------------------
Tests run: 118, Failures: 15, Errors: 0, Skipped: 9, Time elapsed: 370.204 sec <<< FAILURE!
testImages(org.jclouds.rimuhosting.miro.RimuHostingClientLiveTest)  Time elapsed: 0.841 sec  <<< FAILURE!
java.lang.AssertionError: lenny not found expected:<true> but was:<false>
	at org.testng.Assert.fail(Assert.java:89)
	at org.testng.Assert.failNotEquals(Assert.java:489)
	at org.testng.Assert.assertTrue(Assert.java:37)
	at org.jclouds.rimuhosting.miro.RimuHostingClientLiveTest.testImages(RimuHostingClientLiveTest.java:85)
testCreateAndRunAService(org.jclouds.rimuhosting.miro.compute.RimuHostingComputeServiceLiveTest)  Time elapsed: 0.985 sec  <<< FAILURE!
java.lang.IllegalArgumentException: Object 'rimuhosting.jcloudss' doesn't match dns naming constraints. Reason: Should have lowercase ASCII letters, numbers, or dashes.
	at org.jclouds.predicates.validators.DnsNameValidator.exception(DnsNameValidator.java:78)
	at org.jclouds.predicates.validators.DnsNameValidator.validate(DnsNameValidator.java:70)
	at org.jclouds.predicates.validators.DnsNameValidator.validate(DnsNameValidator.java:40)
	at org.jclouds.compute.internal.FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.checkGroup(FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.java:127)
	at org.jclouds.compute.internal.FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.uniqueNameForGroup(FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.java:133)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.getNextNames(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:189)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:124)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:213)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:229)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.createAndRunAServiceInGroup(BaseComputeServiceLiveTest.java:653)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testCreateAndRunAService(BaseComputeServiceLiveTest.java:640)
	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: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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
testTemplateBuilderCanFind(org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest)  Time elapsed: 0.004 sec  <<< FAILURE!
java.util.NoSuchElementException: no image matched predicate: And(nullEqualToIsParentOrIsGrandparentOfCurrentLocation(),And(osFamily(debian),osVersion(^5.0$),os64Bit(false)))
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.throwNoSuchElementExceptionAfterLoggingImageIds(TemplateBuilderImpl.java:722)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.findSupportedImages(TemplateBuilderImpl.java:696)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.build(TemplateBuilderImpl.java:678)
	at org.jclouds.compute.internal.BaseTemplateBuilderLiveTest.testTemplateBuilderCanFind(BaseTemplateBuilderLiveTest.java:141)
	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: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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
testTemplateBuilderCanFind(org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest)  Time elapsed: 0.001 sec  <<< FAILURE!
java.util.NoSuchElementException: no image matched predicate: And(nullEqualToIsParentOrIsGrandparentOfCurrentLocation(),And(osFamily(ubuntu),osVersion(^10.10$),os64Bit(true)))
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.throwNoSuchElementExceptionAfterLoggingImageIds(TemplateBuilderImpl.java:722)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.findSupportedImages(TemplateBuilderImpl.java:696)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.build(TemplateBuilderImpl.java:678)
	at org.jclouds.compute.internal.BaseTemplateBuilderLiveTest.testTemplateBuilderCanFind(BaseTemplateBuilderLiveTest.java:141)
	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: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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
testTemplateBuilderCanFind(org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest)  Time elapsed: 0.009 sec  <<< FAILURE!
java.util.NoSuchElementException: no image matched predicate: And(nullEqualToIsParentOrIsGrandparentOfCurrentLocation(),And(osFamily(ubuntu),osVersion(^11.04$),os64Bit(false)))
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.throwNoSuchElementExceptionAfterLoggingImageIds(TemplateBuilderImpl.java:722)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.findSupportedImages(TemplateBuilderImpl.java:696)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.build(TemplateBuilderImpl.java:678)
	at org.jclouds.compute.internal.BaseTemplateBuilderLiveTest.testTemplateBuilderCanFind(BaseTemplateBuilderLiveTest.java:141)
	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: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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
testTemplateBuilderCanFind(org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest)  Time elapsed: 0 sec  <<< FAILURE!
java.util.NoSuchElementException: no image matched predicate: And(nullEqualToIsParentOrIsGrandparentOfCurrentLocation(),And(osFamily(debian),osVersion(^5.0$),os64Bit(true)))
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.throwNoSuchElementExceptionAfterLoggingImageIds(TemplateBuilderImpl.java:722)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.findSupportedImages(TemplateBuilderImpl.java:696)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.build(TemplateBuilderImpl.java:678)
	at org.jclouds.compute.internal.BaseTemplateBuilderLiveTest.testTemplateBuilderCanFind(BaseTemplateBuilderLiveTest.java:141)
	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: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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
testTemplateBuilderCanFind(org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest)  Time elapsed: 0.004 sec  <<< FAILURE!
java.util.NoSuchElementException: no image matched predicate: And(nullEqualToIsParentOrIsGrandparentOfCurrentLocation(),And(osFamily(ubuntu),osVersion(^10.10$),os64Bit(false)))
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.throwNoSuchElementExceptionAfterLoggingImageIds(TemplateBuilderImpl.java:722)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.findSupportedImages(TemplateBuilderImpl.java:696)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.build(TemplateBuilderImpl.java:678)
	at org.jclouds.compute.internal.BaseTemplateBuilderLiveTest.testTemplateBuilderCanFind(BaseTemplateBuilderLiveTest.java:141)
	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: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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
testTemplateBuilderCanFind(org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest)  Time elapsed: 0 sec  <<< FAILURE!
java.util.NoSuchElementException: no image matched predicate: And(nullEqualToIsParentOrIsGrandparentOfCurrentLocation(),And(osFamily(ubuntu),osVersion(^11.04$),os64Bit(true)))
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.throwNoSuchElementExceptionAfterLoggingImageIds(TemplateBuilderImpl.java:722)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.findSupportedImages(TemplateBuilderImpl.java:696)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.build(TemplateBuilderImpl.java:678)
	at org.jclouds.compute.internal.BaseTemplateBuilderLiveTest.testTemplateBuilderCanFind(BaseTemplateBuilderLiveTest.java:141)
	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: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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
testTemplateBuilderCannotFind(org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest)  Time elapsed: 0.002 sec  <<< FAILURE!
org.testng.TestException: 
Method BaseTemplateBuilderLiveTest.testTemplateBuilderCannotFind(org.jclouds.compute.domain.OsFamilyVersion64Bit)[pri:0, instance:org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest@3d3e58d4] should have thrown an exception of class java.util.NoSuchElementException
	at org.testng.internal.Invoker.handleInvocationResults(Invoker.java:1500)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:751)
	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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
testTemplateBuilderCannotFind(org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest)  Time elapsed: 0.002 sec  <<< FAILURE!
org.testng.TestException: 
Method BaseTemplateBuilderLiveTest.testTemplateBuilderCannotFind(org.jclouds.compute.domain.OsFamilyVersion64Bit)[pri:0, instance:org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest@3d3e58d4] should have thrown an exception of class java.util.NoSuchElementException
	at org.testng.internal.Invoker.handleInvocationResults(Invoker.java:1500)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:751)
	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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
testTemplateBuilderCannotFind(org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest)  Time elapsed: 0 sec  <<< FAILURE!
org.testng.TestException: 
Method BaseTemplateBuilderLiveTest.testTemplateBuilderCannotFind(org.jclouds.compute.domain.OsFamilyVersion64Bit)[pri:0, instance:org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest@3d3e58d4] should have thrown an exception of class java.util.NoSuchElementException
	at org.testng.internal.Invoker.handleInvocationResults(Invoker.java:1500)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:751)
	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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
testTemplateBuilderCannotFind(org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest)  Time elapsed: 0.007 sec  <<< FAILURE!
org.testng.TestException: 
Method BaseTemplateBuilderLiveTest.testTemplateBuilderCannotFind(org.jclouds.compute.domain.OsFamilyVersion64Bit)[pri:0, instance:org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest@3d3e58d4] should have thrown an exception of class java.util.NoSuchElementException
	at org.testng.internal.Invoker.handleInvocationResults(Invoker.java:1500)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:751)
	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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
testTemplateBuilder(org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest)  Time elapsed: 0.004 sec  <<< FAILURE!
java.lang.AssertionError: expected:<11.04> but was:<12.04>
	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:171)
	at org.testng.Assert.assertEquals(Assert.java:181)
	at org.jclouds.rimuhosting.miro.compute.RimuHostingTemplateBuilderLiveTest.testTemplateBuilder(RimuHostingTemplateBuilderLiveTest.java:72)
testAScriptExecutionAfterBootWithBasicTemplate(org.jclouds.rimuhosting.miro.compute.RimuHostingComputeServiceLiveTest)  Time elapsed: 4.117 sec  <<< FAILURE!
java.lang.IllegalArgumentException: Object 'rimuhosting.jcloudsr' doesn't match dns naming constraints. Reason: Should have lowercase ASCII letters, numbers, or dashes.
	at org.jclouds.predicates.validators.DnsNameValidator.exception(DnsNameValidator.java:78)
	at org.jclouds.predicates.validators.DnsNameValidator.validate(DnsNameValidator.java:70)
	at org.jclouds.predicates.validators.DnsNameValidator.validate(DnsNameValidator.java:40)
	at org.jclouds.compute.internal.FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.checkGroup(FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.java:127)
	at org.jclouds.compute.internal.FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.uniqueNameForGroup(FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.java:133)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.getNextNames(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:189)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:124)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:213)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:229)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testAScriptExecutionAfterBootWithBasicTemplate(BaseComputeServiceLiveTest.java:220)
	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: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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
testConcurrentUseOfComputeServiceToCreateNodes(org.jclouds.rimuhosting.miro.compute.RimuHostingComputeServiceLiveTest)  Time elapsed: 4.715 sec  <<< FAILURE!
java.util.concurrent.ExecutionException: org.jclouds.compute.RunNodesException: error running 1 node group(twin0) location(DCDALLAS) image(ubuntu1204.64) size(MIRO4B) options({blockOnPort:seconds=22:300, inboundPorts=[22, 8080]})
Execution failures:
1) ExecutionException on twin0-71d:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST https://api.rimuhosting.com/r/orders/new-vps HTTP/1.1 failed with response: HTTP/1.1 406 Not Acceptable; content: [{ "post_new_vps_response" : { "status_message" : "Not Acceptable"
  , "status_code" : 406
  , "response_created_time" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
  , "error_info" : { "error_class" : "ValidationErrors"
      , "full_error_message" : "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."
      , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
      , "error_title" : "Validation Problem"
      , "field_name" : "misc_error"}
  , "extended_error_infos" : [{ "error_class" : "ValidationError"
        , "full_error_message" : "domain_name: That does not look like a valid domain name."
        , "human_readable_message" : "That does not look like a valid domain name."
        , "error_title" : "Validation Problem"
        , "field_name" : "domain_name"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "hostname: Top level domain names not permitted."
        , "human_readable_message" : "Top level domain names not permitted."
        , "error_title" : "Validation Problem"
        , "field_name" : "hostname"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "memory_mb: The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "human_readable_message" : "The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "error_title" : "Validation Problem"
        , "field_name" : "memory_mb"}]
  , "response_type" : "ERROR"
  , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
  , "redirect_uri" : null
  , "response_display_duration_type" : "REGULAR"
  , "setup_messages" : ["Selected user as the logged in user: Ivan Meredith"
    , "Selected billing details as the first 'wire' billing details found for the user: Wire Transfer"
    , "No VPS paramters provided, using default values."
    , "'memory_mb' not provided, setting to 160MB."
    , "'disk_space_mb' not provided, setting to 4GB."
    , "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."]
  , "about_order" : { "order_oid" : 0
      , "domain_name" : "twin0-71d"
      , "slug" : null
      , "billing_oid" : 50081656
      , "is_on_customers_own_physical_server" : false
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "host_server_oid" : null
      , "server_type" : "VPS"
      , "data_transfer_allowance" : { "data_transfer_gb" : 6
          , "data_transfer" : "6"}
      , "billing_info" : { "monthly_recurring_fee" : 17.16
          , "monthly_recurring_amt" : { "amt" : 17.16
              , "currency" : "CUR_USD"
              , "amt_usd" : 17.16}
          , "suspended_date" : null
          , "prepaid_until" : null
          , "order_date" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
          , "cancellation_date" : null}
      , "location" : { "data_center_location_code" : "DCDALLAS"
          , "data_center_location_name" : "Dallas"
          , "data_center_location_country_2ltr" : "US"}
      , "allocated_ips" : null
      , "running_state" : "NOTRUNNING"
      , "distro" : "ubuntu1204.64"
      , "order_description" : "LaunchtimeVPSDal; 160MB memory; 4GB disk image; Ubuntu 12.04 64-bit (Precise Pangolin), 5 yr long term support (LTS); Control Panel: none; Data Transfer: 6GB of Data Transfer; Location: Dallas; Not running; 17.16 USD/m"
      , "meta_data" : []}
  , "new_order_request" : { "billing_oid" : 0
      , "user_oid" : 0
      , "host_server_oid" : null
      , "ip_request" : { "num_ips" : 1
          , "extra_ip_reason" : ""
          , "requested_ips" : null}
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "pricing_plan_code" : "MIRO4B"
      , "dc_location" : null
      , "vps_type" : null
      , "instantiation_options" : { "domain_name" : "twin0-71d"
          , "control_panel" : "none"
          , "password" : "faufuwu92"
          , "distro" : "ubuntu1204.64"}
      , "instantiation_via_clone_options" : null
      , "file_injection_data" : null
      , "is_just_minimal_init" : null
      , "meta_data" : []}
  , "running_vps_info" : null}}
]
	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:294)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:281)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: POST https://api.rimuhosting.com/r/orders/new-vps HTTP/1.1 failed with response: HTTP/1.1 406 Not Acceptable; content: [{ "post_new_vps_response" : { "status_message" : "Not Acceptable"
  , "status_code" : 406
  , "response_created_time" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
  , "error_info" : { "error_class" : "ValidationErrors"
      , "full_error_message" : "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."
      , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
      , "error_title" : "Validation Problem"
      , "field_name" : "misc_error"}
  , "extended_error_infos" : [{ "error_class" : "ValidationError"
        , "full_error_message" : "domain_name: That does not look like a valid domain name."
        , "human_readable_message" : "That does not look like a valid domain name."
        , "error_title" : "Validation Problem"
        , "field_name" : "domain_name"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "hostname: Top level domain names not permitted."
        , "human_readable_message" : "Top level domain names not permitted."
        , "error_title" : "Validation Problem"
        , "field_name" : "hostname"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "memory_mb: The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "human_readable_message" : "The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "error_title" : "Validation Problem"
        , "field_name" : "memory_mb"}]
  , "response_type" : "ERROR"
  , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
  , "redirect_uri" : null
  , "response_display_duration_type" : "REGULAR"
  , "setup_messages" : ["Selected user as the logged in user: Ivan Meredith"
    , "Selected billing details as the first 'wire' billing details found for the user: Wire Transfer"
    , "No VPS paramters provided, using default values."
    , "'memory_mb' not provided, setting to 160MB."
    , "'disk_space_mb' not provided, setting to 4GB."
    , "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."]
  , "about_order" : { "order_oid" : 0
      , "domain_name" : "twin0-71d"
      , "slug" : null
      , "billing_oid" : 50081656
      , "is_on_customers_own_physical_server" : false
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "host_server_oid" : null
      , "server_type" : "VPS"
      , "data_transfer_allowance" : { "data_transfer_gb" : 6
          , "data_transfer" : "6"}
      , "billing_info" : { "monthly_recurring_fee" : 17.16
          , "monthly_recurring_amt" : { "amt" : 17.16
              , "currency" : "CUR_USD"
              , "amt_usd" : 17.16}
          , "suspended_date" : null
          , "prepaid_until" : null
          , "order_date" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
          , "cancellation_date" : null}
      , "location" : { "data_center_location_code" : "DCDALLAS"
          , "data_center_location_name" : "Dallas"
          , "data_center_location_country_2ltr" : "US"}
      , "allocated_ips" : null
      , "running_state" : "NOTRUNNING"
      , "distro" : "ubuntu1204.64"
      , "order_description" : "LaunchtimeVPSDal; 160MB memory; 4GB disk image; Ubuntu 12.04 64-bit (Precise Pangolin), 5 yr long term support (LTS); Control Panel: none; Data Transfer: 6GB of Data Transfer; Location: Dallas; Not running; 17.16 USD/m"
      , "meta_data" : []}
  , "new_order_request" : { "billing_oid" : 0
      , "user_oid" : 0
      , "host_server_oid" : null
      , "ip_request" : { "num_ips" : 1
          , "extra_ip_reason" : ""
          , "requested_ips" : null}
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "pricing_plan_code" : "MIRO4B"
      , "dc_location" : null
      , "vps_type" : null
      , "instantiation_options" : { "domain_name" : "twin0-71d"
          , "control_panel" : "none"
          , "password" : "faufuwu92"
          , "distro" : "ubuntu1204.64"}
      , "instantiation_via_clone_options" : null
      , "file_injection_data" : null
      , "is_just_minimal_init" : null
      , "meta_data" : []}
  , "running_vps_info" : null}}
]
	at org.jclouds.http.handlers.CloseContentAndSetExceptionErrorHandler.handleError(CloseContentAndSetExceptionErrorHandler.java:44)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:69)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.shouldContinue(BaseHttpCommandExecutorService.java:197)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:167)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:135)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.submit(BaseHttpCommandExecutorService.java:132)
	at org.jclouds.http.TransformingHttpCommandExecutorServiceImpl.submit(TransformingHttpCommandExecutorServiceImpl.java:54)
	at org.jclouds.http.TransformingHttpCommandImpl.execute(TransformingHttpCommandImpl.java:73)
	at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFutureForHttpRequestMappedToMethodAndArgs(AsyncRestClientProxy.java:248)
	at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:148)
	at $Proxy68.createServer(Unknown Source)
	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.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
	at $Proxy69.createServer(Unknown Source)
	at org.jclouds.rimuhosting.miro.compute.strategy.RimuHostingComputeServiceAdapter.createNodeWithGroupEncodedIntoName(RimuHostingComputeServiceAdapter.java:81)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:186)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.submit(BaseHttpCommandExecutorService.java:132)
	at org.jclouds.http.TransformingHttpCommandExecutorServiceImpl.submit(TransformingHttpCommandExecutorServiceImpl.java:54)
	at org.jclouds.http.TransformingHttpCommandImpl.execute(TransformingHttpCommandImpl.java:73)
	at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFutureForHttpRequestMappedToMethodAndArgs(AsyncRestClientProxy.java:248)
	at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:148)
	at $Proxy68.createServer(Unknown Source)
	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.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
	at $Proxy69.createServer(Unknown Source)
	at org.jclouds.rimuhosting.miro.compute.strategy.RimuHostingComputeServiceAdapter.createNodeWithGroupEncodedIntoName(RimuHostingComputeServiceAdapter.java:81)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:186)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:213)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:229)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:434)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:432)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:213)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:229)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:434)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:432)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
1 error[s]
Node failures:
0 error[s]
	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:294)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:267)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:96)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testConcurrentUseOfComputeServiceToCreateNodes(BaseComputeServiceLiveTest.java:444)
	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: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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.compute.RunNodesException: error running 1 node group(twin0) location(DCDALLAS) image(ubuntu1204.64) size(MIRO4B) options({blockOnPort:seconds=22:300, inboundPorts=[22, 8080]})
Execution failures:
1) ExecutionException on twin0-71d:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST https://api.rimuhosting.com/r/orders/new-vps HTTP/1.1 failed with response: HTTP/1.1 406 Not Acceptable; content: [{ "post_new_vps_response" : { "status_message" : "Not Acceptable"
  , "status_code" : 406
  , "response_created_time" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
  , "error_info" : { "error_class" : "ValidationErrors"
      , "full_error_message" : "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."
      , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
      , "error_title" : "Validation Problem"
      , "field_name" : "misc_error"}
  , "extended_error_infos" : [{ "error_class" : "ValidationError"
        , "full_error_message" : "domain_name: That does not look like a valid domain name."
        , "human_readable_message" : "That does not look like a valid domain name."
        , "error_title" : "Validation Problem"
        , "field_name" : "domain_name"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "hostname: Top level domain names not permitted."
        , "human_readable_message" : "Top level domain names not permitted."
        , "error_title" : "Validation Problem"
        , "field_name" : "hostname"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "memory_mb: The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "human_readable_message" : "The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "error_title" : "Validation Problem"
        , "field_name" : "memory_mb"}]
  , "response_type" : "ERROR"
  , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
  , "redirect_uri" : null
  , "response_display_duration_type" : "REGULAR"
  , "setup_messages" : ["Selected user as the logged in user: Ivan Meredith"
    , "Selected billing details as the first 'wire' billing details found for the user: Wire Transfer"
    , "No VPS paramters provided, using default values."
    , "'memory_mb' not provided, setting to 160MB."
    , "'disk_space_mb' not provided, setting to 4GB."
    , "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."]
  , "about_order" : { "order_oid" : 0
      , "domain_name" : "twin0-71d"
      , "slug" : null
      , "billing_oid" : 50081656
      , "is_on_customers_own_physical_server" : false
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "host_server_oid" : null
      , "server_type" : "VPS"
      , "data_transfer_allowance" : { "data_transfer_gb" : 6
          , "data_transfer" : "6"}
      , "billing_info" : { "monthly_recurring_fee" : 17.16
          , "monthly_recurring_amt" : { "amt" : 17.16
              , "currency" : "CUR_USD"
              , "amt_usd" : 17.16}
          , "suspended_date" : null
          , "prepaid_until" : null
          , "order_date" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
          , "cancellation_date" : null}
      , "location" : { "data_center_location_code" : "DCDALLAS"
          , "data_center_location_name" : "Dallas"
          , "data_center_location_country_2ltr" : "US"}
      , "allocated_ips" : null
      , "running_state" : "NOTRUNNING"
      , "distro" : "ubuntu1204.64"
      , "order_description" : "LaunchtimeVPSDal; 160MB memory; 4GB disk image; Ubuntu 12.04 64-bit (Precise Pangolin), 5 yr long term support (LTS); Control Panel: none; Data Transfer: 6GB of Data Transfer; Location: Dallas; Not running; 17.16 USD/m"
      , "meta_data" : []}
  , "new_order_request" : { "billing_oid" : 0
      , "user_oid" : 0
      , "host_server_oid" : null
      , "ip_request" : { "num_ips" : 1
          , "extra_ip_reason" : ""
          , "requested_ips" : null}
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "pricing_plan_code" : "MIRO4B"
      , "dc_location" : null
      , "vps_type" : null
      , "instantiation_options" : { "domain_name" : "twin0-71d"
          , "control_panel" : "none"
          , "password" : "faufuwu92"
          , "distro" : "ubuntu1204.64"}
      , "instantiation_via_clone_options" : null
      , "file_injection_data" : null
      , "is_just_minimal_init" : null
      , "meta_data" : []}
  , "running_vps_info" : null}}
]
	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:294)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:281)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: POST https://api.rimuhosting.com/r/orders/new-vps HTTP/1.1 failed with response: HTTP/1.1 406 Not Acceptable; content: [{ "post_new_vps_response" : { "status_message" : "Not Acceptable"
  , "status_code" : 406
  , "response_created_time" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
  , "error_info" : { "error_class" : "ValidationErrors"
      , "full_error_message" : "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."
      , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
      , "error_title" : "Validation Problem"
      , "field_name" : "misc_error"}
  , "extended_error_infos" : [{ "error_class" : "ValidationError"
        , "full_error_message" : "domain_name: That does not look like a valid domain name."
        , "human_readable_message" : "That does not look like a valid domain name."
        , "error_title" : "Validation Problem"
        , "field_name" : "domain_name"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "hostname: Top level domain names not permitted."
        , "human_readable_message" : "Top level domain names not permitted."
        , "error_title" : "Validation Problem"
        , "field_name" : "hostname"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "memory_mb: The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "human_readable_message" : "The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "error_title" : "Validation Problem"
        , "field_name" : "memory_mb"}]
  , "response_type" : "ERROR"
  , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
  , "redirect_uri" : null
  , "response_display_duration_type" : "REGULAR"
  , "setup_messages" : ["Selected user as the logged in user: Ivan Meredith"
    , "Selected billing details as the first 'wire' billing details found for the user: Wire Transfer"
    , "No VPS paramters provided, using default values."
    , "'memory_mb' not provided, setting to 160MB."
    , "'disk_space_mb' not provided, setting to 4GB."
    , "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."]
  , "about_order" : { "order_oid" : 0
      , "domain_name" : "twin0-71d"
      , "slug" : null
      , "billing_oid" : 50081656
      , "is_on_customers_own_physical_server" : false
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "host_server_oid" : null
      , "server_type" : "VPS"
      , "data_transfer_allowance" : { "data_transfer_gb" : 6
          , "data_transfer" : "6"}
      , "billing_info" : { "monthly_recurring_fee" : 17.16
          , "monthly_recurring_amt" : { "amt" : 17.16
              , "currency" : "CUR_USD"
              , "amt_usd" : 17.16}
          , "suspended_date" : null
          , "prepaid_until" : null
          , "order_date" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
          , "cancellation_date" : null}
      , "location" : { "data_center_location_code" : "DCDALLAS"
          , "data_center_location_name" : "Dallas"
          , "data_center_location_country_2ltr" : "US"}
      , "allocated_ips" : null
      , "running_state" : "NOTRUNNING"
      , "distro" : "ubuntu1204.64"
      , "order_description" : "LaunchtimeVPSDal; 160MB memory; 4GB disk image; Ubuntu 12.04 64-bit (Precise Pangolin), 5 yr long term support (LTS); Control Panel: none; Data Transfer: 6GB of Data Transfer; Location: Dallas; Not running; 17.16 USD/m"
      , "meta_data" : []}
  , "new_order_request" : { "billing_oid" : 0
      , "user_oid" : 0
      , "host_server_oid" : null
      , "ip_request" : { "num_ips" : 1
          , "extra_ip_reason" : ""
          , "requested_ips" : null}
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "pricing_plan_code" : "MIRO4B"
      , "dc_location" : null
      , "vps_type" : null
      , "instantiation_options" : { "domain_name" : "twin0-71d"
          , "control_panel" : "none"
          , "password" : "faufuwu92"
          , "distro" : "ubuntu1204.64"}
      , "instantiation_via_clone_options" : null
      , "file_injection_data" : null
      , "is_just_minimal_init" : null
      , "meta_data" : []}
  , "running_vps_info" : null}}
]
	at org.jclouds.http.handlers.CloseContentAndSetExceptionErrorHandler.handleError(CloseContentAndSetExceptionErrorHandler.java:44)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:69)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.shouldContinue(BaseHttpCommandExecutorService.java:197)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:167)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:135)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.submit(BaseHttpCommandExecutorService.java:132)
	at org.jclouds.http.TransformingHttpCommandExecutorServiceImpl.submit(TransformingHttpCommandExecutorServiceImpl.java:54)
	at org.jclouds.http.TransformingHttpCommandImpl.execute(TransformingHttpCommandImpl.java:73)
	at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFutureForHttpRequestMappedToMethodAndArgs(AsyncRestClientProxy.java:248)
	at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:148)
	at $Proxy68.createServer(Unknown Source)
	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.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
	at $Proxy69.createServer(Unknown Source)
	at org.jclouds.rimuhosting.miro.compute.strategy.RimuHostingComputeServiceAdapter.createNodeWithGroupEncodedIntoName(RimuHostingComputeServiceAdapter.java:81)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:186)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.submit(BaseHttpCommandExecutorService.java:132)
	at org.jclouds.http.TransformingHttpCommandExecutorServiceImpl.submit(TransformingHttpCommandExecutorServiceImpl.java:54)
	at org.jclouds.http.TransformingHttpCommandImpl.execute(TransformingHttpCommandImpl.java:73)
	at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFutureForHttpRequestMappedToMethodAndArgs(AsyncRestClientProxy.java:248)
	at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:148)
	at $Proxy68.createServer(Unknown Source)
	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.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
	at $Proxy69.createServer(Unknown Source)
	at org.jclouds.rimuhosting.miro.compute.strategy.RimuHostingComputeServiceAdapter.createNodeWithGroupEncodedIntoName(RimuHostingComputeServiceAdapter.java:81)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:186)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:213)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:229)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:434)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:432)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:213)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:229)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:434)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:432)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
1 error[s]
Node failures:
0 error[s]
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:221)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:229)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:434)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:432)
	... 5 more
Caused by: org.jclouds.http.HttpResponseException: command: POST https://api.rimuhosting.com/r/orders/new-vps HTTP/1.1 failed with response: HTTP/1.1 406 Not Acceptable; content: [{ "post_new_vps_response" : { "status_message" : "Not Acceptable"
  , "status_code" : 406
  , "response_created_time" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
  , "error_info" : { "error_class" : "ValidationErrors"
      , "full_error_message" : "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."
      , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
      , "error_title" : "Validation Problem"
      , "field_name" : "misc_error"}
  , "extended_error_infos" : [{ "error_class" : "ValidationError"
        , "full_error_message" : "domain_name: That does not look like a valid domain name."
        , "human_readable_message" : "That does not look like a valid domain name."
        , "error_title" : "Validation Problem"
        , "field_name" : "domain_name"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "hostname: Top level domain names not permitted."
        , "human_readable_message" : "Top level domain names not permitted."
        , "error_title" : "Validation Problem"
        , "field_name" : "hostname"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "memory_mb: The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "human_readable_message" : "The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "error_title" : "Validation Problem"
        , "field_name" : "memory_mb"}]
  , "response_type" : "ERROR"
  , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
  , "redirect_uri" : null
  , "response_display_duration_type" : "REGULAR"
  , "setup_messages" : ["Selected user as the logged in user: Ivan Meredith"
    , "Selected billing details as the first 'wire' billing details found for the user: Wire Transfer"
    , "No VPS paramters provided, using default values."
    , "'memory_mb' not provided, setting to 160MB."
    , "'disk_space_mb' not provided, setting to 4GB."
    , "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."]
  , "about_order" : { "order_oid" : 0
      , "domain_name" : "twin0-71d"
      , "slug" : null
      , "billing_oid" : 50081656
      , "is_on_customers_own_physical_server" : false
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "host_server_oid" : null
      , "server_type" : "VPS"
      , "data_transfer_allowance" : { "data_transfer_gb" : 6
          , "data_transfer" : "6"}
      , "billing_info" : { "monthly_recurring_fee" : 17.16
          , "monthly_recurring_amt" : { "amt" : 17.16
              , "currency" : "CUR_USD"
              , "amt_usd" : 17.16}
          , "suspended_date" : null
          , "prepaid_until" : null
          , "order_date" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
          , "cancellation_date" : null}
      , "location" : { "data_center_location_code" : "DCDALLAS"
          , "data_center_location_name" : "Dallas"
          , "data_center_location_country_2ltr" : "US"}
      , "allocated_ips" : null
      , "running_state" : "NOTRUNNING"
      , "distro" : "ubuntu1204.64"
      , "order_description" : "LaunchtimeVPSDal; 160MB memory; 4GB disk image; Ubuntu 12.04 64-bit (Precise Pangolin), 5 yr long term support (LTS); Control Panel: none; Data Transfer: 6GB of Data Transfer; Location: Dallas; Not running; 17.16 USD/m"
      , "meta_data" : []}
  , "new_order_request" : { "billing_oid" : 0
      , "user_oid" : 0
      , "host_server_oid" : null
      , "ip_request" : { "num_ips" : 1
          , "extra_ip_reason" : ""
          , "requested_ips" : null}
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "pricing_plan_code" : "MIRO4B"
      , "dc_location" : null
      , "vps_type" : null
      , "instantiation_options" : { "domain_name" : "twin0-71d"
          , "control_panel" : "none"
          , "password" : "faufuwu92"
          , "distro" : "ubuntu1204.64"}
      , "instantiation_via_clone_options" : null
      , "file_injection_data" : null
      , "is_just_minimal_init" : null
      , "meta_data" : []}
  , "running_vps_info" : null}}
]
	at org.jclouds.http.handlers.CloseContentAndSetExceptionErrorHandler.handleError(CloseContentAndSetExceptionErrorHandler.java:44)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:69)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.shouldContinue(BaseHttpCommandExecutorService.java:197)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:167)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:135)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.submit(BaseHttpCommandExecutorService.java:132)
	at org.jclouds.http.TransformingHttpCommandExecutorServiceImpl.submit(TransformingHttpCommandExecutorServiceImpl.java:54)
	at org.jclouds.http.TransformingHttpCommandImpl.execute(TransformingHttpCommandImpl.java:73)
	at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFutureForHttpRequestMappedToMethodAndArgs(AsyncRestClientProxy.java:248)
	at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:148)
	at $Proxy68.createServer(Unknown Source)
	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.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
	at $Proxy69.createServer(Unknown Source)
	at org.jclouds.rimuhosting.miro.compute.strategy.RimuHostingComputeServiceAdapter.createNodeWithGroupEncodedIntoName(RimuHostingComputeServiceAdapter.java:81)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:186)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.submit(BaseHttpCommandExecutorService.java:132)
	at org.jclouds.http.TransformingHttpCommandExecutorServiceImpl.submit(TransformingHttpCommandExecutorServiceImpl.java:54)
	at org.jclouds.http.TransformingHttpCommandImpl.execute(TransformingHttpCommandImpl.java:73)
	at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFutureForHttpRequestMappedToMethodAndArgs(AsyncRestClientProxy.java:248)
	at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:148)
	at $Proxy68.createServer(Unknown Source)
	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.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
	at $Proxy69.createServer(Unknown Source)
	at org.jclouds.rimuhosting.miro.compute.strategy.RimuHostingComputeServiceAdapter.createNodeWithGroupEncodedIntoName(RimuHostingComputeServiceAdapter.java:81)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:186)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:213)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:229)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:434)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:432)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:213)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:229)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:434)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:432)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
1 error[s]
Node failures:
0 error[s]
	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:294)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:267)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:96)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testConcurrentUseOfComputeServiceToCreateNodes(BaseComputeServiceLiveTest.java:444)
	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: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:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.compute.RunNodesException: error running 1 node group(twin0) location(DCDALLAS) image(ubuntu1204.64) size(MIRO4B) options({blockOnPort:seconds=22:300, inboundPorts=[22, 8080]})
Execution failures:
1) ExecutionException on twin0-71d:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST https://api.rimuhosting.com/r/orders/new-vps HTTP/1.1 failed with response: HTTP/1.1 406 Not Acceptable; content: [{ "post_new_vps_response" : { "status_message" : "Not Acceptable"
  , "status_code" : 406
  , "response_created_time" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
  , "error_info" : { "error_class" : "ValidationErrors"
      , "full_error_message" : "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."
      , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
      , "error_title" : "Validation Problem"
      , "field_name" : "misc_error"}
  , "extended_error_infos" : [{ "error_class" : "ValidationError"
        , "full_error_message" : "domain_name: That does not look like a valid domain name."
        , "human_readable_message" : "That does not look like a valid domain name."
        , "error_title" : "Validation Problem"
        , "field_name" : "domain_name"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "hostname: Top level domain names not permitted."
        , "human_readable_message" : "Top level domain names not permitted."
        , "error_title" : "Validation Problem"
        , "field_name" : "hostname"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "memory_mb: The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "human_readable_message" : "The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "error_title" : "Validation Problem"
        , "field_name" : "memory_mb"}]
  , "response_type" : "ERROR"
  , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
  , "redirect_uri" : null
  , "response_display_duration_type" : "REGULAR"
  , "setup_messages" : ["Selected user as the logged in user: Ivan Meredith"
    , "Selected billing details as the first 'wire' billing details found for the user: Wire Transfer"
    , "No VPS paramters provided, using default values."
    , "'memory_mb' not provided, setting to 160MB."
    , "'disk_space_mb' not provided, setting to 4GB."
    , "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."]
  , "about_order" : { "order_oid" : 0
      , "domain_name" : "twin0-71d"
      , "slug" : null
      , "billing_oid" : 50081656
      , "is_on_customers_own_physical_server" : false
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "host_server_oid" : null
      , "server_type" : "VPS"
      , "data_transfer_allowance" : { "data_transfer_gb" : 6
          , "data_transfer" : "6"}
      , "billing_info" : { "monthly_recurring_fee" : 17.16
          , "monthly_recurring_amt" : { "amt" : 17.16
              , "currency" : "CUR_USD"
              , "amt_usd" : 17.16}
          , "suspended_date" : null
          , "prepaid_until" : null
          , "order_date" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
          , "cancellation_date" : null}
      , "location" : { "data_center_location_code" : "DCDALLAS"
          , "data_center_location_name" : "Dallas"
          , "data_center_location_country_2ltr" : "US"}
      , "allocated_ips" : null
      , "running_state" : "NOTRUNNING"
      , "distro" : "ubuntu1204.64"
      , "order_description" : "LaunchtimeVPSDal; 160MB memory; 4GB disk image; Ubuntu 12.04 64-bit (Precise Pangolin), 5 yr long term support (LTS); Control Panel: none; Data Transfer: 6GB of Data Transfer; Location: Dallas; Not running; 17.16 USD/m"
      , "meta_data" : []}
  , "new_order_request" : { "billing_oid" : 0
      , "user_oid" : 0
      , "host_server_oid" : null
      , "ip_request" : { "num_ips" : 1
          , "extra_ip_reason" : ""
          , "requested_ips" : null}
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "pricing_plan_code" : "MIRO4B"
      , "dc_location" : null
      , "vps_type" : null
      , "instantiation_options" : { "domain_name" : "twin0-71d"
          , "control_panel" : "none"
          , "password" : "faufuwu92"
          , "distro" : "ubuntu1204.64"}
      , "instantiation_via_clone_options" : null
      , "file_injection_data" : null
      , "is_just_minimal_init" : null
      , "meta_data" : []}
  , "running_vps_info" : null}}
]
	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:294)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:281)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: POST https://api.rimuhosting.com/r/orders/new-vps HTTP/1.1 failed with response: HTTP/1.1 406 Not Acceptable; content: [{ "post_new_vps_response" : { "status_message" : "Not Acceptable"
  , "status_code" : 406
  , "response_created_time" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
  , "error_info" : { "error_class" : "ValidationErrors"
      , "full_error_message" : "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."
      , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
      , "error_title" : "Validation Problem"
      , "field_name" : "misc_error"}
  , "extended_error_infos" : [{ "error_class" : "ValidationError"
        , "full_error_message" : "domain_name: That does not look like a valid domain name."
        , "human_readable_message" : "That does not look like a valid domain name."
        , "error_title" : "Validation Problem"
        , "field_name" : "domain_name"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "hostname: Top level domain names not permitted."
        , "human_readable_message" : "Top level domain names not permitted."
        , "error_title" : "Validation Problem"
        , "field_name" : "hostname"}
    , { "error_class" : "ValidationError"
        , "full_error_message" : "memory_mb: The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "human_readable_message" : "The 64 bit distros require a good amount of memory.  Try 256MB or more."
        , "error_title" : "Validation Problem"
        , "field_name" : "memory_mb"}]
  , "response_type" : "ERROR"
  , "human_readable_message" : "There were some request validation errors.  e.g. That does not look like a valid domain name."
  , "redirect_uri" : null
  , "response_display_duration_type" : "REGULAR"
  , "setup_messages" : ["Selected user as the logged in user: Ivan Meredith"
    , "Selected billing details as the first 'wire' billing details found for the user: Wire Transfer"
    , "No VPS paramters provided, using default values."
    , "'memory_mb' not provided, setting to 160MB."
    , "'disk_space_mb' not provided, setting to 4GB."
    , "'domain_name': That does not look like a valid domain name.\n'hostname': Top level domain names not permitted.\n'memory_mb': The 64 bit distros require a good amount of memory.  Try 256MB or more."]
  , "about_order" : { "order_oid" : 0
      , "domain_name" : "twin0-71d"
      , "slug" : null
      , "billing_oid" : 50081656
      , "is_on_customers_own_physical_server" : false
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "host_server_oid" : null
      , "server_type" : "VPS"
      , "data_transfer_allowance" : { "data_transfer_gb" : 6
          , "data_transfer" : "6"}
      , "billing_info" : { "monthly_recurring_fee" : 17.16
          , "monthly_recurring_amt" : { "amt" : 17.16
              , "currency" : "CUR_USD"
              , "amt_usd" : 17.16}
          , "suspended_date" : null
          , "prepaid_until" : null
          , "order_date" : { "ms_since_epoch": 1347873361003, "iso_format" : "2012-09-17T09:16:01Z", "users_tz_offset_ms" : 43200000}
          , "cancellation_date" : null}
      , "location" : { "data_center_location_code" : "DCDALLAS"
          , "data_center_location_name" : "Dallas"
          , "data_center_location_country_2ltr" : "US"}
      , "allocated_ips" : null
      , "running_state" : "NOTRUNNING"
      , "distro" : "ubuntu1204.64"
      , "order_description" : "LaunchtimeVPSDal; 160MB memory; 4GB disk image; Ubuntu 12.04 64-bit (Precise Pangolin), 5 yr long term support (LTS); Control Panel: none; Data Transfer: 6GB of Data Transfer; Location: Dallas; Not running; 17.16 USD/m"
      , "meta_data" : []}
  , "new_order_request" : { "billing_oid" : 0
      , "user_oid" : 0
      , "host_server_oid" : null
      , "ip_request" : { "num_ips" : 1
          , "extra_ip_reason" : ""
          , "requested_ips" : null}
      , "vps_parameters" : { "memory_mb" : 160
          , "disk_space_mb" : 4096
          , "disk_space_2_mb" : 0}
      , "pricing_plan_code" : "MIRO4B"
      , "dc_location" : null
      , "vps_type" : null
      , "instantiation_options" : { "domain_name" : "twin0-71d"
          , "control_panel" : "none"
          , "password" : "faufuwu92"
          , "distro" : "ubuntu1204.64"}
      , "instantiation_via_clone_options" : null
      , "file_injection_data" : null
      , "is_just_minimal_init" : null
      , "meta_data" : []}
  , "running_vps_info" : null}}
]
	at org.jclouds.http.handlers.CloseContentAndSetExceptionErrorHandler.handleError(CloseContentAndSetExceptionErrorHandler.java:44)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:69)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.shouldContinue(BaseHttpCommandExecutorService.java:197)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:167)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:135)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.submit(BaseHttpCommandExecutorService.java:132)
	at org.jclouds.http.TransformingHttpCommandExecutorServiceImpl.submit(TransformingHttpCommandExecutorServiceImpl.java:54)
	at org.jclouds.http.TransformingHttpCommandImpl.execute(TransformingHttpCommandImpl.java:73)
	at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFutureForHttpRequestMappedToMethodAndArgs(AsyncRestClientProxy.java:248)
	at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:148)
	at $Proxy68.createServer(Unknown Source)
	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.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
	at $Proxy69.createServer(Unknown Source)
	at org.jclouds.rimuhosting.miro.compute.strategy.RimuHostingComputeServiceAdapter.createNodeWithGroupEncodedIntoName(RimuHostingComputeServiceAdapter.java:81)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:186)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.submit(BaseHttpCommandExecutorService.java:132)
	at org.jclouds.http.TransformingHttpCommandExecutorServiceImpl.submit(TransformingHttpCommandExecutorServiceImpl.java:54)
	at org.jclouds.http.TransformingHttpCommandImpl.execute(TransformingHttpCommandImpl.java:73)
	at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFutureForHttpRequestMappedToMethodAndArgs(AsyncRestClientProxy.java:248)
	at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:148)
	at $Proxy68.createServer(Unknown Source)
	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.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
	at $Proxy69.createServer(Unknown Source)
	at org.jclouds.rimuhosting.miro.compute.strategy.RimuHostingComputeServiceAdapter.createNodeWithGroupEncodedIntoName(RimuHostingComputeServiceAdapter.java:81)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:186)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:213)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:229)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:434)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:432)
	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:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
	at org.jclouds.concurrent.config.DescribingExecutorService.submit(DescribingExecutorService.java:89)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:213)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:229)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:434)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:432)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
1 error[s]
Node failures:
0 error[s]
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:221)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:229)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:434)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:432)
	... 5 more
