Quando você faz uma solicitação de API ao Deployment Manager, ele
faz solicitações correspondentes a outras Google Cloud APIs. Por exemplo,
quando você cria uma implantação que inclui uma instância do Compute Engine,
o Deployment Manager envia uma solicitação instances.insert
para a API Compute Engine.
Ao criar, atualizar ou excluir implantações ou usar outros métodos de API que podem levar vários minutos ou mais para serem concluídos, as solicitações de API para o Deployment Manager retornam operações de longa duração.
Esta página descreve as diretrizes para gerenciar operações de longa duração com a API Deployment Manager.
Antes de começar
- Para usar os exemplos de linha de comando deste guia, instale a ferramenta de linha de comando "gcloud".
- Para usar os exemplos de API deste guia, configure o acesso de API.
Os métodos que podem iniciar operações de longa duração incluem:
- Operações
insert
, comodeployments.insert()
,typeProviders.insert()
e assim por diante. - Operações
update
, comodeployments.update()
. - Operações
delete
, comodeployments.delete()
.
Nessas solicitações, a resposta é um recurso de operação, que é semelhante a este exemplo:
{
"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"
}
Conferir o status de uma operação
Para verificar o status de uma operação, use o campo name
da operação para
fazer uma solicitação operations.get()
e verificar o status
ou progress
da operação.
Quando o status
for DONE
, o progress
for 100
e o objeto error
estiver vazio, a implantação será concluída e os recursos estarão prontos para uso.
Se houver erros durante a operação, eles serão listados no objeto error
,
neste formato:
"error": {
"errors": [
{
"code": "error code" # string,
"location": "location of the error" # string,
"message": "error message" # string
},
...
]
}
Como prática recomendada, recomendamos consultar o status da operação com uma espera exponencial. Por exemplo, faça a primeira solicitação após 5 segundos, a próxima após 10 segundos, a terceira após 20 segundos e assim por diante. Recomendamos definir um tempo de espera máximo de alguns minutos. Depois de atingir o tempo máximo de espera, não é necessário continuar aumentando o tempo de espera.