Análise de Ficheiros de Modelo de Cluster do CycleCloud
O CycleCloud consegue resolver valores de parâmetros e realizar uma avaliação lógica das funções.
Tipos de Parâmetro
O CycleCloud processa vários tipos básicos de parâmetros. Na maioria dos casos, irá processá-los conforme esperado:
Attribute = foo # string
Attribute = 1 # integer
Attribute = 1.1 # double
Attribute = false # boolean
Attribute = foo, bar # string[]
Para ser mais explícito, os valores de cadeia podem estar entre aspas duplas (por exemplo, Attribute = "foo"
). Isto pode ser útil no caso de um valor parecer um número, mas deve ser interpretado como uma cadeia (números de versão, por exemplo). Os valores booleanos podem ser definidos como tokens simples ou (não sensíveis a maiúsculas e false
minúsculastrue
). Os valores separados por vírgulas são interpretados como listas e os elementos são, por sua vez, interpretados com as mesmas regras acima.
Avaliação do Valor do Parâmetro
O CycleCloud interpreta diretamente os valores dos parâmetros que utilizam a $
notação ou ${}
.
MyAttribute = $MyParameter
MyAttribute2 = ${MyParameter2}
MyAttributeList = $Param1, $Param2
Funções com Parâmetros
O analisador de modelos do CycleCloud é capaz de efetuar análises matemáticas e lógica ternary, como se pode ver abaixo.
MaxCoreCount = ${HyperthreadedCoreCount/2}
SubnetId = ${ifThenElse($Autoscale, $BurstSubnet, $FixedSubnet)}
JetpackPlatform = ${imageselect == "windows" ? "windows" : "centos-7"}
Funções disponíveis:
Nota
Esta lista não é abrangente, mas abrange algumas das funções mais utilizadas.
ifThenElse
Atua como um operador ternary. Devolve um de dois valores, tendo em conta uma expressão que é avaliada como verdadeira ou falsa.
Sintaxe:
ifThenElse(predicate, trueValue, falseValue)
Argumentos:
Name | Necessário | Descrição |
---|---|---|
predicado | sim | Uma expressão que avalia como verdadeira ou falsa. |
trueValue | sim | O valor a utilizar quando predicate avaliado como verdadeiro. |
falseValue | sim | O valor a utilizar quando predicate avaliado como falso. |
ifUndefined
Se o resultado da avaliação de uma determinada expressão for indefinido, devolve um valor diferente. Caso contrário, devolve simplesmente o resultado.
Sintaxe:
ifUndefined(expression, value)
Argumentos:
Name | Necessário | Descrição |
---|---|---|
expression | sim | A expressão a avaliar. |
valor | sim | O valor a devolver quando expression avaliado como indefinido. |
regexp
Executa uma correspondência de expressão regular na cadeia especificada e devolve true se existir uma correspondência, caso contrário, falso.
Sintaxe:
regexp(pattern, target, [options])
Argumentos:
Name | Necessário | Descrição |
---|---|---|
padrão | sim | Uma expressão normal de estilo Java. |
destino | sim | A cadeia de entrada. |
opções | não | Opções a utilizar ao avaliar a expressão regular. Veja os sinalizadores de expressão regulares do Java ativados java.util.regex.Pattern para obter mais detalhes. |
regexps
Efetua a substituição regular de expressões na cadeia especificada e devolve a nova cadeia.
Sintaxe:
regexps(pattern, target, substitution, [options])
Argumentos:
Name | Necessário | Descrição |
---|---|---|
padrão | sim | Uma expressão regular de estilo Java que corresponde à cadeia a substituir. |
destino | sim | A cadeia de entrada. |
substituição | sim | A nova cadeia de carateres a substituir em vez da parte da target qual corresponde à expressão regular. |
opções | não | Opções a utilizar ao avaliar a expressão regular. Veja os sinalizadores de expressão regulares do Java ativados java.util.regex.Pattern para obter mais detalhes. |
size
Devolve o comprimento de uma determinada cadeia.
Sintaxe:
size(string)
Argumentos:
Name | Necessário | Description |
---|---|---|
cadeia (de carateres) | sim | A cadeia a verificar. |
strjoin
Concatena múltiplas cadeias de carateres em conjunto com um separador.
Sintaxe:
strjoin(separator, strings)
Argumentos:
Name | Necessário | Descrição |
---|---|---|
separador | sim | Um separador de cadeia para acrescentar entre cadeias. |
cadeias | sim | Uma lista de cadeias a concatenar. Também pode ser especificado como um número variável de argumentos de função: strjoin(separator, string1, string2, string3...) |
subcadeia
Devolve parte de uma cadeia do índice inicial para o índice final (ou o fim da cadeia se não for fornecido nenhum índice final).
Sintaxe:
substr(string, startIndex, [endIndex])
Argumentos:
Name | Necessário | Description |
---|---|---|
cadeia (de carateres) | sim | A cadeia de entrada. |
startIndex | sim | O índice de início a utilizar. |
endIndex | não | Um índice final opcional. |
cortar
Remove todos os carateres de espaço em branco do início e fim de uma cadeia e devolve o resultado.
Sintaxe:
trim(string)
Argumentos:
Name | Necessário | Description |
---|---|---|
cadeia (de carateres) | sim | A cadeia a cortar. |
Operadores disponíveis
Operador | Definição |
---|---|
-, +, /, * | aritmética |
<, <=, >=, > | comparadores |
==, != | avaliadores de igualdade |
&&, || | operadores booleanos compostos |
Variável De ClusterName Especial
Uma variável sempre fornecida é ${ClusterName}
. Isto é avaliado com o nome do cluster CycleCloud.
EmailAddress = ${strcat("myuser", "@", ClusterName)}
ResourceId = ${ClusterName}-00-resource
Hora Relativa
O CycleCloud interpreta os tiques pendentes em torno da duração do tempo como tempo relativo; suportando segundo, minuto e dia.
ThrottleCapacityTime=`10m`
Attribute1=`30s`
Attribute2=`7d`