Expressions
L’une des caractéristiques les plus puissantes d’un StyleBook est l’utilisation d’expressions. Vous pouvez utiliser des expressions StyleBooks dans différents scénarios pour calculer des valeurs dynamiques. L’exemple suivant est une expression permettant de concaténer une valeur de paramètre avec une chaîne littérale.
Exemple :
$parameters.appname + "-mon"
Cette expression récupère le paramètre nommé appname
et le concatène avec la chaîne -mon
.
Remarque :
StyleBook prend en charge l’utilisation de mots-clés réservés lorsque vous définissez des paramètres et des expressions dans une définition StyleBook. Les mots clés réservés sont -
and
false
in
,not
,true
, etor
.
Les types d’expressions suivants sont pris en charge :
Expressions arithmétiques
- Ajout (+)
- Soustraction (-)
- Multiplication (*)
- Division (/)
- Module (%)
Exemples :
- Ajouter deux nombres : $parameters.a + $parameters.b
- Multiplier deux nombres : $parameters.a * 10
- Trouver le reste après la division d’un nombre par un autre :
15%10
Résultats en 5
Expressions de chaîne
- Concaténer deux chaînes (+)
Exemple :
Concaténer deux chaînes : str (« app- ») + $parameters.appname
Liste des expressions
Fusionne deux listes (+)
Exemple :
-
Concaténer deux listes : $parameters.external-servers + $parameters.internal-servers
-
Si
$parameters.ports-1
vaut [80, 81] et$parameters.port-2
est [81, 82],$parameters.ports-1 + $parameters.ports-2
s’affiche sous forme de liste [80, 81, 81, 82].
Expressions relationnelles
-
==: Teste si deux opérandes sont égaux et renvoie vrai s’ils sont égaux, sinon renvoie faux.
-
! = : Teste si deux opérandes sont différents et renvoie true s’ils sont différents, sinon renvoie false.
-
** : Retourne true si le premier opérande est supérieur au second opérande, sinon renvoie false.
-
>= : Retourne true si le premier opérande est supérieur ou égal au second opérande, else renvoie false.
-
< : Renvoie true si le premier opérande est inférieur au second opérande, sinon renvoie false.
-
<= : Retourne true si le premier opérande est inférieur ou égal au second opérande, else renvoie false.
Exemple :
- Utilisation de l’opérateur Equality :
$parameters.name = = "abcd"
- Utilisation de l’opérateur d’inégalité :
$parameters.name != "default"
-
Exemples pour d’autres opérateurs relationnels
10 > 9
10 >= 10
0 < 9
10 <= 9
10 == 10
10 != 1
Expressions logiques - booléenne
-
et : L’opérateur logique ‘et’. Si les deux opérandes sont vrais, le résultat est vrai, sinon il est faux.
-
ou : l’opérateur logique ‘ou’. Si l’un des opérandes est vrai, le résultat est vrai, sinon il est faux.
-
not: opérateur unaire. Si l’opérande est vrai, le résultat est faux, et le sens inverse.
-
in: Teste si le premier argument est une sous-chaîne du second argument
-
in : Teste si un élément fait partie d’une liste
Remarque
Vous pouvez type-cast expressions où les chaînes sont converties en nombres (en utilisant la fonction intégrée int ()) et les nombres sont convertis en chaînes (en utilisant la fonction intégrée str ()). De même, vous pouvez
tcp-port
convertir en nombre (en utilisant la fonctionint()
intégrée) et une adresse IP peut être convertie en chaîne (en utilisant la fonction intégrée str ()).Utilisez un délimiteur avant et après tout opérateur. Vous pouvez utiliser les délimiteurs suivants :
Devant un opérateur :
space
,tab
,comma
,(
,)
,[
,]
Après un opérateur :
space
,tab
,(
,[
Par exemple :
abc + def
100 % 10
10 > 9
$item in $parameters.some-list
Expressions d’éclats
Une expression splat [*]
fournit un moyen plus simple de récupérer un certain attribut d’une liste complexe pour toutes les itérations. Vous pouvez désormais inclure des expressions splat dans une définition StyleBook.
Syntaxe :
list[*].attribute
<!--NeedCopy-->
Cette expression effectue une itération sur tous les éléments de la liste spécifiés à sa gauche et renvoie la valeur d’attribut spécifiée à sa droite.
Lorsque vous souhaitez récupérer l’adresse IP ou le nom d’hôte de chaque serveur virtuel de la liste, vous pouvez utiliser les expressions splat suivantes :
Exemple 1 :
$parameters.server-members[*].hostname
<!--NeedCopy-->
Cette expression renvoie la liste des noms d’hôtes de tous les membres du serveur.
Exemple 2 :
$parameters.server-members[*].sub-domains[*].name
<!--NeedCopy-->
Cette expression renvoie une liste de tous les noms sous les sous-domaines de chaque membre du serveur.
Ces expressions renvoient toujours la liste des types d’éléments les plus à droite.
Expressions de chaîne verbatim
Vous pouvez utiliser des chaînes textuelles lorsque les caractères spéciaux d’une chaîne doivent prendre leur forme littérale. Ces chaînes peuvent contenir des caractères d’échappement, des barres obliques inverses, des guillemets, des parenthèses, des espaces blancs, des crochets, etc. Dans les chaînes textuelles, l’interprétation habituelle des caractères spéciaux est ignorée. Tous les caractères de la chaîne sont conservés dans leur forme littérale.
Dans StyleBooks, vous pouvez inclure les expressions de stratégie NetScaler sous leur forme littérale à l’aide de chaînes textuelles. Les expressions de stratégie contiennent généralement des caractères spéciaux. Sans chaînes textuelles, vous devez échapper à des caractères spéciaux en divisant les chaînes en sous-chaînes.
Pour créer une chaîne textuelle, encapsulez une chaîne entre des caractères spéciaux comme suit :
~{string}~
<!--NeedCopy-->
Vous pouvez utiliser des chaînes textuelles dans les expressions StyleBook.
Remarque
N’utilisez pas la séquence de caractères
}~
dans une chaîne d’entrée car cette séquence indique la fin d’une chaîne textuelle.
Exemple :
~{HTTP.REQ.COOKIE.VALUE("jsessionid") ALT HTTP.REQ.URL.BEFORE_STR("=").AFTER_STR(";jsessionid=") ALT HTTP.REQ.URL.AFTER_STR(";jsessionid=")}~
<!--NeedCopy-->
Pour plus d’informations, voir Autoriser les caractères spéciaux sous leur forme littérale dans StyleBooks.
Expressions cibles
Dans une définition de StyleBook, vous pouvez utiliser l’ $current-target
expression pour faire référence à l’instance NetScaler cible actuelle. Pour référencer spécifiquement une adresse IP de l’instance NetScaler cible, utilisez cette expression comme suit :
$current-target.ip
<!--NeedCopy-->
Exemple :
components:
-
name: lb-comp
type: ns::lbvserver
properties:
name: $current-target.ip + "-lbvserver"
<!--NeedCopy-->
Dans cet exemple, le nom de utilise lbvserver
l’adresse IP de l’instance NetScaler cible.
Validation du type d’expression
Le moteur StyleBook permet désormais une vérification de type plus forte pendant la compilation, c’est-à-dire que les expressions utilisées lors de l’écriture du StyleBook sont validées lors de l’importation d’un StyleBook lui-même plutôt que lors de la création du pack de configuration.
Toutes les références aux paramètres, substitutions, composants, propriétés des composants, sorties des composants, variables définies par l’utilisateur (élément répété, index répété, arguments aux fonctions de substitution) et ainsi de suite sont toutes validées pour leur existence et leur type.
Exemple de contrôles de type :
Dans l’exemple suivant, le type attendu de propriété port de lbvserver
StyleBook est tcp-port
. Dans la console NetScaler, les validations de type ont lieu au moment de la compilation (au moment de l’importation). Le compilateur trouve cette chaîne et ne tcp-port
sont pas des types compatibles et, par conséquent, le compilateur StyleBook affiche une erreur et ne parvient pas à importer ou à migrer un StyleBook.
components:
-
name: lbvserver-comp
type: ns::lbvserver
properties:
name: mylb
ipv46: 10.102.190.15
port: str("80")
servicetype: HTTP
<!--NeedCopy-->
Pour compiler ce StyleBook avec succès, déclarez ce qui suit en tant que nombre dans le compilateur :
port: 80
Exemple de marquage d’expressions non valides :
Lorsque vous importez un StyleBook dans la console NetScaler, le compilateur identifie les expressions non valides et les signale. Par conséquent, le StyleBook ne parvient pas à être importé dans la console NetScaler.
Dans l’exemple suivant, l’expression affectée à la propriété name dans le lb-sg-binding-comp
composant est : $components.lbvserver-comp.properties.lbvservername
. Cependant, il n’y a aucune propriété appelée lbvservername
dans le composant lbvserver-comp
.
Components:
-
name: lbvserver-comp
type: ns::lbvserver
properties:
name: mylb
ipv46: 10.102.190.15
port: 80
servicetype: HTTP
-
name: sg-comp
type: ns::servicegroup
properties:
servicegroupname: mysg
servicetype: HTTP
-
name: lb-sg-binding-comp
type: ns::lbvserver_servicegroup_binding
condition: $parameters.create-binding
properties:
name: $components.lbvserver-comp.properties.lbvservername
servicegroupname: $components.sg-comp.properties.servicegroupname
<!--NeedCopy-->
Typecasting implicite des types de données
Lorsque vous utilisez des expressions StyleBook pour différents types de données, le moteur StyleBook type désormais implicitement la sortie vers un type de données approprié. La typecasting implicite des types de données prend en charge les opérations binaires et les assignations de valeurs.
Exemples d’opérations binaires :
- En ajoutant (+) deux variables de type
string
etnumber
, définit le type de données de sortie surstring
.
$parameters.appname + '_' + $parameters.app_instance_num
- En ajoutant (+) deux variables de type
string
etipaddress
, définit le type de données de sortie surstring
.
$parameters.appname + '_' + $parameters.instance_ip
- En ajoutant (+) deux variables de type
ipaddress
etnumber
, définit le type de données de sortie suripaddress
.
$parameters.instance_ip + $parameters.number
- En soustrayant (-) deux variables de type
ipaddress
etnumber
, définit le type de données de sortie suripaddress
.
$parameters.instance_ip - $parameters.number
- En multipliant (*) deux variables de type
string
etnumber
, définit le type de données de sortie surstring
.
$parameters.dummy_str * $parameters.count
Exemples d’assignations de valeur :
- Si une variable est définie comme
string
type de données, la valeur attribuée est convertie dans le type de données défini.
name: $parameters.port * 3
- Si une variable est définie comme
portnumber
type de données, la valeur attribuée est convertie enportnumber
type de données avec des exceptions.
port: $index + $parameters.lower_limit
Listes d’indexation
Les éléments d’une liste sont maintenant accessibles en les indexant directement :
Expression | Description |
$components.test-lbs[0] |
Fait référence au premier élément du thetest-lbs composant |
$components.test-lbs[0].properties.p1 |
Fait référence à la propriété p1 du premier élément du composant test-lbs |
$components.lbcomps[0].outputs.servicegroups[1].properties.servicegroupname |
Fait référence à servicegroupname la propriété du deuxième élément du servicegroups composant, qui est une sortie du premier élément du lbcomps composant |
Expressions de stratégie dans StyleBooks
L’interface graphique de StyleBooks vous permet de créer des expressions de stratégie NetScaler en sélectionnant des éléments dans des listes, ce qui vous permet de créer des expressions plus rapidement et avec plus de précision.
Les expressions de stratégie dans StyleBooks vous permettent de créer des configurations flexibles et personnalisables. Vous pouvez spécifier des conditions en fonction de différents paramètres, attributs ou variables. Les expressions de stratégie sont couramment utilisées pour implémenter les configurations de stratégie NetScaler.
Activer l’éditeur d’expression de stratégie dans l’interface graphique de StyleBooks
Pour rendre l’EPA ou l’éditeur d’expression disponible pour un paramètre, spécifiez l’attribut de GUI is_policy_expression
dans la définition du paramètre. Lorsqu’il est activé (défini sur true), ce paramètre vous permet d’appeler l’éditeur d’expressions lorsque vous entrez une valeur pour ce paramètre.
parameters:
-
name: expression
type: string
label: Expression
required: true
gui:
is_policy_expression: true
<!--NeedCopy-->
Création et création d’expressions de stratégie
-
Accédez à Applications > Configurations > StyleBooks. La page StyleBooks affiche tous les StyleBooks disponibles dans votre console NetScaler.
-
Sélectionnez un StyleBook qui inclut des expressions de stratégie dans ses paramètres.
-
Cliquez sur Créer une configuration. Dans la page Créer une configuration, entrez des valeurs pour tous les paramètres définis dans ce StyleBook.
-
Cliquez sur l’icône à côté du champ Expressions. La page Créer une expression s’affiche.
-
Dans Créer une expression, utilisez les menus déroulants intuitifs pour créer votre expression de stratégie. Cliquez sur Envoyer.
Si vous souhaitez créer une expression de stratégie personnalisée, cliquez sur Éditeur EPA ou Éditeur d’expressions pour créer vos expressions. Passez en revue vos expressions dans Aperçu des expressions, puis cliquez sur Soumettre.
-
Sélectionnez l’instance NetScaler cible sur laquelle la configuration doit être déployée et cliquez sur Soumettre.