HttpError 503, при создании подсети с использованием GCP Python API - PullRequest
0 голосов
/ 26 июня 2019

Привет всем, Нужны ваши мысли по проблеме, которую я получаю со скриптом Python для создания vpc и подсети.

Мой скрипт работает нормально при создании vpc, но следующий шаг создания подсети завершается ошибкой

googleapiclient.errors.HttpError: <HttpError 503 when requesting https://www.googleapis.com/compute/v1/projects/<projectname>/regions/us-east1/subnetworks?alt=json returned "Internal error. Please try again or contact Google Support.

Я могу создать подсеть из пользовательского интерфейса и со страницы остальных API.

Вот код скрипта, который я использую для создания подсети-

def create_subnet(compute, project, region, classname):

    subnetname = classname
    networkpath = 'projects/<projectname>/global/networks/%s' % (classname)
    ipCidrRange = "10.0.0.0/16"

    config = {
  "name": subnetname,
  "network": networkpath,
  "ipCidrRange": ipCidrRange
}

    print('##### Print Config ##### %s' % (config))

    return compute.subnetworks().insert(
        project=project,
        region=region,
        body=config).execute()
    ```

def main (проект, имя класса, зона, регион):

compute = googleapiclient.discovery.build('compute', 'v1')

print('Creating vpc')

operation = create_vpc(compute, project, classname)

print('Creating subnet')

operation = create_subnet(compute, project, region, classname)
```

Заранее спасибо за комментарии и предложения.

Ответы [ 2 ]

1 голос
/ 29 июня 2019

Я получил основную причину этой проблемы.Я делал вызов подсети, не дожидаясь завершения операции создания vpc.

Создана новая функция для ожидания и вызова после того, как шаг создания vpc решает проблему.

def wait_for_global_operation(compute, project, operation):
    print('Waiting for operation to finish...')
    while True:
        result = compute.globalOperations().get(
            project=project,
            operation=operation).execute()

        if result['status'] == 'DONE':
            print("done.")
            if 'error' in result:
                raise Exception(result['error'])
            return result

        time.sleep(1)

Спасибо Lozano за ваши комментарии и отзывы.

0 голосов
/ 27 июня 2019

Это, похоже, связано с неправильным синтаксисом метки. Попробуйте следующий синтаксис для сети и региона:

"сеть": «https://www.googleapis.com/compute/v1/projects/XXXXX/global/networks/XXXXX", "область, край": «https://www.googleapis.com/compute/v1/projects/XXXXX/regions/XXXXX"

Онлайн-API API может быть очень полезным 1 .


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...