Questa pagina spiega come creare una risorsa Waiter. Per saperne di più sui waiter, leggi i Concetti fondamentali di Runtime Configurator.
Una risorsa Waiter attende una determinata condizione di successo o errore prima di restituire una risposta. Sia per il successo che per l'errore, imposti una condizione di cardinalità, in cui il waiter attende la creazione di un certo numero di variabili in un prefisso di percorso specifico. Una volta create le variabili, il waiter viene restituito. Il codice dell'applicazione può quindi rispondere al successo o all'errore. Se lo stato attuale delle variabili corrisponde già alle condizioni finali di successo o errore, il waiter restituirà immediatamente il successo o l'errore.
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 alle 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 di successo ed errore, in cui il waiter viene restituito correttamente se il numero di percorsi in
/status/successè tre e non riesce 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 una risorsa waiter:
- È consentita una sola condizione di successo e una sola condizione di errore per waiter.
- Devi mantenere una risorsa waiter per percorso.
- Le condizioni di errore vengono sempre valutate prima delle condizioni di successo.
- Non sovrapporre i prefissi di percorso tra le condizioni.
Crea la risorsa waiter.
Deployment Manager
Per creare una risorsa waiter in Deployment Manager, specifica il tipo di waiter:
runtimeconfig.v1beta1.waiterNelle proprietà della risorsa waiter, fornisci
name,location,timeoute le condizioni finali della risorsa 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 Config per questa richiesta.[WAITER_NAME]è il nome di questa risorsa waiter.[TIMEOUT_SECS]è il numero di secondi di attesa prima che la risorsa waiter vada in timeout. 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 questa risorsa waiter.[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 che la risorsa waiter vada in timeout.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 la risorsa waiter, lo strumento esegue il polling della risorsa Operations correlata finché la risorsa waiter non restituisce una delle risposte applicabili.
Per un riferimento completo a questo comando
gcloud, consulta laruntime-config configs waitersdocumentazione di riferimento.
API
Nell'API, invia una richiesta
POSTal seguente URI:https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waitersdove:
[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 della risorsa 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 della risorsa waiter da creare.[TIMEOUT_SECS]è il numero di secondi di attesa prima che la risorsa waiter vada in timeout.[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.
Se la richiesta ha esito positivo, restituisce il nome dell'oggetto delle operazioni che esegui il polling per il completamento:
{ "name": "projects/[PROJECT_ID]/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]" }Poi, esegui il polling della risorsa waiter per verificare periodicamente quando viene restituita.
Per saperne di più sul metodo, consulta la
waiters().createdocumentazione.
Esecuzione del polling di una risorsa waiter
Dopo aver creato una risorsa waiter, esegui il polling della risorsa Operations correlata
per verificare se la risorsa waiter ha soddisfatto una delle condizioni finali. Se la risorsa waiter ha soddisfatto una condizione finale o è andata in timeout, l'operazione viene restituita come done e restituisce una risposta in base ai risultati della risorsa waiter.
Utilizza gcloud o l'API per eseguire il polling di una risorsa waiter.
gcloud
Con Google Cloud CLI, quando invii una richiesta per creare una risorsa waiter, lo strumento esegue automaticamente il polling e attende che la risorsa waiter venga restituita. Durante il polling della risorsa waiter, lo strumento stampa una risposta simile alla seguente:
Waiting for waiter [WAITER_NAME] to finish...
Se non vuoi che lo strumento esegua il polling della risorsa 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 della risorsa 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 della risorsa waiter di cui eseguire il polling.
Se l'operazione è ancora in corso, l'API restituisce una risposta simile alla 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 della risorsa waiter.
Per saperne di più sul metodo, consulta la
waiters().create
documentazione.
Risposte della risorsa waiter
Condizione finale riuscita
Se la risorsa waiter ha soddisfatto una condizione finale 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 la risorsa waiter soddisfa la condizione finale di errore o va in 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 della risorsa 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 recuperare le variabili.
- Imposta una risorsa Watcher per una variabile specifica.
- Crea ed elimina le risorse RuntimeConfig.
- Consulta il riferimento v1beta1.
- Consulta le quote per Runtime Configurator.