De expressiesyntaxis geeft alle beschikbare mogelijkheden van expressies in Cloud Assembly-sjablonen weer.
De volgende syntaxis wordt slechts gedeeltelijk weergegeven in de voorbeelden die u ziet in Cloud Assembly-expressies.
Literals
De volgende literals worden ondersteund:
- Booleaans (waar of onwaar)
- Geheel getal
- Drijvende komma
- Tekenreeks
Backslash wordt gebruikt om dubbele aanhalingstekens, enkele aanhalingstekens en een backslash zelf aan te geven:
"
wordt met escapeteken aangegeven als\"
'
wordt met escapeteken aangegeven als\'
\
wordt met escapeteken aangegeven als\\
De aanhalingstekens hoeven alleen met een escapeteken te worden aangegeven in een tekenreeks die is ingesloten tussen aanhalingstekens van hetzelfde type, zoals hieronder wordt weergegeven.
"I am a \"double quoted\" string inside \"double quotes\"."
- Null
Omgevingsvariabelen
Omgevingsnamen:
- orgId
- projectId
- projectName
- deploymentId
- deploymentName
- blueprintId
- blueprintVersion
- blueprintName
- requestedBy (gebruiker)
- requestedAt (tijd)
Syntaxis:
env.ENV_NAME
Voorbeeld:
${env.blueprintId}
Resourcevariabelen
Met resourcevariabelen kunt u vanuit andere resources binden aan resource-eigenschappen.
Syntaxis:
resource.RESOURCE_NAME.PROPERTY_NAME
Resourcenamen mogen geen dashjes of punten bevatten. Onderstrepingstekens zijn toegestaan.
Voorbeelden:
${resource.db.id}
${resource.db.networks[0].address}
${resource.app.id}
(De tekenreeks voor niet-geclusterde resources retourneren, waarbij aantal niet is opgegeven. De array voor geclusterde resources retourneren.)${resource.app[0].id}
(De eerste invoer voor geclusterde resources retourneren.)
Self-variabelen voor resource
Self-variabelen voor resources zijn alleen toegestaan voor resources die de toewijzingsfase ondersteunen. Self-variabelen voor resources zijn alleen beschikbaar (of hebben alleen een ingestelde waarde) nadat de toewijzingsfase is voltooid.
Syntaxis:
self.property_name
Voorbeeld:
${self.address}
(Retourneren het adres dat is toegewezen tijdens de toewijzingsfase.)
Voor een resource met de naam resource_x
zijn self.property_name
en resource.resource_x.property_name
hetzelfde en beide worden beschouwd als zelfverwijzingen.
Voorwaarden
Syntaxis:
- Gelijkheidsoperators zijn
==
en!=
. - Relationele operators zijn
<
>
<=
en>=
. - Logische operators zijn
&&
||
en!
. - Conditionals gebruiken het patroon:
condition-expression
?
true-expression :false-expression
Voorbeelden:
${input.count < 5 && input.size == 'small'}
${input.count < 2 ? "small":"large"}
Clustertellerindex
Syntaxis:
count.index
Voorbeelden:
- Het knooppunttype voor geclusterde resources retourneren:
${count.index == 0 ? "primary":"secondary"}
- De grootte van elke schijf tijdens de toewijzing instellen:
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)}'
- Zie Machine- en schijfclusters in Cloud Assembly voor meer voorbeelden.
Rekenkundige operators
Syntaxis:
Operators zijn +
–
/
*
en %
.
Voorbeeld:
${(input.count + 5) * 2}
Samenvoeging van tekenreeks
Syntaxis:
${'ABC' + 'DEF'}
resulteert in ABCDEF
.
Operators [] en .
De expressie volgt het ECMAScript om de verwerking van de operators [] en . gelijk te schakelen.
Dus is expr.identifier
gelijk aan expr["identifier"]
. De id wordt gebruikt om een literal te maken waarvan de waarde de id is en vervolgens wordt de operator [] met die waarde gebruikt.
Voorbeeld:
${resource.app.networks[0].address}
Als een eigenschap een spatie bevat, moet u deze bovendien markeren met vierkante haakjes en dubbele aanhalingstekens in plaats van de puntnotatie te gebruiken.
Onjuist:
input.operating system
Juist:
input["operating system"]
Constructie van kaart
Syntaxis:
${{'key1':'value1', 'key2':input.key2}}
Constructie van array
Syntaxis:
${['key1','key2']}
Voorbeeld:
${[1,2,3]}
Functies
Syntaxis:
${functie(argumenten...)}
Voorbeeld:
${to_lower(resource.app.name)}
Functie | Beschrijving |
---|---|
abs(getal) | Absolute getalwaarde |
avg(array) | Het gemiddelde van alle waarden van een array met getallen retourneren |
base64_decode(tekenreeks) | Gedecodeerde Base64-waarde retourneren |
base64_encode(tekenreeks) | Base64-gecodeerde waarde retourneren |
ceil(getal) | Retourneert de kleinste waarde (die negatieve oneindigheid het dichtst benadert) die groter is dan of gelijk is aan het argument en gelijk is aan een wiskundig geheel getal |
contains(array, waarde) | Controleren of de array een waarde bevat |
contains(tekenreeks, waarde) | Controleren of de tekenreeks een waarde bevat |
digest(waarde, type) | Samenvatting van waarde met ondersteund type (md5, sha1, sha256, sha384, sha512) retourneren |
ends_with(onderwerp, achtervoegsel) | Controleren of de onderwerptekenreeks eindigt op de achtervoegseltekenreeks |
filter_by(array, filter) | Retourneert alleen de arrayvermeldingen die slagen voor de filterbewerking
retourneert
retourneert |
floor(getal) | Retourneert de grootste waarde (die positieve oneindigheid het dichtst benadert) die kleiner is dan of gelijk is aan het argument en gelijk is aan een wiskundig geheel getal |
format(notatie, waarden...) | Een opgemaakte tekenreeks met behulp van Java Class Formatter-notatie en -waarden retourneren. |
from_json(tekenreeks) | JSON-tekenreeks parseren |
join(array, scheidingsteken) | Array van tekenreeksen met een scheidingsteken samenvoegen en een tekenreeks retourneren |
json_path(waarde, pad) | Het pad ten opzichte van de waarde evalueren met behulp van XPath voor JSON. |
keys(toewijzing) | Sleutels van toewijzing retourneren |
length(array) | Lengte van array retourneren |
length(tekenreeks) | Lengte van tekenreeks retourneren |
map_by(array, bewerking) | Retourneert elke arrayvermelding met een bewerking die op deze vermelding is toegepast
retourneert
retourneert
retourneert |
map_to_object(array, sleutelnaam) | Retourneert een array met sleutelwaardeparen van de opgegeven sleutelnaam die zijn gekoppeld aan waarden uit een andere array
Retourneert een array met sleutelwaardeparen die een sleutelveld heeft, bron genoemd, gekoppeld aan schijf-id-tekenreeksen Opmerking
retourneert hetzelfde resultaat |
matches(tekenreeks, regex) | Controleren of de tekenreeks overeenkomt met een regex-expressie |
max(array) | Maximumwaarde van array met getallen retourneren |
merge(toewijzing, toewijzing) | Een samengevoegde toewijzing retourneren |
min(array) | Minimumwaarde uit array met getallen retourneren |
not_null(array) | De eerste vermelding retourneren die niet leeg is |
now() | Huidige tijd in ISO-8601-indeling retourneren |
range(start, stop) | Retourneert een reeks getallen in stappen van 1 die beginnen met het beginnummer en eindigen net vóór het stopnummer |
replace(tekenreeks, doel, vervanging) | Tekenreeks door doeltekenreeks vervangen |
reverse(array) | Vermeldingen in array omkeren |
slice(array, begin, einde) | Segment van array retourneren van beginindex tot eindindex |
split(tekenreeks, scheidingsteken) | Tekenreeks met scheidingsteken splitsen en array met tekenreeksen retourneren |
starts_with(onderwerp, voorvoegsel) | Controleren of de onderwerptekenreeks begint met de voorvoegseltekenreeks |
substring(tekenreeks, begin, einde) | Subtekenreeks van tekenreeks vanaf de beginindex tot de eindindex retourneren |
sum(array) | De som van alle waarden van de array met getallen retourneren |
to_json(waarde) | Waarde als JSON-tekenreeks serialiseren |
to_lower(tekenreeks) | Tekenreeks converteren naar kleine letters |
to_number(tekenreeks) | Tekenreeks als getal parseren |
to_string(waarde) | Tekenreeksweergave van de waarde retourneren |
to_upper(tekenreeks) | Tekenreeks converteren naar hoofdletters |
trim(tekenreeks) | Voorloop- en volgspaties verwijderen |
url_encode(tekenreeks) | Tekenreeks coderen met behulp van URL-coderingsspecificatie |
uuid() | Willekeurig gegenereerde UUID retourneren |
values(toewijzing) | Waarden van toewijzing retourneren |
Problemen oplossen
In de YAML-taal wordt een dubbelepunt en spatie (': ') gebruikt als scheidingsteken tussen sleutel en waarde in sleutelwaardeparen. De expressiesyntaxis is afhankelijk van YAML, zodat een spatie na een dubbelepunt er soms voor kan zorgen dat een expressie mislukt.
De spatie tussen "win" :
en "lin"
in de volgende expressie veroorzaakt bijvoorbeeld een fout.
${contains(input.image,"(Windows") == true ? "win" : "lin"}
De werkende expressie laat de spatie weg.
${contains(input.image,"(Windows") == true ? "win" :"lin"}
Als een expressie blijft mislukken, probeert u de volledige expressie binnen vinkjes te plaatsen, zoals weergegeven.
ezOS: '${contains(input.image,"(Windows") == true ? "win" :"lin"}'