Я пытаюсь создать облачную функцию Google, которая перебирает все запущенные в данный момент кластеры DataProc, однако метод dataproc.list_functions()
требует, чтобы регион был передан в качестве параметра. У нас есть несколько кластеров в нескольких регионах, активных одновременно.
Есть ли способ получить список регионов в Python и обернуть вызов list_functions
внутри цикла for
, который перебирает все регионы?
например:
for region in regions:
for cluster in client.list_clusters('project', region):
do_stuff()
Вы можете перечислить используемые регионы в проекте с помощью клиента Compute:
from googleapiclient import discovery
def get_regions(project):
compute_client = discovery.build('compute', 'v1')
regions = compute_client.regions().list(project=project).execute()
region_names = []
for r in regions["items"]:
region_names.append(r["name"])
return region_names
Я использую здесь google-api-python-client
v.1.7.8, и он отлично работает, не могли бы вы проверить свою версию? (Я выполнил код в контейнере Docker, чтобы убедиться, что это не связано с моей средой).
Извините - Stackoverflow пукнул, и я не смог отредактировать свой комментарий - это был просто ложный положительный результат от pylint, и ваше решение работает отлично. Спасибо!
Привет @norbjd, спасибо за ваш ответ. Когда я пытаюсь реализовать это, я получаю следующую ошибку:
Instance of 'Resource' has no 'regions' member
в этой строке:regions = compute_client.regions().list(project=project).execute()