Questa pagina spiega come creare una risorsa Waiter. Per scoprire di più sui camerieri, consulta Runtime Configurator Fundamentals.
Una risorsa Waiter attende una determinata condizione di operazione riuscita o di errore prima di restituire una risposta. Sia per l'esito positivo che per quello negativo, devi impostare una condizione di cardinalità, in cui il cameriere attende la creazione di un certo numero di variabili in un prefisso di percorso specifico. Dopo aver creato le variabili, il cameriere restituisce. Il codice dell'applicazione può quindi reagire all'esito positivo o negativo. Se lo stato attuale delle variabili corrisponde già alle condizioni di fine riuscita o non riuscita, il cameriere restituirà immediatamente l'esito positivo o negativo.
Prima di iniziare
- Se vuoi utilizzare gli esempi a riga di comando di questa guida, installa lo strumento a riga di comando "gcloud".
- Se vuoi utilizzare gli esempi di API descritti in questa guida, configura l'accesso alle API.
- Leggi Runtime Configurator Fundamentals.
- Leggi Creazione ed eliminazione delle risorse RuntimeConfig.
- Consulta la sezione Impostazione e recupero dei dati.
Creazione di una risorsa waiter
Per creare un cameriere:
Determina il successo e, facoltativamente, la condizione di errore per il cameriere.
Ad esempio, il seguente codice campione imposta le condizioni per l'esito positivo e negativo, in cui il cameriere restituisce correttamente se il numero di percorsi in
/status/success
è tre e ha esito negativo se il percorso in/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 la definizione di un cameriere:
- Sono consentite una sola condizione di operazione riuscita e una sola condizione di errore per cameriere.
- Devi avere un cameriere per percorso.
- Le condizioni di errore vengono sempre valutate prima di quelle di successo.
- Non sovrapporre i prefissi del percorso tra le condizioni.
Crea il cameriere.
Deployment Manager
Per creare un cameriere in Deployment Manager, specifica il tipo di cameriere:
runtimeconfig.v1beta1.waiter
Nelle proprietà del cameriere, specifica
name
,location
,timeout
e le condizioni di fine del cameriere:- 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 di attesa prima del timeout del cameriere. Ad esempio, per 300 secondi, usa300s
.[SUCCESS_PATH_PREFIX]
è il prefisso del percorso da verificare per una condizione di successo.[SUCCESS_NUMBER]
è il numero di variabili presenti in questo percorso che devono essere considerate 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 verificare per una condizione di successo.[SUCCESS_NUMBER]
è il numero di variabili presenti in questo percorso che devono essere considerate riuscite.[TIMEOUT_SECS]
il numero di secondi di attesa prima del timeout del cameriere.gcloud CLI restituisce una risposta simile a:
creato [https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/example-waiter].
Dopo aver creato il cameriere, lo strumento esegue il polling della risorsa Operations correlata fino a quando il cameriere non torna con una delle risposte applicabili.
Per un riferimento completo per questo comando
gcloud
, leggi la documentazione di riferimento diruntime-config configs waiters
.
API
Nell'API, effettua 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 cameriere, la condizione di operazione riuscita 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 cameriere da creare.[TIMEOUT_SECS]
il numero di secondi di attesa prima del timeout del cameriere.[SUCCESS_PATH_PREFIX]
è il prefisso del percorso da verificare per una condizione di successo.[SUCCESS_NUMBER]
è il numero di variabili presenti in questo percorso che devono essere considerate riuscite.
In caso di esito positivo, la richiesta restituisce il nome dell'oggetto operazioni di cui esegui il polling per il completamento:
{ "name": "projects/[PROJECT_ID]/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]" }
Quindi, fai un sondaggio con il cameriere per controllare periodicamente quando il cameriere è di ritorno.
Per saperne di più sul metodo, consulta la documentazione di
waiters().create
.
Fa il pollice a un cameriere
Dopo aver creato un cameriere, esegui il polling della
risorsa operativa
correlata per verificare se il cameriere ha soddisfatto una delle condizioni di fine. Se il cameriere
ha soddisfatto una condizione di fine o è scaduto, l'operazione restituisce done
e
restituisce una risposta in base ai risultati del cameriere.
Utilizza gcloud
o l'API per chiedere a un cameriere.
gcloud
Con Google Cloud CLI, quando effettui una richiesta per creare un waiter, lo strumento esegue automaticamente il polling e attende il ritorno del cameriere. Lo strumento stampa una risposta come la seguente mentre fa il pollice al cameriere:
Waiting for waiter [WAITER_NAME] to finish...
Se non vuoi che lo strumento esegua il polling del cameriere dopo averlo creato, fornisci il flag --async
alla richiesta di creazione.
API
Nell'API REST, effettua una richiesta GET
al seguente URI per ottenere lo stato dell'operazione Waiter:
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 cameriere per il sondaggio.
Se l'operazione è ancora in corso, l'API restituisce una risposta come la seguente, priva di stato:
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]"
}
Una volta completata, l'operazione viene contrassegnata come done
e restituisce una delle risposte descritte nella sezione Risposte del cameriere.
Per saperne di più sul metodo, consulta la documentazione di waiters().create
.
Risposte del cameriere
Condizione di fine riuscita
Se il cameriere ha soddisfatto una condizione di fine successful, 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 cameriere soddisfa la condizione di fine failure o è scaduto, l'operazione restituisce un errore.
La condizione dell'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 cameriere
{
"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 variabili.
- Imposta un Watcher su una variabile specifica.
- Crea ed elimina le risorse RuntimeConfig.
- Fai riferimento al riferimento v1beta1.
- Consulta Quote per Runtime Configurator.