Construtor de if / switch / class para iRules
Descreva uma decisão como regras e receba-a escrita como uma cadeia if / elseif, um switch e um class match com seus data groups em tmsh, e veja qual pool cada forma escolhe para um valor de teste. Mostra onde o primeiro casamento e o casamento mais longo divergem. Local, sem rede.
RedesRegras, em ordem
- 1
- 2
- 3
As formas discordam. Testado com /api/v2/users
- if / elseif →
api_pool - switch →
api_pool - class match →
api_v2_pool
- A regra 2 nunca pode ser escolhida por if ou switch: a regra 1 vem antes e casa com todo valor que a regra 2 casa.
- As regras usam mais de um tipo de comparação, então a forma class precisa de um data group por comparação, consultados na ordem em que as comparações aparecem pela primeira vez.
- class match com starts_with ou ends_with devolve a entrada mais longa que casar, seja qual for a ordem das regras (referência de class da F5). if e switch pegam a primeira regra que casar, em ordem.
if / elseif
Escolheu para o valor de teste: api_pool
As condições são testadas de cima para baixo; vence a primeira verdadeira.
switch
Escolheu para o valor de teste: api_pool
Os padrões são testados de cima para baixo; vence o primeiro que casar. O -- impede que um valor começando com hífen seja lido como opção (F5 K15650046).
class match
Escolheu para o valor de teste: api_v2_pool
Os data groups (tmsh)
Cada consulta devolve o valor da entrada que casou, aqui o nome do pool. Os data groups precisam existir no BIG-IP; as definições em tmsh estão abaixo.
Referências
- F5 iRules reference: class
- F5 iRules reference: Operators
- Tcl 8.4 manual: switch
- F5 K15650046: Tcl code injection security exposure
- F5 DevCentral: iRules Style Guide (JRahm with Jim_Deucker, 2022-12-22)
- F5 iRules reference: priority
- F5 K6091: The version of Tcl used to develop iRules
- F5 iRules reference: HTTP::path
- Tcl 8.4 manual: Tcl (the substitution rules)