Questa pagina spiega come creare una risorsa Waiter. Per saperne di più sui waiter, leggi Concetti fondamentali di Runtime Configurator.
Una risorsa Waiter attende una determinata condizione di esito positivo o negativo prima di restituire una risposta. Per la riuscita e l'errore, imposti una condizione Cardinality in cui il waiter attende la creazione di un certo numero di variabili in un prefisso del percorso specifico. Dopo aver creato le variabili, il cameriere torna. Il codice dell'applicazione può quindi rispondere al successo o all'errore. Se lo stato attuale delle variabili corrisponde già alle condizioni di fine di esito positivo o negativo, il waiter restituirà immediatamente l'esito positivo o negativo.
Prima di iniziare
- Se vuoi utilizzare gli esempi di riga di comando in questa guida, installa lo strumento a riga di comando`gcloud`.
- Se vuoi utilizzare gli esempi di API in questa guida, configura l'accesso API.
- Leggi Concetti fondamentali di Runtime Configurator.
- Leggi Creazione ed eliminazione delle risorse RuntimeConfig.
- Leggi Impostazione e recupero dei dati.
Creazione di una risorsa waiter
Per creare una risorsa waiter:
Determina la condizione di successo e, facoltativamente, di errore per il waiter.
Ad esempio, il seguente codice campione imposta le condizioni per la riuscita e l'errore, in cui il waiter viene restituito correttamente se il numero di percorsi sotto
/status/success
è tre e non riesce se il percorso sotto/status/failure
è due:{ '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 } } }
Best practice per definire un waiter:
- È consentita una sola condizione di esito positivo e una sola condizione di esito negativo per ogni waiter.
- Dovresti mantenere un solo waiter per percorso.
- Le condizioni di errore vengono sempre valutate prima di quelle di successo.
- Non sovrapporre i prefissi dei percorsi tra le condizioni.
Crea la risorsa waiter.
Deployment Manager
Per creare una risorsa waiter in Deployment Manager, specifica il tipo di waiter:
runtimeconfig.v1beta1.waiter
Nelle proprietà del waiter, fornisci
name
,location
,timeout
e le condizioni di fine del waiter:- 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]
dove:
[NAME]
è il nome della risorsa.[CONFIG_NAME]
è la risorsa di configurazione per questa richiesta.[WAITER_NAME]
è il nome di questo cameriere.[TIMEOUT_SECS]
è il numero di secondi da attendere prima del timeout del waiter. Ad esempio, per 300 secondi, utilizza300s
.[SUCCESS_PATH_PREFIX]
è il prefisso del percorso da monitorare per una condizione di successo.[SUCCESS_NUMBER]
è il numero di variabili che esistono in questo percorso da considerare riuscite.
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]
dove:
[WAITER_NAME]
è il nome di questo cameriere.[CONFIG_NAME]
è la risorsa RuntimeConfig per questa richiesta.[SUCCESS_PATH_PREFIX]
è il prefisso del percorso da monitorare per una condizione di successo.[SUCCESS_NUMBER]
è il numero di variabili che esistono in questo percorso da considerare riuscite.[TIMEOUT_SECS]
il numero di secondi di attesa prima del timeout del waiter.gcloud CLI restituisce una risposta simile alla seguente:
Created [https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/example-waiter].
Dopo aver creato il waiter, lo strumento esegue il polling della risorsa Operations correlata finché il waiter non restituisce una delle risposte applicabili.
Per un riferimento completo a questo comando
gcloud
, leggi laruntime-config configs waiters
documentazione di riferimento.
API
Nell'API, invia una richiesta
POST
al seguente URI:https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters
dove:
[PROJECT_ID]
è l'ID progetto per questa richiesta.[CONFIG_NAME]
è il nome della configurazione per questa richiesta.
Il payload della richiesta deve contenere il nome del waiter, la condizione di successo e la durata del timeout:
{ 'name': 'projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]', 'timeout': '[TIMEOUT_SEC]', 'success': { 'cardinality': { 'path': '[SUCCESS_PATH_PREFIX]', 'number': '[SUCCESS_NUMBER]' } } }
dove:
[PROJECT_ID]
è l'ID progetto per questa richiesta.[CONFIG_NAME]
è il nome della configurazione per questa richiesta.[WAITER_NAME]
è il nome del waiter da creare.[TIMEOUT_SECS]
il numero di secondi di attesa prima del timeout del waiter.[SUCCESS_PATH_PREFIX]
è il prefisso del percorso da monitorare per una condizione di successo.[SUCCESS_NUMBER]
è il numero di variabili che esistono in questo percorso da considerare riuscite.
In caso di esito positivo, la richiesta restituisce il nome dell'oggetto operations che interroghi per il completamento:
{ "name": "projects/[PROJECT_ID]/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]" }
Poi, chiama il cameriere per controllare periodicamente quando torna.
Per saperne di più sul metodo, leggi la
waiters().create
documentazione.
Esecuzione del polling di una risorsa waiter
Dopo aver creato un waiter, esegui il sondaggio della risorsa Operations correlata per verificare se il waiter ha soddisfatto una delle condizioni di fine. Se il waiter
ha soddisfatto una condizione finale o ha raggiunto il timeout, l'operazione viene restituita come done
e
restituisce una risposta in base ai risultati del waiter.
Utilizza gcloud
o l'API per eseguire il polling di un waiter.
gcloud
Con Google Cloud CLI, quando fai una richiesta per creare un waiter, lo strumento esegue automaticamente il polling e attende che il waiter restituisca una risposta. Lo strumento stampa una risposta simile alla seguente mentre interroga il waiter:
Waiting for waiter [WAITER_NAME] to finish...
Se non vuoi che lo strumento esegua il polling del waiter dopo la creazione, fornisci
il flag --async
con la richiesta di creazione.
API
Nell'API REST, invia una richiesta GET
al seguente URI per ottenere lo stato dell'operazione di attesa:
https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]
dove:
[PROJECT_ID]
è l'ID progetto per questa richiesta.[CONFIG_NAME]
è il nome della configurazione per questa richiesta.[WAITER_NAME]
è il nome del waiter da interrogare.
Se l'operazione è ancora in corso, l'API restituisce una risposta come la seguente, senza uno stato:
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]"
}
Se l'operazione è completata, viene contrassegnata come done
e restituisce
una delle risposte descritte nella sezione Risposte del waiter.
Per saperne di più sul metodo, leggi la
waiters().create
documentazione.
Risposte del cameriere
Condizione di fine riuscita
Se il waiter ha soddisfatto una condizione di fine riuscita, l'operazione restituisce la risorsa Waiter:
{
"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
}
}
Condizione di errore
Se il waiter soddisfa la condizione di fine failure o si verifica un timeout, l'operazione restituisce un errore.
La condizione di errore è stata soddisfatta
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"error": {
"code": 9,
"message": "Failure condition satisfied."
}
}
Timeout del waiter
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"error": {
"code": 4,
"message": "Timeout expired."
}
}
Passaggi successivi
- Scopri di più su Runtime Configurator.
- Scopri come impostare e ottenere le variabili.
- Imposta una sentinella su una variabile specifica.
- Crea ed elimina risorse RuntimeConfig.
- Consulta il riferimento v1beta1.
- Consulta le quote per Runtime Configurator.