【问题标题】:Can't create instance from java sdk无法从 java sdk 创建实例
【发布时间】:2019-04-09 08:59:14
【问题描述】:

我正在尝试使用 Java SDK 创建一个 OCI 实例。我在 routeRules 中遇到错误。

当我评论以下行时,我能够创建一个实例。但是在那台机器上没有启用路由。

addInternetGatewayToRouteTable(vcnClient, compartmentId, vcn.getDefaultRouteTableId(), internetGateway);

https://github.com/oracle/oci-java-sdk/blob/master/bmc-examples/src/main/java/CreateInstanceExample.java

Exception in thread "main" com.oracle.bmc.model.BmcException: (400, InvalidParameter, false) routeRules[0].networkEntityId may not be null (opc-request-id: 6BC8A182852240F8AFFD1EB279CFF901/AD5BF82603D64DA298976FCFE83871F6/9398B04078B0435A8FA68FEA7307CC99)
        at com.oracle.bmc.http.internal.ResponseHelper.throwIfNotSuccessful(ResponseHelper.java:120)
        at com.oracle.bmc.http.internal.ResponseConversionFunctionFactory$ValidatingParseResponseFunction.apply(ResponseConversionFunctionFactory.java:86)
        at com.oracle.bmc.http.internal.ResponseConversionFunctionFactory$ValidatingParseResponseFunction.apply(ResponseConversionFunctionFactory.java:82)
        at com.oracle.bmc.core.internal.http.UpdateRouteTableConverter$1.apply(UpdateRouteTableConverter.java:70)
        at com.oracle.bmc.core.internal.http.UpdateRouteTableConverter$1.apply(UpdateRouteTableConverter.java:55)
        at com.oracle.bmc.core.VirtualNetworkClient.updateRouteTable(VirtualNetworkClient.java:3325)
        at CreateInstanceExample.addInternetGatewayToRouteTable(CreateInstanceExample.java:295)
        at CreateInstanceExample.main(CreateInstanceExample.java:146)

【问题讨论】:

    标签: oracle-cloud-infrastructure oci-java-sdk


    【解决方案1】:

    代码有bug,可以在addInternetGatewayToRouteTable(..)方法中替换destination

            RouteRule internetAccessRoute =
                    RouteRule.builder()
                            .cidrBlock("0.0.0.0/0")
                            .destination(internetGateway.getId())
                            .build();
    
    

    在第 295 行,networkEntityId:

            RouteRule internetAccessRoute =
                    RouteRule.builder()
                            .cidrBlock("0.0.0.0/0")
                            .networkEntityId(internetGateway.getId())
                            .build();
    

    您可以从REST APIs here 中看到在路由表中创建路由规则需要哪些参数。

    该示例似乎基于已弃用的调用 RouteRule 构建器的版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 2020-01-01
      • 2018-10-27
      • 2020-01-16
      • 2019-05-22
      • 1970-01-01
      相关资源
      最近更新 更多