Configuration de StyleBook

Fonctions intégrées

Les expressions dans StyleBooks peuvent utiliser des fonctions intégrées.

Par exemple, vous pouvez utiliser la fonction intégrée, str() pour transformer un nombre en chaîne.

str($parameters.order)

Ou, vous pouvez utiliser la fonction intégrée, int() pour transformer une chaîne en un entier.

int($parameters.priority)

Voici la liste des fonctions intégrées prises en charge dans les expressions StyleBook avec des exemples de leur utilisation :

str()

La fonction str() transforme l’argument input en une valeur de chaîne.

Types d’arguments autorisés :

  • string
  • number
  • tcp-port
  • boolean
  • ipaddress

Exemples :

  • La fonction "set-" + str(10) renvoie "set-10".
  • La fonction str(10) renvoie 10.
  • La fonction str(1.1.1.1) renvoie 1.1.1.1.
  • La fonction str(T rue) renvoie "T rue".
  • La fonction str(ADM) renvoie "mas".

int()

La fonction int() prend une chaîne, un nombre, une adresse IP ou tcpport comme argument et renvoie un entier.

Exemples :

  • La fonction int("10") renvoie 10.
  • La fonction int(10) renvoie 10.
  • La fonction int(ip('0.0.4.1')) renvoie 1025.

bool()

La fonction bool() prend n’importe quel type comme argument. Si la valeur de l’argument est false, vide ou absente, cette fonction renvoie false.

Sinon, elle renvoie true.

Exemples :

  • La fonction bool(true) renvoie true.
  • La fonction bool(false) renvoie false.
  • La fonction bool($parameters.a) renvoie false si $parameters.a est false, vide ou absent.

len()

La fonction len() prend une chaîne ou une liste comme argument, et renvoie le nombre de caractères dans une chaîne ou le nombre d’éléments d’une liste.

Exemple 1 :

Si vous définissez une substitution comme suit :

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

La fonction len($substitutions.items) renvoie 3

Exemple 2 :

La fonction len("NetScaler Console") renvoie 10.

Exemple 3 :

Si $parameters.vips a les valeurs ['1.1.1.1', '1.1.1.2', '1.1.1.3'], la fonction len($parameters.vips) renvoie 3.

min()

La fonction min() prend une liste ou une série de nombres ou des ports TCP comme arguments et renvoie le plus petit élément.

Exemples avec une série de numéros ou de ports TCP :

  • La fonction min(80, 100, 1000) renvoie 80.
  • La fonction min(-20, 100, 400) renvoie -20.
  • La fonction min(-80, -20, -10) renvoie -80.
  • La fonction min(0, 100, -400) renvoie -400.

Exemples avec une liste de numéros/ports TCP :

  • La prise en charge de $parameters.ports est une liste de ports TCP avec les valeurs suivantes : [80, 81, 8080].

    La fonction min($parameters.ports) renvoie 80.

max()

La fonction max() prend une liste ou une série de nombres ou des ports TCP comme arguments et renvoie l’élément le plus important.

Exemples avec une série de numéros ou de ports TCP :

  • La fonction max(80, 100, 1000) renvoie 1000.
  • La fonction max(-20, 100, 400) renvoie 400.
  • La fonction max(-80, -20, -10) renvoie -10.
  • La fonction max(0, 100, -400) renvoie 100.

Exemples avec une liste de numéros/ports TCP :

  • La prise en charge de $parameters.ports est une liste de ports TCP avec les valeurs suivantes : [80, 81, 8080].

    La fonction max($parameters.ports) renvoie 8080.

bin()

La fonction bin() prend un nombre comme argument, et renvoie une chaîne qui représente le nombre au format binaire.

Exemples d’expressions :

La fonction bin(100) renvoie 0b1100100.

oct()

La fonction oct() prend un nombre comme argument, et renvoie une chaîne qui représente le nombre au format octal.

Exemples d’expressions :

La fonction oct(100) renvoie 0144.

hex()

La fonction hex() prend un nombre comme argument, et renvoie une chaîne minuscule qui représente le nombre au format hexadécimal.

Exemples d’expressions :

La fonction hex(100) renvoie 0x64.

lower()

La fonction lower() prend une chaîne comme argument et renvoie la même chaîne en minuscules.

Exemple :

La fonction lower("ADM") renvoie adm.

upper()

La fonction upper() prend une chaîne comme argument et renvoie la même chaîne en majuscules.

Exemple :

La fonction upper("NetScaler Console") renvoie NetScaler Console.

sum()

La fonction sum() prend une liste de nombres ou tcpports comme arguments et renvoie la somme des nombres dans la liste.

Exemple 1 :

Si vous définissez une substitution comme suit : substitutions :

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

La fonction sum($substitutions.list-of-numbers) renvoie 88.

Exemple 2 :

Si $parameters.ports est [80, 81, 82], la fonction sum($parameters.ports) renvoie 243.

pow()

La fonction pow() prend deux nombres comme arguments et renvoie un nombre qui représente le premier argument soulevé à la puissance du second.

Exemple :

La fonction pow(3,2) renvoie 9.

ip()

La fonction ip() prend un entier, une chaîne ou une adresse IP comme argument et renvoie l’adresse IP en fonction de la valeur d’entrée.

Exemples :

  • Spécifiez une adresse IP dans la fonction ip:

    La fonction ip(3.1.1.1) renvoie 3.1.1.1.

  • Spécifiez une chaîne dans la fonction ip:

    La fonction ip('2.1.1.1') renvoie 2.1.1.1

  • Spécifiez un entier dans la fonction ip:

    • La fonction ip(12) renvoie 0.0.0.12.

    • Lorsque vous spécifiez un entier en tant que chaîne dans la fonction ip, il renvoie une adresse IP équivalente de l’entrée.

      La fonction ip('1025') renvoie 0.0.4.1.

    Cette fonction prend également en charge les opérations d’addition et de soustraction entières et renvoie une adresse IP résultante.

    • Addition : La fonction ip(1025) + ip(12) renvoie 0.0.4.13.

    • Soustraction : La fonction ip('1025') - ip(12) renvoie 0.0.3.245.

    • Combiner l’addition et la soustraction : ip('1.1.1.1') + ip('1.1.1.1') – ip(2) renvoie 2.2.2.0.

ip_network()

La fonction ip_network prend l’adresse IP et la longueur du masque réseau comme arguments et renvoie une notation de réseau IP.

Exemple1 :

La fonction ip_network(1.1.1.1, 28) renvoie 1.1.1.1/28.

Exemple-2 :

Tenez compte de la valeur 1.1.1.1 de $parameters.ipaddr. La fonction ip_network($parameters.ipaddr, 30) renvoie 1.1.1.1/30.

Exemple3 :

Tenez compte de la valeur 24 de $parameters.netmask-len. La fonction ip_network(23.1.12.76, $parameters.netmask-len) renvoie 23.1.12.76/24.

network_ip()

La fonction network_ip() renvoie la première adresse IP du réseau IP spécifié.

Exemple :

La fonction network_ip(1.1.1.1/28) renvoie 1.1.1.0. Dans cet exemple, 1.1.1.0 est la première adresse IP du réseau donné.

subnets()

La fonction subnets() renvoie la liste des sous-réseaux à partir du réseau IP spécifié et de la longueur du masque de réseau.

Exemple :

La fonction subnets(1.1.1.1/28, 30) renvoie la liste des sous-réseaux à partir du réseau IP et de la longueur du masque de réseau donnés. La sortie peut être la suivante :

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

netmask_ip()

La fonction netmask_ip() renvoie l’adresse IP du masque de réseau pour le réseau IP spécifié.

Exemple :

La fonction netmask_ip(1.1.1.1/28) renvoie 255.255.255.240. Pour le réseau IP donné, 255.255.255.240 correspond à l’adresse IP du masque de réseau.

is_netmask_ip()

La fonction is_netmask_ip() accepte un ipaddress comme entrée. Et elle renvoie True si la valeur spécifiée est une adresse IP de masque de réseau valide.

Exemple 1 :

La fonction is_netmask_ip(255.255.255.240) renvoie le résultat True car la valeur spécifiée est une adresse IP de masque réseau valide.

Exemple 2 :

La fonction is_netmask_ip(255.255.255.232) renvoie le résultat False car la valeur spécifiée n’est pas une adresse IP de masque réseau valide.

broadcast_ip()

La broadcast_ip() fonction renvoie l’adresse IP de diffusion pour le réseau IP spécifié.

Exemple :

La fonction broadcast_ip(1.1.1.1/28) renvoie 1.1.1.15. Pour le réseau IP donné, 1.1.1.15 est l’adresse IP de diffusion.

cidr()

La fonction cidr() renvoie la notation CIDR pour le réseau IP spécifié.

Exemple :

La cidr(1.1.1.1/28) fonction renvoie le 1.1.1.0/28. Pour le réseau IP donné, 1.1.1.0/28 est la notation CIDR.

is_cidr()

La fonction is_cidr() accepte un ipnetwork comme entrée. Et, il renvoie True si la valeur spécifiée correspond à la notation CIDR du réseau IP.

Exemple1 :

La fonction is_cidr(1.1.1.0/24) renvoie True car la valeur spécifiée est la notation CIDR du réseau donné.

Exemple-2 :

La fonction is_cidr(1.1.1.1/28) renvoie False car la notation CIDR du réseau donné est différente de la valeur spécifiée.

is_in_network ()

La fonction is_in_network() accepte les valeurs ipnetwork et ipaddress. Et, il renvoie True si l’adresse IP spécifiée existe dans le réseau IP spécifié.

Exemple1 :

La fonction is_in_network(1.1.1.1/24, 1.1.1.121) renvoie True car l’adresse 1.1.1.121 fait partie du réseau 1.1.1.1/24.

Exemple-2 :

La fonction is_in_network(1.1.1.1/28, 2.1.1.1) renvoie Fasle car l’adresse 2.1.1.1 ne fait pas partie du réseau 1.1.1.1/28.

base64.encode()

La fonction base64.encode() prend un argument de chaîne et renvoie la chaîne codée base64.

Exemple :

La fonction base64.encode("abcd") renvoie YWJjZA==.

base64.decode()

La fonction base64.decode prend une chaîne codée base64 comme argument et renvoie la chaîne décodée.

Exemple :

La fonction base64.decode("YWJjZA==") renvoie abcd.

exists()

La fonction exists() prend un argument de n’importe quel type et renvoie un booléen. La valeur renvoyée est True si l’entrée a une valeur quelconque. La valeur de retour est False Si l’argument input n’a pas de valeur (c’est-à-dire, aucune valeur).

Considérez que $parameters.monitor est un paramètre facultatif. Si vous fournissez une valeur à ce paramètre lors de la création d’un pack de configuration, la fonction exist ($parameters.monitor) renvoie True.

Sinon, elle renvoie False.

filter()

La fonction filter() prend deux arguments.

Argument 1 : fonction de substitution qui prend un argument et renvoie une valeur booléenne.

Argument 2 : une liste.

La fonction renvoie un sous-ensemble de la liste d’origine où chaque élément est évalué True lorsqu’il est passé à la fonction de substitution dans le premier argument.

Exemple :

Supposons que nous ayons défini une fonction de substitution comme suit.

Substitutions :

x(a): $a != 81

Cette fonction renvoie True si la valeur d’entrée n’est pas égale à 81. Sinon, elle renvoie False.

Supposons que $parameters.ports est [81, 80, 81, 89].

filter($substitutions.x, $parameters.ports) renvoie [80, 89] en supprimant toutes les occurrences de 81 de de la liste.

if-then-else()

La fonction if-then-else() prend trois arguments.

Argument 1 : une expression booléenne

Argument 2 : n’importe quelle expression

Argument 3 : n’importe quelle expression (facultatif)

Si l’expression de l’argument 1 est évaluée à True, la fonction renvoie la valeur de l’expression fournie en tant qu’argument 2.

Sinon, si l’argument 3 est fourni, la fonction renvoie la valeur de l’expression dans l’argument 3.

Si l’argument 3 n’est pas fourni, la fonction renvoie no.

Exemple 1 :

La fonction if-then-else($parameters.servicetype == HTTP, 80, 443) renvoie 80 si $parameters.servicetype a la valeur HTTP. Sinon, la fonction renvoie 443.

Exemple 2 :

La fonction if-then-else($parameters.servicetype == HTTP, $parameters.hport, $parameters.sport) renvoie la valeur de $parameters.hport si $parameters.servicetype a une valeur HTTP.

Sinon, la fonction renvoie la valeur de $parameters.sport.

Exemple 3 :

if-then-else($parameters.servicetype == HTTP, 80) renvoie 80 si $parameters.servicetype a la valeur HTTP.

Sinon, la fonction ne renvoie aucune valeur.

join()

La fonction join() prend deux arguments :

Argument 1 : une liste de number, tcp-port, string, ipaddress

Argument 2 : une chaîne de délimitation (facultatif)

Cette fonction joint les éléments de la liste fournis comme argument 1 dans une chaîne, où chaque élément est séparé par la chaîne de délimitation fournie comme argument 2. Si l’argument 2 n’est pas fourni, les éléments de la liste sont joints sous la forme d’une seule chaîne.

Exemple :

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

    • Avec l’argument de délimiteur :

      La fonction join($parameters.ports, '-') renvoie 81-82-83.

    • Sans argument de délimiteur :

      La fonction join($parameters.ports) renvoie 818283.

split()

La fonction split() divise une chaîne d’entrée en plusieurs listes en fonction des séparateurs spécifiés. Si aucun séparateur ou vide ('') n’est spécifié, cette fonction considère l’espace comme un séparateur et divise la chaîne en listes.

Exemples :

  • La fonction split('Example_string_split', 's') renvoie ['Example_','tring_','plit'].

  • La fonction split('Example string split') renvoie ['Example','string','split'].

  • La fonction split('Example string split', '') renvoie ['Example','string','split'].

  • La fonction split('Example string') renvoie ['Example','string'].

    Cette fonction considère les espaces continus comme un seul espace.

map()

La fonction map() prend deux arguments ;

Argument 1 : n’importe quelle fonction

Argument 2 : une liste d’éléments

La fonction renvoie une liste où chaque élément de la liste est le résultat de l’application de la fonction map() (argument 1) à l’élément correspondant de l’argument 2.

Fonctions autorisées dans l’argument 1 :

  • Fonctions intégrées qui prennent un argument :

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

  • Fonctions de substitution qui prennent au moins un argument.

Exemple :

Supposons que $parameters.nums est [81, 82, 83].

  • Mapper à l’aide d’une fonction intégrée, str

    La fonction map(str, $parameters.nums) renvoie ["81", "82", "83"]

    Le résultat de la fonction map est la liste des chaînes où chaque élément est une chaîne est calculée en appliquant la fonction str sur l’élément correspondant dans la liste d’entrée ($parameters.nums).

  • Carte utilisant une fonction de substitution

    • Substitutions :

      add-10(port): $port + 10

    • Expression :

      La fonction map($substitutions.add-10, $parameters.nums) renvoie une liste de nombres : [ 91, 92, 93 ]

Le résultat de cette fonction cartographique est une liste de nombres. Chaque élément est calculé en appliquant la fonction $substitutions.add-10 de substitution à l’élément correspondant dans la liste d’entrée ($parameters.nums).

quotewrap()

La fonction quotewrap() prend une chaîne comme argument et renvoie une chaîne après avoir ajouté un caractère de guillemets doubles avant et après la valeur d’entrée.

Exemple :

La fonction quotewrap("ADM") renvoie "ADM"

replace()

La fonction replace() prend trois arguments :

Argument 1 : une string ou une liste des types intégrés suivants :

  • string
  • number
  • ipaddress
  • tcp-port
  • boolean

Argument 2 : une valeur unique ou une liste de valeurs dont le type correspond au type spécifié dans l’argument 1

Argument 3 : une valeur unique du même type que celle spécifiée dans l’argument 1 (facultatif)

La fonction replace() remplace toutes les occurrences de l’argument 2 par l’argument 3 dans l’argument 1.

Si l’argument 3 n’est pas fourni, toutes les occurrences de l’argument 2 sont supprimées de l’argument 1.

Exemple :

  • La fonction replace('abcdef', 'def', 'xyz') renvoie abcxyz.

    Toutes les occurrences de def sont remplacées par xyz.

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

    Comme il n’y a pas d’argument 3, def est supprimé de la chaîne résultante.

  • La fonction replace('An#example@to%replace!characters', ['@', '#', '!', '%'], '_') renvoie An_example_to_replace_characters.

    La chaîne de sortie comporte un trait de soulignement (_) au lieu des caractères spécifiés dans ['@', '#', '!', '%'].

  • La fonction replace([10.10.10.1, 10.10.10.2, 10.10.10.3, 10.10.10.4], [10.10.10.2, 10.10.10.4]) renvoie [10.10.10.1, 10.10.10.3].

    Comme il n’y a pas d’argument 3, 10.10.10.2 et 10.10.10.4 sont supprimés de la liste d’adresses IP qui en résulte.

  • La fonction replace([8080, 8081, 8082, 8083, 8084], 8083, 80) renvoie [8080, 8081, 8082, 80, 8084].

    Toutes les occurrences de 8083 sont remplacées par 80.

trim()

La fonction trim() renvoie une chaîne dans laquelle les espaces de début et de fin sont retirés de la chaîne d’entrée.

Exemple :

La fonction trim(' abc ') renvoie abc.

truncate()

La fonction truncate() prend deux arguments :

Argument 1 : une chaîne

Argument 2 : un nombre

La fonction renvoie une chaîne dans laquelle la chaîne d’entrée de l’argument 1 est tronquée à la longueur spécifiée par l’argument 2.

Exemple :

truncate('NetScaler Console', 6) renvoie Citrix.

distinct()

La fonction distinct() extrait des éléments uniques d’une entrée de liste.

Exemples : Si $parameters.input_list est ['ADM', 'ADC', 'VPX', 'ADC', 'ADM', 'CPX'], la fonction distinct($parameters.input_list) renvoie ['ADM', 'ADC', 'VPX', 'CPX'].

url.encode()

La fonction url.encode() renvoie une chaîne où les caractères sont transformés en utilisant le jeu de caractères ASCII selon RFC 3986.

Exemple :

La fonction url.encode("a/b/c") renvoie a%2Fb%2Fc.

url.decode()

La fonction url.decode() renvoie une chaîne où l’argument encodé URL est décodé en une chaîne régulière selon RFC 3986.

Exemple :

La fonction url.decode("a%2Fb%2Fc") renvoie a/b/c.

is-ipv4()

La fonction is-ipv4() prend une adresse IP comme argument et renvoie le booléen True si l’adresse IP est au format IPv4.

La fonction is-ipv4(10.10.10.10) renvoie True

is-ipv6()

La fonction is-ipv6() prend une adresse IP comme argument et renvoie le booléen True si l’adresse IP est au format IPv6.

La fonction is-ipv6(2001:DB8::) renvoie True

startswith()

La fonction startswith() détermine si une chaîne commence par un préfixe donné. Cette fonction nécessite deux arguments de chaîne obligatoires.

startswith(str, sub_str)

Cette fonction retourne True lorsque la chaîne (str) commence par la sous-chaîne (sub_str).

Exemples :

  • La fonction startswith('Citrix', 'Ci') renvoie True.
  • La fonction startswith('Citrix', 'iC') renvoie False
  • La fonction startswith('Citrix', 'Ab') renvoie False

endswith()

La fonction endswith() détermine si une chaîne se termine par un suffixe donné. Cette fonction nécessite deux arguments de chaîne obligatoires.

endswith(str, sub_str)

Cette fonction renvoie True lorsque la chaîne (str) se termine par la sous-chaîne (sub_str).

Exemples :

  • La fonction endswith('Citrix', 'ix') renvoie True.
  • La fonction endswith('Citrix', 'Ix') renvoie False.
  • La fonction endswith('Citrix', 'ab') renvoie False.

contains()

La fonction contains() détermine si une chaîne contient une sous-chaîne donnée. Cette fonction nécessite deux arguments de chaîne obligatoires.

Types d’arguments autorisés :

  • string
  • number
  • tcp-port
  • boolean
  • ipaddress

contains(str, sub_str)

Cette fonction renvoie True lorsque la sous-chaîne (sub_str) est contenue n’importe où dans la chaîne (str).

Exemples :

  • La fonction contains('Citrix', 'tri') renvoie True.
  • La fonction contains('Citrix', 'Ci') renvoie True.
  • La fonction contains('Citrix', 'ti') renvoie False

Vous pouvez également utiliser cette fonction pour vérifier si un élément donné appartient à la liste.

Exemple :

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

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

Dans cet exemple, la fonction contains() renvoie True parce que la liste contient l’élément Values.

substring()

Utilisez la fonction substring() pour extraire une sous-chaîne d’une chaîne.

substring(str, start_index, end_index)

Cette fonction nécessite les deux arguments obligatoires et un argument entier facultatif.

  • str (Obligatoire)
  • start_index (Obligatoire)
  • end_index (Facultatif)

Cette fonction renvoie la sous-chaîne de la chaîne (str) qui se trouve entre les positions d’index spécifiées. Si vous ne spécifiez pas la position d’index de fin, la fonction extrait la sous-chaîne de l’index de début à la fin de la chaîne.

Remarque

Lorsque vous spécifiez end_index, la sous-chaîne exclut le caractère à la position end_index.

Exemple :

  • La fonction substring('Citrix', 2) renvoie trix

  • La fonction substring('Citrix', 10) renvoie (")

    Dans cet exemple, la fonction renvoie une chaîne vide car elle a une position start_index non valide.

  • La fonction substring('Citrix', 2, 4) renvoie tr

    Dans cet exemple, la fonction extrait les caractères compris entre 2 et 4 positions d’index.

  • La fonction substring('Citrix', -3) renvoie rix

    Si vous souhaitez extraire les caractères qui se trouvent à la fin de la chaîne, spécifiez une valeur négative pour l’argument start_index.

    Dans cet exemple, la fonction extrait la sous-chaîne qui inclut les trois derniers caractères de la chaîne.

match()

La fonction match() vérifie si une chaîne d’entrée correspond au modèle d’expression régulière défini. Cette fonction accepte les modèles d’expressions régulières et les chaînes de recherche comme arguments. Facultatif, vous pouvez également spécifier un type booléen pour ignorer les modèles faisant la distinction majuscules/minuscules.

Exemples :

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

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

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

sha256()

Utilisez cette fonction pour calculer le hachage SHA-256 pour n’importe quelle chaîne. Cette fonction accepte une entrée de chaîne de n’importe quelle longueur et renvoie une chaîne de hachage de longueur fixe (64 caractères).

Exemple :

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

Dans cet exemple, lbserver-nameapparaît sous la forme d’une chaîne de hachage sur l’objet NetScaler.

Cette fonction peut également accepter des expressions en tant qu’entrée.

Exemple :

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

relate()

La fonction relate() forme une liste d’objets de dictionnaire à partir d’un ensemble de listes.

Elle prend deux arguments :

Argument 1 : une liste de chaînes représentant les noms de touches.

Argument 2 : Une liste de listes, où chaque liste contient les valeurs des noms de clé correspondants dans l’argument 1. Chaque liste de l’argument 2 doit être de la même longueur. Le nombre de listes dans l’argument 2 doit être égal au nombre de chaînes dans l’argument 1.

Exemple :

name: test_relate_3
description: "Hello World StyleBook."
namespace: com.citrix.adc.stylebooks
schema-version: "1.0"
version: "1.1"

import-stylebooks:
    -
        namespace: netscaler.nitro.config
        prefix: ns
        version: "10.5"
    -
        namespace: com.citrix.adc.stylebooks
        prefix: stlb
        version: "1.0"
        parameters:
    -
        name: namesofservers
        description: "Provide the names of LB VServers"
        type: string[]
    -
        name: listofips
        description: "Provide the list of IP Addresses"
        type: string[]
    -
        name: list_of_keys
        type: string[]
        default:
        - "name"
        - "ip"

    substitutions:
        list_of_values: [$parameters.namesofservers,$parameters.listofips]
    components:
    -
        name: svc-comp
        type: object
        properties:
        svcdetails: relate($parameters.list_of_keys,$substitutions.list_of_values)

    -
        name: lb-comp
        type: ns::lbvserver
        repeat: $components.svc-comp.properties.svcdetails
        repeat-item: svcd
        properties:
            name: $svcd['name']
            servicetype: HTTP
            ipv46: $svcd['ip']
            port: 80
<!--NeedCopy-->

Dans cet exemple :

  • La section parameters contient une liste nommée list_of_keys qui contient name et ip.

  • La section substitutions contient une liste nommée list_of_values qui contient les deux listes suivantes :

    • Une liste de noms de serveurs virtuels (string)
    • Une liste d’adresses IP (string).

La fonction relate() intégrée accepte list_of_keys et list_of_values comme arguments. La fonction crée ensuite une liste d’objets du dictionnaire où chaque objet possède un nom issu de la première liste et une adresse IP issue de la seconde liste.

Si vous fournissez la liste suivante de serveurs virtuels :

["lb1","lb2"]
<!--NeedCopy-->

et une liste d’adresses IP de serveurs virtuels sous la forme :

["1.1.1.1","2.2.3.3"]
<!--NeedCopy-->

La fonctionrelate() renvoie ensuite les listes suivantes :

[{"name": "lb1", "ip": "1.1.1.1"},{"name": "lb2", "ip": "2.2.3.3"}]
<!--NeedCopy-->

Le StyleBook parcourt cette liste d’objets de dictionnaire, dans la section components, pour créer les serveurs virtuels correspondants.

multiple()

La fonction multiple() prend deux arguments :

Argument 1 : number, string, boolean, ipaddress, tcp-port ou password

Argument 2 : number

La fonction multiple(argument1, argument2) renvoie une liste contenant de nombreuses copies de l’argument 1. Le nombre de copies est égal au nombre passé à l’argument 2.

Exemples :

  • La fonction multiple(10.10.10.10, 3) renvoie [10.10.10.10, 10.10.10.10, 10.10.10.10].

  • La fonction multiple(8080, 4) renvoie [8080, 8080, 8080, 8080].