Citrix Application Delivery Management-Service

Ausdrücke

Eine der mächtigsten Funktionen eines StyleBook ist die Verwendung von Ausdrücken. Sie können StyleBooks Ausdrücke in verschiedenen Szenarien verwenden, um dynamische Werte zu berechnen. Das folgende Beispiel ist ein Ausdruck, um einen Parameterwert mit einer Literalzeichenfolge zu verketten.

Beispiel:

$parameters.appname + "-mon"

Dieser Ausdruck ruft den Parameter mit dem Namen appname ab und verkettet ihn mit der Zeichenfolge -mon.

Die folgenden Ausdruckstypen werden unterstützt:

Arithmetische Ausdrücke

  • Zusatz (+)
  • Subtraktion (-)
  • Multiplikation (*)
  • Abteilung (/)
  • Modulo (%)

Beispiele:

  • Hinzufügen von zwei Zahlen: $parameters.a + $parameters.b
  • Multiplikation von zwei Zahlen: $parameters.a * 10
  • Den Rest nach der Division einer Nummer durch eine andere finden:

15%10 Ergebnisse in 5

Zeichenfolgenausdrücke

  • Verketten Sie zwei Strings (+)

Beispiel:

Verketten Sie zwei Strings: str ( app-) + $parameters.appname

Ausdrücke auflisten

Zusammenführen von zwei Listen (+)

Beispiel:

  • Verketten Sie zwei Listen: $parameters.external-servers + $parameters.internal-servers

  • Wenn $parameters.ports-1[80, 81] ist und $parameters.port-2ist [81, 82], wird $parameters.ports-1 + $parameters.ports-2als eine Liste [80, 81, 81, 82]angezeigt.

Relationale Ausdrücke

  • == : Prüft, ob zwei Operanden gleich sind und gibt true zurück, wenn sie gleich sind, sonst gibt false zurück.

  • !! =: Prüft, ob zwei Operanden unterschiedlich sind und gibt true zurück, wenn sie unterschiedlich sind, sonst gibt false zurück.

  • ** : Gibt true zurück, wenn der erste Operand größer als der zweite Operanden ist, sonst gibt false zurück.

  • >= : Gibt true zurück, wenn der erste Operanden größer oder gleich dem zweiten Operanden ist, sonst gibt false zurück.

  • < : Gibt true zurück, wenn der erste Operand kleiner als der zweite Operanden ist, sonst wird false zurückgegeben.

  • <= : Gibt true zurück, wenn der erste Operanden kleiner oder gleich dem zweiten Operanden ist, sonst wird false zurückgegeben.

Beispiel:

  • Verwendung des Gleichheitsoperator: $parameters.name = = "abcd"
  • Verwendung des Operators “Ungleichheit”: $parameters.name != "default"
  • Beispiele für andere relationale Operatoren

    • 10 > 9
    • 10 >= 10
    • 0 < 9
    • 10 <= 9
    • 10 == 10
    • 10 != 1

Logische Ausdrücke - boolescher Wert

  • und: Der logische ‘und’ Operator. Wenn beide Operanden wahr sind, ist das Ergebnis wahr, sonst ist es falsch.

  • oder: Der logische ‘oder’ Operator. Wenn einer der Operanden wahr ist, ist das Ergebnis wahr, sonst ist es falsch.

  • nicht: Der unäre Operator. Wenn der Operand wahr ist, ist das Ergebnis falsch und umgekehrt.

  • in: Prüft, ob das erste Argument eine Teilzeichenfolge des zweiten Arguments ist

  • in: Prüft, ob ein Element Teil einer Liste ist

Hinweis

Sie können Ausdrücke typisieren, bei denen Strings in Zahlen umgewandelt werden (mit der integrierten () integrierten Funktion) und Zahlen in Strings konvertiert werden (mit der eingebauten Funktion str ()). In ähnlicher Weise können Sie tcp-port auf eine Zahl umwandeln (mit der integrierten () integrierten Funktion), und eine IP-Adresse kann in eine Zeichenfolge umgewandelt werden (mit der integrierten Funktion str ()).

Verwenden Sie ein Trennzeichen vor und nach einem Operator. Sie können die folgenden Trennzeichen verwenden:

  • Vor einem Operator: space, tab, comma, (, ), [, ]

  • Nach einem Operator: space, tab, (, [

Beispiel:

  • abc + def

  • 100 % 10

  • 10 > 9

  • $item in $parameters.some-list

Wörtliche Zeichenfolgenausdrücke

Sie können wörtliche Zeichenfolgen verwenden, wenn Sonderzeichen in einer Zeichenfolge ihre literale Form annehmen müssen. Diese Zeichenfolgen können Escape-Zeichen, umgekehrter Schrägstrich, Anführungszeichen, Klammern, Leerzeichen, Klammern usw. enthalten. In wörtlichen Strings wird die übliche Interpretation der Sonderzeichen übersprungen. Alle Zeichen in der Zeichenfolge werden in ihrer literalen Form beibehalten.

In StyleBooks können Sie Citrix ADC Richtlinienausdrücke mithilfe von wörtlichen Zeichenfolgen in ihre literale Form einschließen. Die Richtlinienausdrücke enthalten in der Regel Sonderzeichen. Ohne wörtliche Strings müssen Sie Sonderzeichen entgehen, indem Sie Strings in Teilzeichenfolgen unterteilen.

Um eine wörtliche Zeichenfolge zu erstellen, kapseln Sie eine Zeichenfolge wie folgt zwischen Sonderzeichen:

~{string}~
<!--NeedCopy-->

Sie können wörtliche Strings in den StyleBook-Ausdrücken verwenden.

Hinweis

Verwenden Sie nicht die Zeichenfolge }~ in einer Eingabezeichenfolge, da diese Sequenz das Ende einer wörtlichen Zeichenfolge angibt.

Beispiel:

 ~{HTTP.REQ.COOKIE.VALUE("jsessionid") ALT HTTP.REQ.URL.BEFORE_STR("=").AFTER_STR(";jsessionid=") ALT HTTP.REQ.URL.AFTER_STR(";jsessionid=")}~
<!--NeedCopy-->

Verketten Sie mehrere wörtliche Strings

Sie können wörtliche Strings mit den regulären Strings oder Strings mit Interpolationen verketten. Wenn Sie dies tun, überspringt das StyleBook die Interpretation nur für die wörtlichen Strings. Verwenden Sie den Plus-Operator (+) zwischen den Strings, um zu verketten.

Beispiel:

value: "~{"id": "}~ + %{$atom.key}% + ~{", "value": "}~ + %{$atom.value}% + ~{"}~"
<!--NeedCopy-->

In diesem Beispiel %{$atom.key}% und %{$atom.value}% werden interpretiert. Und die Interpretation wird für den Rest übersprungen.

Target-Ausdrücke

In einer StyleBook-Definition können Sie den $current-target Ausdruck verwenden, um auf die aktuelle ADC-Zielinstanz zu verweisen. Um eine IP-Adresse der Ziel-ADC-Instanz ausdrücklich zu referenzieren, verwenden Sie diesen Ausdruck wie folgt:

$current-target.ip
<!--NeedCopy-->

Beispiel:

components:
 -
  name: lb-comp
  type: ns::lbvserver
  properties:
    name: $current-target.ip + "-lbvserver"
<!--NeedCopy-->

In diesem Beispiel lbvserver verwendet der Name der die IP-Adresse der ADC-Zielinstanz.

Ausdruckstypvalidierung

Die StyleBook-Engine ermöglicht jetzt eine stärkere Typprüfung während der Kompilierungszeit, dh die beim Schreiben des StyleBook verwendeten Ausdrücke werden beim Import eines StyleBook selbst validiert, anstatt das Konfigurationspaket zu erstellen.

Alle Verweise auf Parameter, Substitutionen, Komponenten, Eigenschaften von Komponenten, Ausgaben von Komponenten, benutzerdefinierte Variablen (Repeat-Item, Repeat-Index, Argumente auf Substitutionsfunktionen) usw. werden auf ihre Existenz und Typen validiert.

Beispiel für Typprüfungen:

Im folgenden Beispiel ist der erwartete Typ der Porteigenschaft von lbvserverStyleBook tcp-port. In Citrix Application Delivery Management (ADM) werden die Typvalidierungen zur Kompilierungszeit (Importzeit) durchgeführt. Der Compiler findet diese Zeichenfolge und tcp-portsind nicht kompatible Typen. Daher zeigt der StyleBook-Compiler einen Fehler an und kann ein StyleBook nicht importieren oder migrieren.


components:
  -
    name: lbvserver-comp
    type: ns::lbvserver
    properties:
      name: mylb
      ipv46: 10.102.190.15
      port: str("80")
      servicetype: HTTP
<!--NeedCopy-->

Um dieses StyleBook erfolgreich zu kompilieren, deklarieren Sie Folgendes als Zahl im Compiler:

port: 80

Beispiel für das Kennzeichnen ungültiger Ausdrücke:

In früheren Versionen hat der Compiler, wenn einem Eigenschaftsnamen ein ungültiger Ausdruck zugewiesen wurde, keine ungültigen Ausdrücke erkannt und die StyleBooks in Citrix ADM importiert werden können. Wenn dieses StyleBook nun in Citrix ADM importiert wird, identifiziert der Compiler solche ungültigen Ausdrücke und kennzeichnet es. Daher kann das StyleBook nicht in Citrix ADM importiert werden.

In diesem Beispiel lautet der Ausdruck, der der name-Eigenschaft in der lb-sg-binding-comp Komponente zugewiesen ist: $components.lbvserver-comp.properties.lbvservername. Es gibt jedoch keine Eigenschaft, die lbvservernamein der Komponente aufgerufen wird lbvserver-comp. In früheren Citrix ADM Versionen hätte der Compiler diesen Ausdruck zugelassen und erfolgreich importiert. Der tatsächliche Fehler tritt auf, wenn ein Benutzer ein Konfigurationspaket mit diesem StyleBook erstellen möchte. Diese Art von Fehler wird jedoch beim Import erkannt und das StyleBook wird nicht in Citrix ADM importiert. Korrigieren Sie solche Fehler manuell und importieren Sie die StyleBooks.

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-->

Indizierungslisten

Auf Elemente einer Liste kann jetzt zugegriffen werden, indem sie direkt indiziert werden:

   
Ausdruck Beschreibung
$components.test-lbs[0] Bezieht sich auf das erste Element in der thetest-lbs Komponente
$components.test-lbs[0].properties.p1 Bezieht sich auf die Eigenschaft p1 des ersten Elements in der Test-lbs Komponente
$components.lbcomps[0].outputs.servicegroups[1].properties.servicegroupname Bezieht sich auf die Eigenschaft servicegroupname des zweiten Elements in der servicegroups Komponente, bei der es sich um eine Ausgabe des ersten Elements der lbcomps Komponente handelt
Ausdrücke