Lorsque vous envoyez une requête API à Deployment Manager, il envoie les requêtes correspondantes aux autres API Google Cloud . Par exemple, lorsque vous créez un déploiement qui inclut une instance Compute Engine, Deployment Manager envoie une requête instances.insert
à l'API Compute Engine.
Lorsque vous créez, mettez à jour ou supprimez des déploiements, ou que vous utilisez d'autres méthodes d'API qui peuvent prendre plusieurs minutes ou plus, les requêtes d'API envoyées à Deployment Manager renvoient des opérations de longue durée.
Cette page décrit les consignes à suivre pour gérer les opérations de longue durée avec l'API Deployment Manager.
Avant de commencer
- Si vous voulez vous servir des exemples de ligne de commande de ce guide, installez l'outil de ligne de commande gcloud.
- Si vous voulez utiliser les exemples d'API de ce guide, configurez l'accès aux API.
Voici quelques méthodes pouvant lancer des opérations de longue durée:
- Opérations
insert
, telles quedeployments.insert()
,typeProviders.insert()
, etc. - Opérations
update
, telles quedeployments.update()
. - Opérations
delete
, telles quedeployments.delete()
.
Dans ces requêtes, la réponse est une ressource d'opération, qui ressemble à l'exemple suivant:
{
"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"
}
Obtenir l'état d'une opération
Pour vérifier l'état d'une opération, utilisez le champ name
de l'opération pour effectuer une requête operations.get()
, puis vérifiez le status
ou le progress
de l'opération.
Lorsque status
est DONE
, progress
est 100
et que l'objet error
est vide, le déploiement est terminé et vos ressources sont prêtes à l'emploi.
En cas d'erreurs pendant l'opération, elles sont listées dans l'objet error
, au format suivant:
"error": {
"errors": [
{
"code": "error code" # string,
"location": "location of the error" # string,
"message": "error message" # string
},
...
]
}
Nous vous recommandons de surveiller l'état de l'opération avec un délai avant expiration exponentiel. Par exemple, effectuez la première requête au bout de cinq secondes, la suivante au bout de 10 secondes, la troisième au bout de 20 secondes, et ainsi de suite. Nous vous recommandons de définir un délai de retour maximal de quelques minutes. Une fois que vous avez atteint la durée maximale entre les tentatives, vous n'avez pas besoin de continuer à l'augmenter.