In questa pagina viene spiegato come creare una risorsa Waiter. Per scoprire di più sui checkpoint, consulta la sezione Concetti fondamentali di Runtime Configurator.
Una risorsa Waiter attende una determinata condizione di successo o fallimento prima di restituire una risposta. Sia per il successo che per l'errore, imposti una condizione di cardinalità, in cui il gestore attende che venga creato un determinato numero di variabili sotto un prefisso di percorso specifico. Dopo aver creato le variabili, il publisher i resi. Il codice dell'applicazione può quindi rispondere all'esito positivo o negativo. Se lo stato corrente delle variabili corrisponde già alle condizioni di fine di esito o fallimento, l'awaiter restituirà immediatamente esito positivo o negativo.
Prima di iniziare
- Se vuoi utilizzare gli esempi a riga di comando presenti 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 l'articolo Creare ed eliminare le risorse RuntimeConfig.
- Leggi Impostazione e recupero dei dati.
Creazione di una risorsa waiter
Per creare un waiter:
Determina la condizione di successo ed eventualmente di errore per il gestore.
Ad esempio, il seguente codice di esempio imposta le condizioni di esito positivo e di errore, in cui il gestore restituisce un valore corretto se il numero di percorsi al di sotto di
/status/success
è pari a tre e non restituisce alcun valore se il percorso al di sotto di/status/success
è pari a 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 solo una condizione di operazione riuscita e una condizione di errore per cameriere.
- Devi mantenere un gestore per percorso.
- Le condizioni di errore vengono sempre valutate prima di quelle di successo.
- Non sovrapporre i prefissi del percorso tra le condizioni.
Crea la risorsa waiter.
Deployment Manager
Per creare un waiter in Deployment Manager, specifica il tipo di waiter:
runtimeconfig.v1beta1.waiter
Nelle proprietà del cameriere, fornisci
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 Config per questa richiesta.[WAITER_NAME]
è il nome del cameriere.[TIMEOUT_SECS]
è il numero di secondi di attesa prima che il cameriere si verifica un timeout. Ad esempio, per 300 secondi, utilizza300s
.[SUCCESS_PATH_PREFIX]
è il prefisso del percorso da monitorare per verificare la presenza di una condizione di successo.[SUCCESS_NUMBER]
è il numero di variabili esistenti in questo percorso per essere considerato riuscito.
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 del cameriere.[CONFIG_NAME]
è la risorsa RuntimeConfig per questa richiesta.[SUCCESS_PATH_PREFIX]
è il prefisso del percorso da monitorare per verificare la presenza di una condizione di successo.[SUCCESS_NUMBER]
è il numero di variabili presenti in questa del tuo percorso di apprendimento.[TIMEOUT_SECS]
il numero di secondi di attesa prima che il cameriere fuori.L'interfaccia a riga di comando gcloud restituisce una risposta simile alla seguente:
Creato [https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/example-waiter].
Dopo aver creato l'oggetto waiter, lo strumento esegue il polling della risorsa Operations correlata fino a quando l'oggetto waiter non restituisce una delle risposte applicabili.
Per un riferimento completo per questo comando
gcloud
, leggi leruntime-config configs waiters
documentazione di riferimento.
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 dell'attesa, 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 dell'avvertimento da creare.[TIMEOUT_SECS]
il numero di secondi di attesa prima che il cameriere fuori.[SUCCESS_PATH_PREFIX]
è il prefisso del percorso da monitorare per una condizione di successo.[SUCCESS_NUMBER]
è il numero di variabili esistenti in questo percorso per essere considerato riuscito.
In caso di esito positivo, la richiesta restituisce il nome dell'oggetto operazioni che polli per il completamento:
{ "name": "projects/[PROJECT_ID]/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]" }
Poi, polleggia il cameriere per controllare periodicamente quando torna.
Per scoprire di più sul metodo, consulta la documentazione di
waiters().create
.
Eseguire il polling di un waiter
Dopo aver creato un cameriere, chiedi
Risorsa operazioni
per verificare se il cameriere ha soddisfatto una delle condizioni finali. Se il cameriere
ha soddisfatto una condizione di fine o è scaduto, l'operazione restituisce done
e
restituisce una risposta basata sui risultati del cameriere.
Utilizza gcloud
o l'API per eseguire il polling di un gestore.
gcloud
Con l'interfaccia a riga di comando Google Cloud, quando effettui una richiesta di creazione di un Waiter, lo strumento esegue automaticamente il polling e attende il ritorno del Waiter. Lo strumento stampa una risposta simile alla seguente durante l'esecuzione di un polling del gestore:
Waiting for waiter [WAITER_NAME] to finish...
Se non vuoi che lo strumento chiami il cameriere dopo averlo creato, fornisci
il flag --async
con la tua richiesta di creazione.
API
Nell'API REST, effettua una richiesta GET
al seguente URI per ottenere
stato dell'operazione del cameriere:
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 dell'awaiter da sottoporre a 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 viene completata, viene contrassegnata come done
e viene restituita
una delle risposte descritte nella sezione Risposte del cameriere
.
Per scoprire di più sul metodo, consulta la documentazione di waiters().create
.
Risposte del cameriere
Condizione di fine riuscita
Se il gestore ha soddisfatto una condizione di fine positiva, 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 (errore), l'operazione restituisce un errore.
Condizione di errore 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 recuperare le variabili.
- Imposta un osservatore su una variabile specifica.
- Crea ed elimina le risorse RuntimeConfig.
- Fai riferimento al riferimento v1beta1.
- Fai riferimento a Quote per Runtime Configurator.