gpt4 book ai didi

java - 为什么 Google ComputeEngine Rest API 不返回创建实例所需的实例模板的合格值

转载 作者:行者123 更新时间:2023-12-02 09:41:38 24 4
gpt4 key购买 nike

我正在尝试使用 Java API 并从实例模板获取数据,在 Google ComputeEngine 上创建虚拟机。获取实例模板很简单:

try (InstanceTemplateClient instanceClient = InstanceTemplateClient.create()) {
ProjectGlobalInstanceTemplateName globalInstanceTemplateName = ProjectGlobalInstanceTemplateName.of(instanceTemplateName, projectName);
instanceTemplate = instanceClient.getInstanceTemplate(globalInstanceTemplateName);
}

但是,在不单独指定所有属性的情况下,没有明显的方法如何使用instanceTemplate,例如

try (InstanceClient instanceClient = InstanceClient.create()) {
ProjectZoneName zone = ProjectZoneName.of(projectName, zoneName);
InstanceProperties instanceProperties = instanceTemplate.getProperties();

Instance instanceResource = Instance.newBuilder()
.setShieldedInstanceConfig(instanceProperties.getShieldedInstanceConfig())
.setCanIpForward(instanceProperties.getCanIpForward())
...

但更糟糕的是,instanceTemplate 没有限定多个属性的值(例如 machineType、diskType),因此我需要更新它们(否则我会收到错误 - “字段 'resource.disks[0].initializeParams 的值无效” .diskType': 'pd-standard'。URL 格式错误。)

.setMachineType("zones/" + zoneName + "/machineTypes/" + instanceProperties.getMachineType())

手动限定这些参数感觉非常脆弱。有更好的方法吗?我正在使用 google-cloud-compute 0.99.0-alpha

最佳答案

基于实例模板创建单个实例在 API 中有点“特殊”。实例模板作为 optional query string parameter (sourceInstanceTemplate) 传递除了 POST 正文中的正常实例资源定义之外。

据我所知,Java 客户端库当前并未对这个概念进行建模,因此您只能使用已有的解决方法,或者您可以自己执行此 API 请求,因为它相对简单,如下所示只要您不为实例自定义很多值即可。 An API call example for this approach can be found here .

关于java - 为什么 Google ComputeEngine Rest API 不返回创建实例所需的实例模板的合格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57022575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com