Lang andauernde Vorgänge mit der Deployment Manager API verwalten

Wenn Sie eine API-Anfrage an Deployment Manager senden, sendet Deployment Manager entsprechende Anfragen an andere Google Cloud APIs. Wenn Sie beispielsweise eine Bereitstellung erstellen, die eine Compute Engine-Instanz enthält, sendet Deployment Manager eine instances.insert-Anfrage an die Compute Engine API.

Wenn Sie Bereitstellungen erstellen, aktualisieren oder löschen oder andere API-Methoden verwenden, die mehrere Minuten oder länger dauern, geben API-Anfragen an Deployment Manager Vorgänge mit langer Ausführungszeit zurück.

Auf dieser Seite werden die Richtlinien für die Verwaltung von Vorgängen mit langer Ausführungszeit mit der Deployment Manager API beschrieben.

Hinweise

  • Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten, installieren Sie das gcloud-Befehlszeilentool.
  • Wenn Sie die API-Beispiele in dieser Anleitung verwenden möchten, richten Sie den API-Zugriff ein.

Methoden, die möglicherweise lang andauernde Vorgänge starten, sind:

Bei diesen Anfragen ist die Antwort eine Vorgangsressource, die in etwa so aussieht:

{
 "kind": "deploymentmanager#operation",
 "id": "7123423453456654321",  # generated ID
 "name": "operation-11233234311678-587af2c0xyz9c-0987fa54-baccd59f",  # generated name
 "operationType": "insert",
 "targetLink": "https://www.googleapis.com/deploymentmanager/v2/projects/example-project/global/deployments/wordpress-1",
 "targetId": "5123321654456321123",
 "status": "DONE",  # possible values: RUNNING, PENDING, DONE
 "user": "example@example.com",
 "progress": 100,
 "insertTime": "2019-04-29T11:08:32.190-07:00",
 "startTime": "2019-04-29T11:08:32.200-07:00",
 "endTime": "2019-04-29T11:09:38.176-07:00",
 "selfLink": "https://www.googleapis.com/deploymentmanager/v2/projects/example-project/global/operations/operation-11233234311678-587af2c0xyz9c-0987fa54-baccd59f"
}

Status eines Vorgangs abrufen

Wenn Sie den Status eines Vorgangs prüfen möchten, senden Sie über das Feld name des Vorgangs eine operations.get()-Anfrage und prüfen Sie die status oder progress des Vorgangs.

Wenn status DONE, progress 100 und das error-Objekt leer ist, ist die Bereitstellung abgeschlossen und Ihre Ressourcen können verwendet werden.

Wenn während des Vorgangs Fehler auftreten, werden diese im error-Objekt im folgenden Format aufgeführt:

"error": {
  "errors": [
    {
      "code": "error code"  # string,
      "location": "location of the error"  # string,
      "message": "error message"   # string
    },
    ...
  ]
}

Als Best Practice empfehlen wir, den Status des Vorgangs mit einem exponentiellen Backoff abzufragen. Senden Sie die erste Anfrage beispielsweise nach 5 Sekunden, die nächste nach 10 Sekunden, die dritte nach 20 Sekunden usw. Wir empfehlen, eine maximale Wartezeit von einigen Minuten festzulegen. Nachdem Sie die maximale Backoff-Zeit erreicht haben, müssen Sie die Backoff-Zeit nicht mehr verlängern.