在使用jclouds在Openstack上创建网络时,我收到错误:[{" NeutronError":"无法识别的属性' networkType'"}]

时间:2014-08-05 15:49:35

标签: networking openstack jclouds

详细的错误日志如下:

命令:POST http://os.myserver.com:9696/v2.0/networks HTTP / 1.1失败,响应:HTTP / 1.1 400 Bad Request;内容:[{“NeutronError”:“无法识别的属性'networkType'”}] org.jclouds.http.HttpResponseException:command:POST https://os.myserver.com:9696/v2.0/networks HTTP / 1.1失败,响应:HTTP / 1.1 400 Bad Request;内容:[{“NeutronError”:“无法识别的属性'networkType'”}]         在org.jclouds.openstack.neutron.v2_0.handlers.NeutronErrorHandler.handleError(NeutronErrorHandler.java:40)         at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:67)         at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:180)         在org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:150)         在org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:93)         在org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:76)         在org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:47)

以下是我的代码段:

CreateNetworkOptions createNetworkOptions = CreateNetworkOptions.builder()
                    .name(name)
                    .networkType(NetworkType.LOCAL).build();
NetworkApi networkApi = neutronApi.getNetworkApiForZone(zone);
Network network = networkApi.create(createNetworkOptions);

如果我没有设置networkType,那么它的工作正常。 但我需要将networkType设置为NetworkType.LOCAL

1 个答案:

答案 0 :(得分:0)

最近重构了jclouds的中子代码并修复了一些错误。新代码使用“v2”而不是“v2_0”。

你看到的是jclouds neutron“v2_0”中的一个错误。 map-binder不支持LOCAL网络类型。具体来说,这里:

https://github.com/jclouds/jclouds-labs-openstack/blob/master/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateNetworkOptions.java#L206

这里支持的类型是FLAT,VLAN和GRE。

好消息是应该修复,但你必须升级到jclouds 1.8.0并确保使用neutron v2。您还必须更改代码以使用新接口。

您可以在此处找到一些示例代码: https://github.com/jclouds/jclouds-labs-openstack/blob/master/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java#L50

这是重要的部分:

Network.CreateOptions createNetwork = Network.createOptions("jclouds-wibble")
               .networkType(NetworkType.LOCAL)
               .build();
Network network = api.create(createNetwork);