En esta página se explica cómo crear un recurso de espera. Para obtener más información sobre los recursos de espera, lee los Conceptos básicos de Runtime Configurator.
Un recurso de espera demora hasta que se produzca una determinada condición de éxito o falla antes de mostrar una respuesta. Tanto en caso de éxito como de falla, se establece una condición de cordialidad, en la que el recurso de espera demora hasta que se cree un número de variables en un prefijo de ruta de acceso específico. Una vez creadas las variables, se muestra el recurso de espera. El código de la aplicación responde a la condición de éxito o falla. Si el estado actual de las variables ya coincide con las condiciones finales de éxito o falla, el recurso de espera mostrará el éxito o la falla de inmediato.
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.
- Lee Conceptos básicos de Runtime Configurator.
- Lee Crear y borrar recursos de RuntimeConfig.
- Lee Configurar y obtener datos.
Crear un recurso de espera
Para crear un recurso de espera:
Determina la condición de éxito y, de manera opcional, la condición de falla para el recurso de espera.
Por ejemplo, el siguiente código de muestra establece las condiciones de éxito y fracaso, en las que el recurso de espera se muestra de manera correcta si la cantidad de rutas en
/status/success
es tres y falla si la ruta en/status/failure
es dos:{ 'name': 'projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]', 'timeout': '360s', 'success': { 'cardinality': { 'path': '/status/success', 'number': 3 } }, 'failure': { 'cardinality': { 'path': '/status/failure', 'number': 2 } } }
Recomendaciones para definir un recurso de espera:
- Solo se permite una condición de éxito y una condición de falla por recurso de espera.
- Debes mantener un recurso de espera por ruta de acceso.
- Las condiciones de falla siempre se evalúan antes de que las condiciones de éxito.
- No superpongas los prefijos de ruta de acceso entre condiciones.
Crea el recurso de espera.
Deployment Manager
Para crear un recurso de espera en Deployment Manager, especifica el tipo de recurso de espera:
runtimeconfig.v1beta1.waiter
En las propiedades del recurso de espera, proporciona
name
,location
,timeout
y las condiciones finales del recurso de espera:- name: [NAME] type: runtimeconfig.v1beta1.waiter properties: parent: $(ref.[CONFIG_NAME].name) waiter: [WAITER_NAME] timeout: [TIMEOUT_SECS] success: cardinality: path: [SUCCESS_PATH_PREFIX] number: [SUCCESS_NUMBER]
En el ejemplo anterior, se ilustra lo siguiente:
[NAME]
es el nombre del recurso.[CONFIG_NAME]
es el recurso de configuración para esta solicitud.[WAITER_NAME]
es el nombre para este recurso de espera.[TIMEOUT_SECS]
es la cantidad de segundos que se debe esperar antes de que se agote el tiempo de espera del recurso de espera. Por ejemplo, para 300 segundos, usa300s
.[SUCCESS_PATH_PREFIX]
es el prefijo de la ruta de acceso para detectar una condición de éxito.[SUCCESS_NUMBER]
es la cantidad de variables que existen en esta ruta de acceso para que se considere correcta.
gcloud
Con Google Cloud CLI:
gcloud beta runtime-config configs waiters create [WAITER_NAME] \ --config-name [CONFIG_NAME] \ --success-cardinality-path [SUCCESS_PATH_PREFIX] \ --success-cardinality-number [SUCCESS_NUMBER] --timeout [TIMEOUT_SECS]
Donde:
[WAITER_NAME]
es el nombre para este recurso de espera.[CONFIG_NAME]
es el recurso RuntimeConfig para esta solicitud.[SUCCESS_PATH_PREFIX]
es el prefijo de la ruta de acceso para detectar una condición de éxito.[SUCCESS_NUMBER]
es la cantidad de variables que existen en esta ruta de acceso para que se considere correcta.[TIMEOUT_SECS]
es la cantidad de segundos que se debe esperar antes de que se agote el tiempo de espera del recurso de espera.Gcloud CLI muestra una respuesta similar a la siguiente:
Se creó [https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/example-waiter].
Después de crear el recurso de espera, la herramienta sondea el recurso de operaciones relacionado hasta que el recurso de espera se muestre con una de las respuestas aplicables.
Para obtener una referencia completa de este comando
gcloud
, lee la documentación de referencia deruntime-config configs waiters
.
API
En la API, realiza una solicitud
POST
al siguiente URI:https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters
En el ejemplo anterior, se ilustra lo siguiente:
[PROJECT_ID]
es el ID del proyecto de esta solicitud.[CONFIG_NAME]
es el nombre de la configuración para esta solicitud.
La carga útil de la solicitud debe contener el nombre del recurso de espera, la condición de éxito y la duración del tiempo de espera:
{ 'name': 'projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]', 'timeout': '[TIMEOUT_SEC]', 'success': { 'cardinality': { 'path': '[SUCCESS_PATH_PREFIX]', 'number': '[SUCCESS_NUMBER]' } } }
En el ejemplo anterior, se ilustra lo siguiente:
[PROJECT_ID]
es el ID del proyecto de esta solicitud.[CONFIG_NAME]
es el nombre de la configuración para esta solicitud.[WAITER_NAME]
es el nombre del recurso de espera que se creará.[TIMEOUT_SECS]
es la cantidad de segundos que se espera antes de que se agote el tiempo de espera del recurso de espera.[SUCCESS_PATH_PREFIX]
es el prefijo de la ruta de acceso para detectar una condición de éxito.[SUCCESS_NUMBER]
es el número de variables que existen en esta ruta de acceso para que se considere correcta.
Si se considera correcta, la solicitud muestra el nombre del objeto de operaciones que se completó.
{ "name": "projects/[PROJECT_ID]/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]" }
A continuación, sondea el recurso de espera para verificar periódicamente cuándo se muestra el recurso de espera.
Para obtener más información sobre el método, lee la documentación de
waiters().create
.
Sondear un recurso de espera
Después de crear el recurso de espera, sondea el recurso de operaciones relacionado para verificar si el recurso de espera cumplió alguna de las condiciones finales. Si el recurso de espera cumplió una condición de finalización o se agotó el tiempo de espera, la operación se muestra como done
y muestra una respuesta en función de los resultados del recurso de espera.
Usa gcloud
o la API para sondear un recurso de espera.
gcloud
Con Google Cloud CLI, cuando realices una solicitud para crear una la herramienta, que sondea automáticamente, y espera a que el recurso de espera el resultado. La herramienta imprime una respuesta como la siguiente, al tiempo que se sondea el recurso de espera:
Waiting for waiter [WAITER_NAME] to finish...
Si no deseas que la herramienta sondee el recurso de espera después de crearlo, proporciona la marca --async
con la solicitud de creación.
API
En la API de REST, realiza una solicitud GET
al siguiente URI para obtener el estado de la operación del recurso de espera:
https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]
En el ejemplo anterior, se ilustra lo siguiente:
[PROJECT_ID]
es el ID del proyecto de esta solicitud.[CONFIG_NAME]
es el nombre de la configuración para esta solicitud.[WAITER_NAME]
es el nombre del recurso de espera que se sondear.
Si la operación aún está en curso, la API muestra una respuesta como la siguiente, sin un estado:
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]"
}
Si la operación se completa, se marca como done
y muestra una de las respuestas descritas en la sección Respuestas del recurso de espera.
Para obtener más información sobre el método, lee la documentación de waiters().create
.
Respuestas del recurso de espera
Condición final de éxito
Si el recurso de espera ha cumplido una condición final de éxito, la operación muestra el recurso de espera:
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.runtimeconfig.v1beta1.Waiter",
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]",
"timeout": "360.000s",
"failure": {
"cardinality": {
"path": "[SUCCESS_PATH_PREFIX]",
"number": "[SUCCESS_NUMBER]"
}
},
"success": {
"cardinality": {
"path": "[FAILURE_PATH_PREFIX]",
"number": [FAILURE_NUMBER]
}
},
"createTime": "2016-04-12T18:02:13.316695490Z",
"done": true
}
}
Condición de falla
Si el recurso de espera cumple una condición final de falla o se agota el tiempo de espera, la operación muestra un error.
Se cumplió la condición de falla
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"error": {
"code": 9,
"message": "Failure condition satisfied."
}
}
Se agotó el tiempo de espera del recurso de espera
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"error": {
"code": 4,
"message": "Timeout expired."
}
}
Pasos siguientes
- Obtén más información sobre Runtime Configurator.
- Obtén información sobre cómo configurar y obtener variables.
- Configura un Agente de observación como una variable específica.
- Crea y borra recursos RuntimeConfig.
- Consulta la referencia de v1beta1.
- Consulta las Cuotas para Runtime Configurator.