Регистрация виртуальной машины в Cloudify версии 2.2 или ниже в CloudStack 3: NumberFormatException
Я пытался заставить CloudStack 3.0 работать с Cloudify 2.1 и 2.2, однако я получил сообщение об ошибке, описанное ниже:
Трассировки стека
Первая обнаруженная ошибка:
java.lang.NumberFormatException: For input string: "11e2ccc4-43dd-4558-99ef-a687000g632f"
at org.cloudifysource.esc.shell.installer.CloudGridAgentBootstrapper.boostrapCloudAndWait(CloudGridAgentBootstrapper.java:177)
at org.cloudifysource.esc.shell.commands.BootstrapCloud.doExecute(BootstrapCloud.java:98)
at org.cloudifysource.shell.commands.AbstractGSCommand.execute(AbstractGSCommand.java:79)
at org.apache.felix.gogo.commands.basic.AbstractCommand.execute(AbstractCommand.java:35)
at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:474)
at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:400)
at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
at org.apache.karaf.shell.console.jline.Console.run(Console.java:221)
at org.apache.karaf.shell.console.Main.run(Main.java:191)
at org.apache.karaf.shell.console.Main.run(Main.java:89)
at org.cloudifysource.shell.GigaShellMain.main(GigaShellMain.java:122)
Caused by: org.cloudifysource.esc.driver.provisioning.CloudProvisioningException: One or more managememnt machines failed. The first encountered error was: java.lang.NumberFormatException: For input string: "11e2ccc4-43dd-4558-99ef-a687000g632f"
at org.cloudifysource.esc.driver.provisioning.jclouds.DefaultProvisioningDriver.handleProvisioningFailure(DefaultProvisioningDriver.java:564)
at org.cloudifysource.esc.driver.provisioning.jclouds.DefaultProvisioningDriver.doStartManagementMachines(DefaultProvisioningDriver.java:431)
at org.cloudifysource.esc.driver.provisioning.jclouds.DefaultProvisioningDriver.startManagementMachines(DefaultProvisioningDriver.java:365)
at org.cloudifysource.esc.shell.installer.CloudGridAgentBootstrapper.boostrapCloudAndWait(CloudGridAgentBootstrapper.java:174)
... 13 more
Caused by: java.util.concurrent.ExecutionException: java.lang.NumberFormatException: For input string: "52c2cfb4-40eb-4928-99ef-a687000a632c"
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:232)
at java.util.concurrent.FutureTask.get(FutureTask.java:91)
at org.cloudifysource.esc.driver.provisioning.jclouds.DefaultProvisioningDriver.doStartManagementMachines(DefaultProvisioningDriver.java:402)
... 15 more
Caused by: java.lang.NumberFormatException: For input string: "11e2ccc4-43dd-4558-99ef-a687000g632f"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
at java.lang.Double.parseDouble(Double.java:510)
at com.google.gson.stream.JsonReader.nextLong(JsonReader.java:561)
at com.google.gson.internal.bind.TypeAdapters$8.read(TypeAdapters.java:250)
at com.google.gson.internal.bind.TypeAdapters$8.read(TypeAdapters.java:242)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
at com.google.gson.Gson.fromJson(Gson.java:755)
at org.jclouds.http.functions.ParseFirstJsonValueNamed.apply(ParseFirstJsonValueNamed.java:81)
at org.jclouds.http.functions.ParseFirstJsonValueNamed.apply(ParseFirstJsonValueNamed.java:48)
at com.google.common.util.concurrent.Futures$4.apply(Futures.java:503)
at com.google.common.util.concurrent.Futures$4.apply(Futures.java:501)
at com.google.common.util.concurrent.Futures$3.apply(Futures.java:279)
at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:729)
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:662)
1 ответ
CloudStack версии 3 и выше не совместимы ни с Cloudify 2.2 или меньше, ни с какой-либо программой, которая зависит от jcloud 1.4 или меньше. Короче говоря, решение состоит в том, чтобы просто перейти на Cloudify 2.3, мне нужно было создать его из исходного кода (https://github.com/CloudifySource/cloudify) и заставить работать Cloudify и CloudStack.
Эта проблема на самом деле происходит потому, что CloudStack переходит от длинных ключей идентификатора типа в шаблонах к строковым ключам. В следующем классе org.jclouds.cloudstack.domain.Template для идентификатора задано значение long, и это вызывает проблемы с синтаксическим анализом в JSON, как вы видите в трассировка стека.