Application Delivery Management

Ausdrücke

Eines der mächtigsten Funktionen von 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 zeigt einen Ausdruck, um einen Parameterwert mit einer Literalzeichenfolge zu verketten.

Beispiel:

$parameters.appname + “-mon”

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

Die folgenden Ausdruckstypen werden unterstützt:

Arithmetische Ausdrücke

  • Zusatz (+)
  • Substraction (-)
  • Multiplikation (*)
  • Abteilung (/)
  • Modul (%)

Beispiele:

  • Zwei Zahlen hinzufügen: $parameters.a + $parameters.b
  • Zwei Zahlen multiplizieren: $parameters.a * 10
  • Finden des Restes nach Division einer Zahl durch eine andere:

15% 10 Ergebnisse in 5

Zeichenfolgenausdrücke

  • Verketten Sie zwei Strings (+)

Beispiel:

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

Ausdrücke auflisten

Führt zwei Listen zusammen (+)

Beispiel:

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

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

Relationale Ausdrücke

  • == : Testet, ob zwei Operanden gleich sind und gibt true zurück, wenn sie gleich sind, andernfalls wird false zurückgegeben.

  • ! =: Testet, ob zwei Operanden unterschiedlich sind und gibt true zurück, wenn sie unterschiedlich sind, andernfalls wird false zurückgegeben.

  • : Gibt true zurück, wenn der erste Operand größer als der zweite Operand ist, andernfalls wird false zurückgegeben.

  • = : Gibt true zurück, wenn der erste Operand größer oder gleich dem zweiten Operanden ist, andernfalls wird false zurückgegeben.

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

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

Beispiel:

  • Verwendung des Gleichheitsoperators: $parameters.name = abcd
  • Verwendung von Ungleichheitsoperator: $parameters.name! = Standard
  • Beispiele für andere relationale Operatoren
    • 10 > 9
    • 10 >= 10
    • 0 < 9
    • 10 <= 9
    • 10 == 10
    • 10 != 1

Logische (boolesche) Ausdrücke

  • und: Der logische “und” -Operator. Wenn beide Operanden wahr sind, ist das Ergebnis wahr, andernfalls ist es falsch.

  • oder: Der logische “oder” -Operator. Wenn einer der Operanden wahr ist, ist das Ergebnis wahr, andernfalls ist es falsch.

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

  • in: Prüft, ob das erste Argument ein Teilstring des zweiten Arguments ist

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

Hinweis

Sie können Umwandlungen eingeben, in denen Zeichenfolgen in Zahlen umgewandelt werden können und Zahlen in Zeichenfolgen konvertiert werden können. Ebenso kann ein tcp-port in eine Zahl umgewandelt werden, und eine IP-Adresse kann in eine Zeichenfolge umgewandelt werden.

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

  • Vor einem Operator: Leerzeichen, Tabulator, Komma, (,), [,]

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

  • Beispiel:

  • abc + def

  • 100 % 10

  • 10 > 9

Ausdruckstypvalidierung

StyleBook-Engine ermöglicht jetzt eine stärkere Typprüfung während der Kompilierzeit, dh die beim Schreiben des StyleBook verwendeten Ausdrücke werden während des Imports von StyleBook selbst validiert und nicht beim Erstellen des Konfigurationspakets.

Alle Verweise auf Parameter, Substitutionen, Komponenten, Eigenschaften von Komponenten, Komponentenausgaben, benutzerdefinierte Variablen (repeat-item, repeat-index, Argumente für Substitutionsfunktionen usw.) werden alle auf ihre Existenz und Typen überprüft.

Beispiel für Typprüfungen:

Im folgenden Beispiel lautet der erwartete Typ der Port-Eigenschaft von lbvserver StyleBook tcp-port. In früheren Versionen von Citrix Application Delivery Management (ADM) berechnete der StyleBook-Compiler den Wert als Zeichenfolge, und das StyleBook wurde importiert und ausgeführt. Nun passieren Typvalidierungen zur Kompilierungszeit (Importzeit). Der Compiler stellt fest, dass string und tcp-port nicht kompatible Typen sind und daher der StyleBook-Compiler einen Fehler auslöst und den Import oder die Migration des StyleBook fehlschlägt.


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

You should now declare this as a number for the compiler to successfully compile this StyleBook.

  port: 80
<!--NeedCopy-->

Beispiel für das Markieren 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 wird das StyleBook nicht in Citrix ADM importiert.

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


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

Indizierung von Listen

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

| | | | ——————————————————————————- | ———————————————————————————————————————————————- | | **Ausdruck** | **Beschreibung** | | $components.test-lbs[0] | Bezieht sich auf das erste Element in der Komponente test-lbs | | $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