我正在尝试根据机器类型过滤实例列表。但是,这似乎不起作用。
Compute.Instances.List request = computeService.instances().list("project-name","us-central1-a" );
request.setFilter("(machinetype = zones/us-central1-a/machineTypes/n1-standard-1)");
InstanceList instanceList = request.execute();
List<Instance> instances = instanceList.getItems();
即使我有一个与过滤器匹配的实例,响应也为空! (当我删除过滤器时,它将获得实例。)
[chaker@cbenhamed:~]$ gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
foo-bar-worker-n1-standard-1-65304152130-zfq us-central1-a n1-standard-1 true 10.240.0.2 00.000.00.255 RUNNING
根据documentation,在这种情况下, filter 参数应该可以使用。因为,首先,machineType在Instance对象的根目录中。其次,这是machineType参数的正确形式
用于此实例的计算机类型资源的完整或部分URL,格式为:zones / zone / machineTypes / machine-type。创建实例时由客户端提供。
我尝试检查 gcloud
发出的HTTP请求gcloud compute instances list --filter="machineType:n1-standard-1" --log-http
但是事实证明,它可以获取整个列表(跨越所有区域!)并在本地对其进行过滤!
答案 0 :(得分:0)
这似乎是一种误解,文档将 machineType 描述为 Response body 的自变量,而不是过滤器。因此,在这种情况下,您不能使用部分URL,也只能使用以下比较运算符=,!=,>或<,它们都不像。
我认为使用此过滤器的唯一方法是使用完整的网址,就像Oleksandr Bushkovskyi评论过一样:
machineType =“ https://www.googleapis.com/compute/v1/projects/[PROJECT]/zones/[ZONE]/machineTypes/[MACHINE_TYPE]”