Configuración de StyleBook

Funciones integradas

Las expresiones de StyleBooks pueden usar funciones integradas.

Por ejemplo, puede usar la función incorporada, str() para transformar un número en una cadena.

str($parameters.order)

O bien, puede usar la función incorporada, int() para transformar una cadena en un entero.

int($parameters.priority)

La siguiente es la lista de funciones integradas admitidas en expresiones StyleBook con ejemplos de cómo se pueden usar:

estrella ()

La función str() transforma el argumento de entrada en un valor de cadena.

Tipos de argumentos permitidos:

  • string
  • number
  • TCP-port
  • boolean
  • IP address

Ejemplos:

  • La función "set-" + str(10) devuelve "set-10".
  • La función str(10) devuelve 10.
  • La función str(1.1.1.1) devuelve 1.1.1.1.
  • La función str(T rue) devuelve "T rue".
  • La función str(ADM) devuelve "mas".

menta ()

La función int() toma una cadena, un número, una dirección IP, o tcpport como argumento y devuelve un entero.

Ejemplos:

  • La función int("10") devuelve 10.
  • La función int(10) devuelve 10.
  • La función int(ip('0.0.4.1')) devuelve 1025.

libro (1)

La función bool() toma cualquier tipo como argumento. Si el valor del argumento es false, vacío o ausente, esta función devuelve false.

De lo contrario, regresa true.

Ejemplos:

  • La función bool(true) devuelve true.
  • La función bool(false) devuelve false.
  • La función bool($parameters.a) devuelve false si $parameters.a es false, vacío o ausente.

lente (2)

La función len() toma una cadena o una lista como argumento y devuelve el número de caracteres de una cadena o el número de elementos de una lista.

Ejemplo 1:

Si define una sustitución de la siguiente manera:

items: ["123", "abc", "xyz"]

La función len($substitutions.items) devuelve 3

Ejemplo 2:

La función len("Citrix ADM") devuelve 10.

Ejemplo 3:

Si $parameters.vips tiene los valores ['1.1.1.1', '1.1.1.2', '1.1.1.3'], la función len($parameters.vips) devuelve 3.

minuto ()

La función min() toma ya sea una lista o una serie de números o tcp-ports como argumentos, y devuelve el elemento más pequeño.

Ejemplos con una serie de números/tcp-ports:

  • La función min(80, 100, 1000) devuelve 80.
  • La función min(-20, 100, 400) devuelve -20.
  • La función min(-80, -20, -10) devuelve -80.
  • La función min(0, 100, -400) devuelve -400.

Ejemplos con una lista de números/tcp-ports:

  • La función $parameters.ports es una lista de tcp-ports y tiene los valores: [80, 81, 8080].

    La función min($parameters.ports) devuelve 80.

máximo ()

La función max() toma ya sea una lista o una serie de números o tcp-ports como argumentos, y devuelve el elemento más grande.

Ejemplos con una serie de números/tcp-ports:

  • La función max(80, 100, 1000) devuelve 1000.
  • La función max(-20, 100, 400) devuelve 400.
  • La función max(-80, -20, -10) devuelve -10.
  • La función max(0, 100, -400) devuelve 100.

Ejemplos con una lista de números/tcp-ports:

  • La función $parameters.ports es una lista de tcp-ports y tiene los valores: [80, 81, 8080].

    La función max($parameters.ports) devuelve 8080.

papelera ()

La función bin() toma un número como argumento y devuelve una cadena que representa el número en formato binario.

Ejemplos de expresiones:

La función bin(100) devuelve 0b1100100.

oct ()

La función oct() toma un número como argumento y devuelve una cadena que representa el número en formato octal.

Ejemplos de expresiones:

La función oct(100) devuelve 0144.

hexágono ()

La función hex() toma un número como argumento y devuelve una cadena en minúsculas que representa el número en formato hexadecimal.

Ejemplos de expresiones:

La función hex(100) devuelve 0x64.

inferior ()

La función lower() toma una cadena como argumento y devuelve la misma cadena en minúsculas.

Ejemplo:

La función lower("ADM") devuelve adm.

superior ()

La función upper() toma una cadena como argumento y devuelve la misma cadena en mayúsculas.

Ejemplo:

La función upper("Citrix ADM") devuelve CITRIX ADM.

suma ()

La función sum() toma una lista de números o tcpports como argumentos y devuelve la suma de los números en la lista.

Ejemplo 1:

Si define una sustitución de la siguiente manera: sustituciones:

list-of-numbers = [11, 22, 55]

La función sum($substitutions.list-of-numbers) devuelve 88.

Ejemplo 2:

Si $parameters.ports es [80, 81, 82], la función sum($parameters.ports) devuelve 243.

poda ()

La función pow() toma dos números como argumentos y devuelve un número que representa el primer argumento elevado a la potencia del segundo.

Ejemplo:

La función pow(3,2) devuelve 9.

Clip ()

La función ip() toma un entero, una cadena o una dirección IP como argumento y devuelve la dirección IP basada en el valor de entrada.

Ejemplos:

  • Especifique una dirección IP en la función ip:

    La función ip(3.1.1.1) devuelve 3.1.1.1.

  • Especifique una cadena en la función ip:

    La función ip('2.1.1.1') devuelve 2.1.1.1

  • Especifique un entero en la función ip:

    • La función ip(12) devuelve 0.0.0.12.

    • Cuando se especifica un entero como cadena en la función ip, devuelve una dirección IP equivalente de la entrada.

      La función ip('1025') devuelve 0.0.4.1.

    Esta función también admite las operaciones de suma y resta enteros y devuelve una dirección IP resultante.

    • Adición: La función ip(1025) + ip(12) devuelve 0.0.4.13.

    • Resta: La función ip('1025') - ip(12) devuelve 0.0.3.245.

    • Combinar suma y resta: Los ip('1.1.1.1') + ip('1.1.1.1') – ip(2) retornos 2.2.2.0.

ip_network ()

La función ip_network toma la dirección IP y la longitud de la máscara de red como argumentos y devuelve una notación de red IP.

Example-1:

La función ip_network(1.1.1.1, 28) devuelve 1.1.1.1/28.

Example-2:

Considera el valor 1.1.1.1 de $parameters.ipaddr. La función ip_network($parameters.ipaddr, 30) devuelve 1.1.1.1/30.

Example-3:

Considera el valor 24 de $parameters.netmask-len. La función ip_network(23.1.12.76, $parameters.netmask-len) devuelve 23.1.12.76/24.

network_ip ()

La función network_ip() devuelve la primera dirección IP de la red IP especificada.

Ejemplo:

La función network_ip(1.1.1.1/28) devuelve 1.1.1.0. En este ejemplo, 1.1.1.0 es la primera dirección IP en la red dada.

subredes ()

La función subnets() devuelve la lista de subredes de la red IP especificada y la longitud de la máscara de red.

Ejemplo:

La función subnets(1.1.1.1/28, 30) devuelve la lista de subredes de la red IP dada y la longitud de la máscara de red. La salida puede ser la siguiente:

[1.1.1.0/30', '1.1.1.4/30', '1.1.1.8/30', '1.1.1.12/30']

netmask_ip ()

La función netmask_ip() devuelve la dirección IP de la máscara de red para la red IP especificada.

Ejemplo:

La función netmask_ip(1.1.1.1/28) devuelve 255.255.255.240. Para una red de IP, 255.255.255.240 es la dirección IP de la máscara de red.

es_netmask_ip ()

La función is_netmask_ip() acepta un ipaddress como entrada. Además, devuelve True si el valor especificado es una dirección IP de máscara de red válida.

Ejemplo 1:

La función is_netmask_ip(255.255.255.240) devuelve True porque el valor especificado es una dirección IP de máscara de red válida.

Ejemplo 2:

La función is_netmask_ip(255.255.255.232) devuelve False porque el valor especificado no es una dirección IP de máscara de red válida.

broadcast_ip ()

La función broadcast_ip() devuelve la dirección IP de difusión de la red IP especificada.

Ejemplo:

La función broadcast_ip(1.1.1.1/28) devuelve 1.1.1.15. Para una red de IP, 1.1.1.15 es la dirección IP de transmisión.

cidr ()

La función cidr() devuelve la notación CIDR para la red IP especificada.

Ejemplo:

La función cidr(1.1.1.1/28) devuelve el 1.1.1.0/28. Para una red de IP, 1.1.1.0/28 es la notación CIDR.

is_cidr ()

La función is_cidr() acepta un ipnetwork como entrada. Y, devuelve True si el valor especificado coincide con la notación CIDR de la red IP.

Example-1:

La función is_cidr(1.1.1.0/24) devuelve True porque el valor especificado es la notación CIDR de la red dada.

Example-2:

La función is_cidr(1.1.1.1/28) devuelve False porque la notación CIDR de la red dada es diferente del valor especificado.

is_in_network ()

La función is_in_network() acepta ipnetwork y ipaddress valores. Y, devuelve True si la dirección IP especificada existe en la red IP especificada.

Example-1:

La función is_in_network(1.1.1.1/24, 1.1.1.121) devuelve True porque la 1.1.1.121 dirección es parte de la 1.1.1.1/24 red.

Example-2:

La función is_in_network(1.1.1.1/28, 2.1.1.1) devuelve Fasle porque la 2.1.1.1 dirección no es parte de la 1.1.1.1/28 red.

base64.encode()

La función base64.encode() toma un argumento de cadena y devuelve la cadena codificada base64.

Ejemplo:

La función base64.encode("abcd") devuelve YWJjZA==.

base64.decode()

La función base64.decode toma una cadena codificada base64 como argumento y devuelve la cadena decodificada.

Ejemplo:

La función base64.decode("YWJjZA==") devuelve abcd.

existe ()

La función exists() toma un argumento de cualquier tipo y devuelve un booleano. El valor devuelto es True si la entrada tiene algún valor. El valor devuelto es False si el argumento de entrada no tiene un valor (es decir, no hay valor).

Tenga en cuenta que $parameters.monitor es un parámetro opcional. Si proporciona un valor a este parámetro al crear un paquete de configuración, existe la función ($parameters.monitor) que devuelve True.

De lo contrario, regresa False.

filtro ()

La función filter() toma dos argumentos.

Argumento 1: una función de sustitución que toma un argumento y devuelve un valor booleano.

Argumento 2: una lista.

La función devuelve un subconjunto de la lista original donde cada elemento evalúa True cuando se pasa a la función de sustitución en el primer argumento .

Ejemplo:

Supongamos que hemos definido una función de sustitución de la siguiente manera.

Sustituciones:

x(a): $a != 81

Esta función devuelve True si el valor de entrada no es igual a 81. De lo contrario, regresa False.

Supongamos$parameters.ports que es [81, 80, 81, 89].

filter($substitutions.x, $parameters.ports) devuelve [80, 89] eliminando todas las apariciones de 81 de la lista.

si-entonces más ()

La función if-then-else() toma tres argumentos.

Argumento 1: Expresión booleana

Argumento 2: Cualquier expresión

Argumento 3: Cualquier expresión (opcional)

Si la expresión en el argumento 1 se evalúa como True, la función devuelve el valor de la expresión proporcionada como argumento 2.

De lo contrario, si se proporciona el argumento 3, la función devuelve el valor de la expresión en el argumento 3.

Si no se proporciona el argumento 3, la función devuelve no.

Ejemplo 1:

La función if-then-else($parameters.servicetype == HTTP, 80, 443) devuelve 80 si $parameters.servicetype tiene el valor HTTP. De lo contrario, la función devuelve 443.

Ejemplo 2:

La función if-then-else($parameters.servicetype == HTTP, $parameters.hport, $parameters.sport) devuelve el valor de $parameters.hport si $parameters.servicetype tiene el valor HTTP.

De lo contrario, la función devuelve el valor de $parameters.sport.

Ejemplo 3:

if-then-else($parameters.servicetype == HTTP, 80) devuelve 80 si $parameters.servicetype tiene el valor HTTP.

De lo contrario, la función no devuelve ningún valor.

unirse ()

La función join() toma dos argumentos:

Argumento 1: lista de números tcp-ports, cadenas o direcciones IP

Argumento 2: cadena delimitadora (opcional)

Esta función une los elementos de la lista proporcionada como argumento uno en una cadena, donde cada elemento está separado por la cadena delimitador proporcionada como argumento dos. Si no se proporciona el argumento dos, entonces los elementos de la lista se unen como una sola cadena.

Ejemplo:

  • $parameters.ports es [81, 82, 83].

    • Con argumento delimitador:

      La función join($parameters.ports, '-') devuelve 81-82-83.

    • Sin argumento delimitador:

      La función join($parameters.ports) devuelve 818283.

split()

La función split() divide una cadena de entrada en varias listas dependiendo de los separadores especificados. Si no se especifica ningún separador o en blanco (''), esta función considera el espacio como un separador y divide la cadena en listas.

Ejemplos:

  • La función split('Example_string_split', 's') devuelve ['Example_','tring_','plit'].

  • La función split('Example string split') devuelve ['Example','string','split'].

  • La función split('Example string split', '') devuelve ['Example','string','split'].

  • La función split('Example string') devuelve ['Example','string'].

    Esta función considera los espacios continuos como un espacio.

mapa ()

La función map() toma dos argumentos;

Argumento 1: Cualquier función

Argumento 2: Una lista de elementos.

La función devuelve una lista donde cada elemento de la lista es el resultado de aplicar la función map() (argumento uno) al elemento correspondiente en el argumento dos.

Funciones permitidas en el argumento 1:

  • Funciones integradas que toman un argumento:

    base64.encode, base64.decode, bin, bool, exists, hex, int, ip, len, lower, upper, oct, quotewrap, str, trim, upper, url.encode, url.decode

  • Funciones de sustitución que toman al menos un argumento.

Ejemplo:

Supongamos que $parameters.nums lo es [81, 82, 83].

  • Mapa mediante una función integrada, str

    La función map(str, $parameters.nums) devuelve ["81", "82", "83"]

    El resultado de la función de mapa es la lista de cadenas donde cada elemento es cadena se calcula aplicando la función str en el elemento correspondiente en la lista de entrada ($parameters.nums).

  • Mapear mediante una función de sustitución

    • Sustituciones:

      add-10(port): $port + 10

    • Expresión:

      La función map($substitutions.add-10, $parameters.nums) devuelve una lista de números: [ 91, 92, 93 ]

El resultado de esta función de mapa es una lista de números, cada elemento se calcula aplicando la función de sustitución $substitutions.add-10 en el elemento correspondiente en la lista de entrada ($parameters.nums).

envoltura de comillas ()

La función quotewrap() toma una cadena como argumento y devuelve una cadena después de agregar un carácter de comilla doble antes y después del valor de entrada.

Ejemplo:

La función quotewrap("ADM") devuelve "mas"

reemplazar ()

La función replace() toma tres argumentos:

Argumento 1: cadena

Argumento 2: cadena o lista

Argumento 3: cadena (opcional)

La función reemplaza todas las apariciones del argumento dos por el argumento tres en el argumento uno.

Si no se proporciona el argumento tres, todas las apariciones del argumento dos se eliminan del argumento uno (en otras palabras, se reemplazan con una cadena vacía).

Reemplazar una subcadena por otra subcadena:

  • La función replace('abcdef', 'def', 'xyz') devuelve abcxyz.

    Todas las ocurrencias de def se reemplazan por xyz.

  • replace('abcdefabc', 'def') devuelve abcabc.

    Como no hay un tercer argumento, def se elimina de la cadena resultante.

Especifique la lista de caracteres que quiere reemplazar en una cadena.

$parameters.spl_chars = ['@', '#', '!', '%']

Esta lista contiene los valores que deben reemplazarse en una cadena de entrada.

La función replace('An#example@to%replace!characters', $parameters.spl_chars, '_') devuelve An_example_to_replace_characters.

La cadena de salida tiene guión bajo (_) en lugar de caracteres especificados en la lista $parameters.spl_chars.

recortar ()

La función trim() devuelve una cadena donde los espacios en blanco iniciales y finales se eliminan de la cadena de entrada.

Ejemplo:

La función trim(' abc ') devuelve abc.

truncar ()

La función truncate() toma dos argumentos:

Argumento 1: cadena

Argumento 2: número

La función devuelve una cadena en la que la cadena de entrada del argumento uno se trunca a la longitud especificada por el argumento dos.

Ejemplo:

truncate('Citrix ADM', 6) devuelve Citrix.

distinct()

La función distinct() extrae elementos únicos de una entrada de lista.

Ejemplos: Si $parameters.input_list es ['ADM', 'ADC', 'VPX', 'ADC', 'ADM', 'CPX'], la función distinct($parameters.input_list) devuelve ['ADM', 'ADC', 'VPX', 'CPX'].

url.encode()

La función url.encode() devuelve una cadena donde los caracteres se transforman mediante el juego de caracteres ASCII de acuerdo con RFC 3986.

Ejemplo:

La función url.encode("a/b/c") devuelve a%2Fb%2Fc.

url.decode()

La función url.decode() devuelve una cadena donde el argumento codificado URL se decodifica en una cadena regular de acuerdo con RFC 3986.

Ejemplo:

La función url.decode("a%2Fb%2Fc") devuelve a/b/c.

is-ipv4()

La función is-ipv4() toma una dirección IP como argumento y devuelve el booleano True si la dirección IP es del formato IPv4.

La función is-ipv4(10.10.10.10) devuelve True

is-ipv6()

La función is-ipv6() toma una dirección IP como argumento y devuelve el booleano True si la dirección IP es del formato IPv6.

La función is-ipv6(2001:DB8::) devuelve True

startswith()

La función startswith() determina si una cadena comienza con un prefijo dado. Esta función requiere dos argumentos de cadena obligatorios.

startswith(str, sub_str)

Esta función devuelve True cuando la cadena (str) comienza con la subcadena (sub_str).

Ejemplos:

  • La función startswith('Citrix', 'Ci') devuelve True.
  • La función startswith('Citrix', 'iC') devuelve False
  • La función startswith('Citrix', 'Ab') devuelve False

endswith()

La función endswith() determina si una cadena termina con un sufijo dado. Esta función requiere dos argumentos de cadena obligatorios.

endswith(str, sub_str)

Esta función devuelve True cuando la cadena (str) termina con la subcadena (sub_str).

Ejemplos:

  • La función endswith('Citrix', 'ix') devuelve True.
  • La función endswith('Citrix', 'Ix') devuelve False.
  • La función endswith('Citrix', 'ab') devuelve False.

contains()

La función contains() determina si una cadena contiene una subcadena dada. Esta función requiere dos argumentos de cadena obligatorios.

contains(str, sub_str)

Esta función devuelve True cuando la subcadena (sub_str) está contenida en cualquier lugar dentro de la cadena (str).

Ejemplos:

  • La función contains('Citrix', 'tri') devuelve True.
  • La función contains('Citrix', 'Ci') devuelve True.
  • La función contains('Citrix', 'ti') devuelve False

También puede utilizar esta función para comprobar si un elemento determinado pertenece a la lista.

Ejemplo:

list_of_strings = [“Citrix”, “Core”, ”Values”, ”Integrity”]

contains($parameters.list_of_strings, “Values”)
<!--NeedCopy-->

En este ejemplo, la función contains() devuelve True porque la lista contiene el elemento Valores.

Tipos de argumentos permitidos:

  • string
  • number
  • TCP-port
  • boolean
  • IP address

substring()

Utilice la función substring() para extraer una subcadena de una cadena.

substring(str, start_index, end_index)

Esta función requiere los dos argumentos obligatorios y un argumento entero opcional.

  • str (Obligatorio)
  • start_index (Obligatorio)
  • end_index (Optativo)

Esta función devuelve la subcadena de la cadena (str) que se encuentra entre las posiciones de índice especificadas. Si no especifica la posición del índice final, la función extrae la subcadena desde el índice inicial hasta el final de la cadena.

Nota

Cuando se especifica end_index, la subcadena excluye el carácter en la posición end_index.

Ejemplo:

  • La función substring('Citrix', 2) devuelve trix

  • La función substring('Citrix', 10) devuelve (")

    En este ejemplo, la función devuelve una cadena en blanco porque tiene una posición start_index no válida.

  • La función substring('Citrix', 2, 4) devuelve tr

    En este ejemplo, la función extrae los caracteres entre 2 y 4 posiciones de índice.

  • La función substring('Citrix', -3) devuelve rix

    Si quiere extraer caracteres que están al final de la cadena, especifique un valor negativo para el argumento start_index.

    En este ejemplo, la función extrae la subcadena que incluye los tres últimos caracteres de la cadena.

‘partido () ‘

La función match() comprueba si una cadena de entrada coincide con el patrón de expresión regular definido. Esta función acepta el patrón de expresiones regulares y las cadenas de búsqueda como argumentos. Opcionalmente, también puede especificar un tipo booleano para ignorar los patrones que distinguen mayúsculas de minúsculas.

Ejemplos:

  • match(“^[A-Z0-9]{2}_[A-Z0-9]{2,10}$”, “A2_B2”) devuelve True.

  • match(“^[A-Z0-9]{2}_[A-Z0-9]{2,10}$”, “a2_b2”) devuelve False.

  • match(“^[A-Z0-9]{2}_[A-Z0-9]{2,10}$”, “a2_B2”, $parameters.ignore_case) devuelve True.

‘sha256()’

Utilice esta función para calcular el hash SHA-256 de cualquier cadena. Esta función acepta una entrada de cadena de cualquier longitud y devuelve una cadena hash de longitud fija (64 caracteres).

Ejemplo:

components:
    -
        name: lbvserver-comp
        type: ns::lbvserver
        properties:
            name: sha256(lbserver-name)
            servicetype: SSL
            ipv46: 10.10.10.10
<!--NeedCopy-->

En este ejemplo, lbserver-name aparece como una cadena hash en el objeto ADC.

Esta función también puede aceptar expresiones como entrada.

Ejemplo:

components:
    -
        name: lbvserver-comp
        type: ns::lbvserver
        properties:
            name: sha256($parameters.lb-appname)
            servicetype: SSL
            ipv46: 10.10.10.10
<!--NeedCopy-->

‘relacionar () ‘

Utilice esta función para formar un objeto de diccionario a partir de un conjunto de listas. Acepta dos argumentos. El primer argumento es una lista de nombres de clave para el objeto de diccionario. El segundo argumento es una lista de listas, donde cada lista contiene los valores del nombre de clave correspondiente en la lista del primer argumento.

Ejemplo:

parameters:
    -
        name: server1
        type: string[]
    -
        name: server2
        type: string[]
    -
        name: list_of_keys
        type: string[]
        default:
            - "name"
            - "type"
            - "ip"
            - "port"

substitutions:
    list_of_servers: [$parameters.server1,$parameters.server2]

components:
    -
        name: svc-comp
        type: object
        properties:
            svcdetails: relate($parameters.list_of_keys,$substitutions.list_of_servers)
    -
        name: lb-comp
        type: ns::lbvserver
        repeat: $components.svc-comp.properties.svcdetails
        repeat-item: svcd
        properties:
            name: $svcd['name']
            servicetype: $svcd['type']
            ipv46: $svcd['ip']
            port: $svcd['port']
<!--NeedCopy-->

Este ejemplo tiene dos listas:

  • En la sección parameters, list_of_keys está definido, contiene name, type, ip y port. Al crear un paquete de configuración, el usuario de StyleBook proporciona estos valores.
  • En la sección substitutions, contiene list_of_servers para los que aplicar los valores.

La función relate() toma la entrada de list_of_keys y se aplica a los elementos correspondientes de list_of_servers.

Si el usuario de StyleBook proporciona los siguientes valores:

[["lb1","http","1.1.2.2","80"],["lb2","ssl","2.2.3.3","443"]]
<!--NeedCopy-->

La función relate() devuelve lo siguiente a cada servidor, respectivamente:

[{"name":"lb1","type":"http","ip":"1.1.2.2","port":"80"},{"name":"lb2","type":"ssl","ip":"2.2.3.3","port":"443"}
<!--NeedCopy-->