Die Ausdruckssyntax zeigt alle verfügbaren Funktionen von Ausdrücken in Cloud Assembly-Vorlagen.
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ütztAnfü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)}
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
gibt
gibt |
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
gibt
gibt
gibt |
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
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
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"}'