Die Ausdruckssyntax zeigt alle verfügbaren Funktionen von Ausdrücken in Cloud Assembly-Vorlagen.

Hinweis: Cloud Assembly-Ausdrücke sind nicht mit regulären Ausdrücken identisch.

Die folgende Syntax wird in den Beispielen unter Cloud Assembly-Ausdrücke nur teilweise dargestellt.

Literale

Folgende Literale werden unterstützt:

  • Boolesch („true“ oder „false“)
  • Ganzzahl
  • Gleitkomma
  • Zeichenfolge

    Der umgekehrte Schrägstrich ist das Escapezeichen für doppeltes Anführungszeichen, einfaches Anführungszeichen und umgekehrten Schrägstrich selbst:

    " wird wie folgt mit Escapezeichen geschützt: \"

    ' wird wie folgt mit Escapezeichen geschützt: \'

    \ wird als \\ geschützt

    Anführungszeichen müssen in einer Zeichenfolge nur dann mit Escapezeichen versehen werden, wenn die Zeichenfolge in Anführungszeichen desselben Typs eingeschlossen ist, wie im folgenden Beispiel gezeigt.

    "I am a \"double quoted\" string inside \"double quotes\"."

  • Null

Umgebungsvariablen

Umgebungsnamen:

  • orgId
  • projectId
  • projectName
  • deploymentId
  • deploymentName
  • blueprintId
  • blueprintVersion
  • blueprintName
  • requestedBy (user)
  • requestedAt (time)

Syntax:

env.ENV_NAME

Beispiel:

${env.blueprintId}

Ressourcenvariablen

Mithilfe von Ressourcenvariablen können Sie Bindungen mit Ressourceneigenschaften anderer Ressourcen erstellen.

Syntax:

resource.RESOURCE_NAME.PROPERTY_NAME

Ressourcennamen dürfen keine Bindestriche oder Punkte enthalten. Unterstriche sind zulässig.

Beispiele:

  • ${resource.db.id}
  • ${resource.db.networks[0].address}
  • ${resource.app.id} (Gibt die Zeichenfolge für nicht geclusterte Ressourcen zurück, wobei „count“ nicht angegeben wird. Gibt das Array für geclusterte Ressourcen zurück.)
  • ${resource.app[0].id} (Gibt den ersten Eintrag für geclusterte Ressourcen zurück.)

Ressourcenvariablen vom Typ „Self“

Ressourcenvariablen vom Typ „Self“ sind nur für Ressourcen zulässig, die die Zuteilungsphase unterstützen. Ressourcenvariablen vom Typ „Self“ sind nur verfügbar (oder es wurde nur ein Wert für sie festgelegt), nachdem die Zuteilungsphase abgeschlossen ist.

Syntax:

self.property_name

Beispiel:

${self.address} (Gibt die Adresse zurück, die während der Zuteilungsphase zugewiesen wurde.)

Beachten Sie, dass für eine Ressource mit dem Namen resource_x self.property_name und resource.resource_x.property_name gleich sind und beide als Eigenreferenzen betrachtet werden.

Bedingungen

Syntax:

  • Gleichheitsoperatoren sind == und !=.
  • Relationale Operatoren sind <, >, <= und >=.
  • Logische Operatoren sind &&, || und !.
  • In Bedingungsausdrücken wird das folgende Muster verwendet:

    condition-expression ? true-expression :false-expression

Beispiele:

${input.count < 5 && input.size == 'small'}

${input.count < 2 ? "small":"large"}

Index der Clusteranzahl

Syntax:

count.index

Beispiele:

  • Gibt den Knotentyp für geclusterte Ressourcen zurück:

    ${count.index == 0 ? "primary":"secondary"}

  • Legen Sie die Größe jeder Festplatte während der Zuteilung fest:
    inputs:
      disks:
        type: array
        minItems: 0
        maxItems: 12
        items:
          type: object
          properties:
            size:
              type: integer
              title: Size (GB)
              minSize: 1
              maxSize: 2048
    resources:
      Cloud_vSphere_Disk_1:
        type: Cloud.vSphere.Disk
        allocatePerInstance: true
        properties:
          capacityGb: '${input.disks[count.index].size}'
          count: '${length(input.disks)}'
    
  • Weitere Beispiele finden Sie unter Maschinen- und Festplattencluster in Cloud Assembly.

Arithmetische Operatoren

Syntax:

Operatoren sind +, , /, * und %.

Beispiel:

${(input.count + 5) * 2}

Zeichenfolgenverkettung

Syntax:

${'ABC' + 'DEF'} ergibt ABCDEF.

Operatoren [ ] und .

Der Ausdruck folgt bei der Vereinheitlichung der Behandlung der Operatoren [ ] und . dem ECMAScript.

Also ist expr.identifier äquivalent mit expr["identifier"]. Der Bezeichner wird verwendet, um ein Literal zu konstruieren, dessen Wert der Bezeichner ist, und dann wird der [ ]-Operator mit diesem Wert verwendet.

Beispiel:

${resource.app.networks[0].address}

Wenn darüber hinaus eine Eigenschaft ein Leerzeichen enthält, trennen Sie sie mit eckigen Klammern und doppelten Anführungszeichen ab, anstatt die Punktnotation zu verwenden.

Falsch:

input.operating system

Richtig:

input["operating system"]

Aufbau einer Zuordnung

Syntax:

${{'key1':'value1', 'key2':input.key2}}

Aufbau eines Arrays

Syntax:

${['key1','key2']}

Beispiel:

${[1,2,3]}

Funktionen

Syntax:

${function(arguments...)}

Beispiel:

${to_lower(resource.app.name)}

Tabelle 1. Funktionen
Funktion Beschreibung
abs(number) Absoluter Zahlenwert
avg(array) Gibt den Durchschnittswert aller Werte aus einem Array von Zahlen zurück
base64_decode(string) Gibt einen decodierten base64-Wert zurück
base64_encode(string) Gibt einen base64-codierten Wert zurück
ceil(number) Gibt den kleinsten (am nächsten an negativ unendlich liegenden) Wert zurück, der größer oder gleich dem Argument und gleich einer mathematischen Ganzzahl ist
contains(array, value) Überprüft, ob ein Array einen bestimmten Wert enthält
contains(string, value) Überprüft, ob eine Zeichenfolge einen bestimmten Wert enthält
digest(value, type) Gibt einen Digest des Werts unter Verwendung des unterstützten Typs (md5, sha1, sha256, sha384, sha512) zurück
ends_with(subject, suffix) Überprüft, ob die Zeichenfolge mit einer bestimmten Suffixzeichenfolge endet
filter_by(array, filter)

Gibt nur die Array-Einträge zurück, die den Filtervorgang durchlaufen

filter_by([1,2,3,4], x => x >= 2 && x <= 3)

gibt [2, 3] zurück

filter_by({'key1':1, 'key2':2}, (k,v) => v != 1)

gibt [{"key2": 2}] zurück

floor(number) Gibt den größten (am nächsten an positiv unendlich liegenden) Wert zurück, der kleiner oder gleich dem Argument und gleich einer mathematischen Ganzzahl ist
format(format, values...) Gibt eine formatierte Zeichenfolge unter Verwendung des Class Formatter-Formats und der zugehörigen Werte von Java zurück.
from_json(string) Analysiert eine JSON-Zeichenfolge
join(array, delim) Verknüpft ein Array von Zeichenfolgen mit einem Trennzeichen und gibt eine Zeichenfolge zurück
json_path(value, path) Wertet den Pfad anhand des Werts unter Verwendung von XPath for JSON aus.
keys(map) Gibt die Schlüssel der Zuordnung zurück
length(array) Gibt die Array-Länge zurück
length(string) Gibt die Zeichenfolgenlänge zurück
map_by(array, operation)

Gibt jeden Array-Eintrag zurück, auf den ein Vorgang angewendet wurde

map_by([1,2], x => x * 10)

gibt [10, 20] zurück

map_by([1,2], x => to_string(x))

gibt ["1", "2"] zurück

map_by({'key1':1, 'key2':2}, (k,v) => {k:v*10})

gibt [{"key1":10},{"key2":20}] zurück

map_to_object(array, keyname)

Gibt ein Array von Schlüssel/Wert-Paaren des angegebenen Schlüsselnamens gekoppelt mit Werten aus einem anderen Array zurück

map_to_object(resource.Disk[*].id, "source")

Gibt ein Array von Schlüssel/Wert-Paaren mit einem Schlüsselfeld namens „Quelle“ zurück, das mit Zeichenfolgen der Festplatten-ID gekoppelt ist

Beachten Sie, dass

map_by(resource.Disk[*].id, id => {'source':id})

dasselbe Ergebnis zurückgibt

matches(string, regex) Überprüft, ob die Zeichenfolge mit einem Regex-Ausdruck übereinstimmt
max(array) Gibt den maximalen Wert aus einem Array von Zahlen zurück
merge(map, map) Gibt eine zusammengeführte Zuordnung zurück
min(array) Gibt den Mindestwert aus einem Array von Zahlen zurück
not_null(array) Gibt den ersten Eintrag zurück, der nicht null ist
now() Gibt die aktuelle Uhrzeit im Format ISO-8601 zurück
range(start, stop) Gibt eine Reihe von Zahlen in Schritten von 1 zurück, die mit der Startnummer beginnt und kurz vor der Stoppnummer endet
replace(string, target, replacement) Ersetzt die Zeichenfolge, die die Zielzeichenfolge enthält, mit der Zielzeichenfolge
reverse(array) Kehrt die Reihenfolge der Einträge eines Arrays um
slice(array, begin, end) Gibt ein Segment eines Arrays vom Anfangsindex bis zum Endindex zurück
split(string, delim) Teilt eine Zeichenfolge mit Trennzeichen und gibt ein Array von Zeichenfolgen zurück
starts_with(subject, prefix) Überprüft, ob die Zeichenfolge mit einer bestimmten Präfixzeichenfolge beginnt
substring(string, begin, end) Gibt eine Teilzeichenfolge der Zeichenfolge vom Anfangsindex bis zum Endindex zurück
sum(array) Gibt die Summe aller Werte aus einem Array von Zahlen zurück
to_json(value) Serialisiert einen Wert als JSON-Zeichenfolge
to_lower(str) Konvertiert eine Zeichenfolge in Kleinbuchstaben
to_number(string) Analysiert eine Zeichenfolge als Zahl
to_string(value) Gibt eine Zeichenfolgendarstellung des Werts zurück
to_upper(str) Konvertiert eine Zeichenfolge in Großbuchstaben
trim(string) Entfernt vorangestellte und nachgestellte Leerzeichen
url_encode(string) Codiert eine Zeichenfolge unter Verwendung der URL-Codierungsspezifikation
uuid() Gibt eine zufallsgenerierte UUID zurück
values(map) Gibt die Werte der Zuordnung zurück

Fehlerbehebung

Die YAML-Sprache verwendet einen Doppelpunkt und ein Leerzeichen (: ) als Trennzeichen zwischen Schlüssel und Wert in Schlüssel-Wert-Paaren. Da sich die Ausdruckssyntax nach der YAML richtet, kann es gelegentlich vorkommen, dass ein Leerzeichen nach einem Doppelpunkt zum Fehlschlagen des Ausdrucks führt.

Beispiel: Das Leerzeichen zwischen "win" : und "lin" im folgenden Ausdruck führt zu einem Fehler.

${contains(input.image,"(Windows") == true ? "win" : "lin"}

Der korrekte Ausdruck enthält kein Leerzeichen.

${contains(input.image,"(Windows") == true ? "win" :"lin"}

Wenn ein Ausdruck weiterhin fehlschlägt, schließen Sie den gesamten Ausdruck wie gezeigt in Häkchen ein.

ezOS: '${contains(input.image,"(Windows") == true ? "win" :"lin"}'