Python-клиент для Compute Engine возвращает «Обязательное поле« ресурс »не указано» - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь создать виртуальную машину с помощью клиента Python.Я звоню

import googleapiclient.discovery

compute = googleapiclient.discovery.build('compute', 'v1')
compute.instances().insert(
    project='my-project',
    zone='us-central1-c',
    body=config).execute()

(конфиг - строка json, доступно здесь )

, а ответ -

<HttpError 400 when requesting https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/instances?alt=json
returned "Required field 'resource' not specified">

Из этого сообщения на форуме и этого вопроса об обмене стека , похоже, проблема в заголовках API REST.Однако, насколько я знаю, заголовки не выставляются клиенту Python.

Это ошибка или есть что-то еще, что я могу делать неправильно?

РЕДАКТИРОВАТЬ

После ошибки, возвращающейся к googleapiclient.http.HttpRequest, похоже, что объект HttpRequest, сгенерированный build(), имеет заголовки

{ 'accept': 'application/json',
  'accept-encoding': 'gzip, deflate',
  'content-length': '2299',
  'content-type': 'application/json',
  'user-agent': 'google-api-python-client/1.7.7 (gzip)' }

Я попытался добавить 'resource': 'none' к заголовкам и получилтот же ответ.

Посмотрев на это некоторое время, я подозреваю, что REST API ожидает, что будет указан ресурс Compute Engine.Однако поиск слова «resource» в официальных документах дает 546 результатов.

EDIT2

Created GitHub Issue .

...