Google Cloud, compute.instances.aggregatedList с фильтром не работает - PullRequest
0 голосов
/ 21 мая 2018

Облачный API Google для compute.instances.aggregatedList включает аргумент фильтра.https://cloud.google.com/compute/docs/reference/rest/beta/instances/aggregatedList

Я использую (status eq "RUNNING") в качестве фильтра для просмотра всех моих запущенных экземпляров.

Я хотел бы иметь более сложные критерии, такие как критерий, использующий меткии / или другие условия, однако даже условия документации Google (которые используют оператор ИЛИ) возвращают ошибку, например - даже пример документации Google: (cpuPlatform = "Intel Skylake") ИЛИ (cpuPlatform = "Intel Broadwell") завершается с ошибкой 400:

"message": "Неверное значение для поля 'filter': '(cpuPlatform = \" Intel Skylake \ ") ИЛИ (cpuPlatform = \" Intel Broadwell \ ")'. Неверный фильтр спискаexpression. "

похоже, что знаки '=' не приняты, а операторы AND / OR не приняты.Какой правильный формат для этого API.

1 Ответ

0 голосов
/ 11 июля 2018

У меня возникла та же проблема, когда я использовал "=" вместо "eq" в google-api-python-client.Мне потребовалось использовать метки для фильтрации списка агрегированных экземпляров.Сначала я использовал

filter="labels.projectid=test-project"

, который возвращал 400 ошибок в агрегированном списке, но был успешным, если его запрашивали для экземпляров определенной зоны.

Я успешно достиг списка, когда использовал фильтр как

filter="labels.projectid eq \"test-project\""

или

filter = "labels.projectid eq test-project"

Я даже протестировал его с помощью REST-клиента, предоставленного Google, и это сработало.Справка: https://issuetracker.google.com/80238913

...