我正在使用OpenStack4J与OpenStack进行交互。此时我的目标只是启动一个实例。我可以使用我的租户手动执行此操作:rosemend。当我这样做时,我有一个名为rosemond的网络(Id:a9b097b3-af47-4222-b98e-f1b631f9ec45),我选择并将其作为实例的一部分。
然而,使用OpenStack4J,我无法取得任何进展。 OpenStack4j需要一个我似乎无法弄清楚如何设置的网络端口。 设置此网络端口的调用如下所示:
serverCreateBuilder.addNetworkPort("0a44eedc-8298-4544-87d7-094c7b34708e")
首先,我尝试了Rosemond网络本身的ID(a9b097b3-af47-4222-b98e-f1b631f9ec45)。在这种情况下的错误消息是:
Port id a9b097b3-af47-4222-b98e-f1b631f9ec45 could not be found.
接下来,在OpenStack中,当我点击rosemond网络时,我看到一个名为ports的5个项目列表。然后我尝试使用它们中的每一个导致每个错误消息:
Port 0a44eedc-8298-4544-87d7-094c7b34708e is still in use.
当我根本没有通过网络端口时,我收到错误:
It is not allowed to create an interface on external network c6fb539b-2013-405c-903a-4700a00d954b
我的问题是我应该在这里使用什么价值?
答案 0 :(得分:0)
我建议你改用JClouds。在我看来,更容易使用,文档更好。
请参阅Openstack cloud (identity service, nova service and swift service) vs Java application中的答案。您可以查看GitHub中的一些示例代码。
答案 1 :(得分:0)
1)要使用现有端口创建vm,需要端口ID。 2)用于引导vm实例的端口必须处于DOWN状态(已分离)。如果端口连接到实例(活动),Openstack将报告冲突。对于Openstack4j,它会抛出一个ClientResponseException异常,并显示一条消息:端口xxx仍在使用中。
请参阅https://developer.openstack.org/api-ref/compute/?expanded=create-server-detail