Cuando realizas una solicitud a la API de Deployment Manager, este hace las solicitudes correspondientes a otras APIs de Google Cloud . Por ejemplo, cuando creas una implementación que incluye una instancia de Compute Engine, Deployment Manager envía una solicitud instances.insert
a la API de Compute Engine.
Cuando creas, actualizas o borras implementaciones, o usas otros métodos de la API que pueden tardar varios minutos o más en completarse, las solicitudes a la API a Deployment Manager muestran operaciones de larga duración.
En esta página, se describen los lineamientos para administrar operaciones de larga duración con la API de Deployment Manager.
Antes de comenzar
- Si deseas usar los ejemplos de línea de comandos de esta guía, instala la herramienta de línea de comandos de gcloud.
- Si deseas usar los ejemplos de la API en esta guía, configura el acceso a la API.
Estos son algunos de los métodos que podrían iniciar operaciones de larga duración:
- Operaciones
insert
, comodeployments.insert()
,typeProviders.insert()
, etcétera. - Operaciones
update
, comodeployments.update()
- Operaciones
delete
, comodeployments.delete()
En estas solicitudes, la respuesta es un recurso de operación, que se ve como en el siguiente ejemplo:
{
"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"
}
Obtén el estado de una operación
Para verificar el estado de una operación, usa el campo name
de la operación para
hacer una solicitud operations.get()
y verifica el status
o progress
de la operación.
Cuando status
sea DONE
, progress
sea 100
y el objeto error
esté vacío, la implementación estará completa y tus recursos estarán listos para usarse.
Si hay errores durante la operación, se enumeran en el objeto error
,
en el siguiente formato:
"error": {
"errors": [
{
"code": "error code" # string,
"location": "location of the error" # string,
"message": "error message" # string
},
...
]
}
Como práctica recomendada, te sugerimos que sondees el estado de la operación con una retirada exponencial. Por ejemplo, realiza la primera solicitud después de 5 segundos, la siguiente después de 10 segundos, la tercera después de 20 segundos, y así sucesivamente. Te recomendamos configurar un tiempo de recuperación máximo de unos minutos. Después de alcanzar el tiempo de retirada máximo, no es necesario que sigas aumentando el tiempo de retirada.