Análise de arquivos de modelo de cluster do CycleCloud
O CycleCloud é capaz de resolve valores de parâmetro e executar a avaliação lógica das funções.
Tipos de parâmetro
O CycleCloud lida com vários tipos básicos de parâmetros. Na maioria dos casos, ele lidará com eles conforme o esperado:
Attribute = foo # string
Attribute = 1 # integer
Attribute = 1.1 # double
Attribute = false # boolean
Attribute = foo, bar # string[]
Para serem mais explícitos, os valores de cadeia de caracteres podem ser cercados por aspas duplas (por exemplo, Attribute = "foo"
). Isso pode ser útil no caso em que um valor se parece com um número, mas deve ser interpretado como uma cadeia de caracteres (números de versão, por exemplo). Os valores boolianos podem ser definidos como tokens nus ou false
(não diferencia maiúsculas true
de minúsculas). Os valores separados por vírgulas são interpretados como listas e os elementos, por sua vez, são interpretados usando as mesmas regras acima.
Avaliação do valor do parâmetro
O CycleCloud interpreta diretamente os valores de parâmetro que usam a $
notação ou ${}
.
MyAttribute = $MyParameter
MyAttribute2 = ${MyParameter2}
MyAttributeList = $Param1, $Param2
Funções usando parâmetros
O analisador de modelos do CycleCloud é capaz de executar a matemática e fazer uma análise lógica ternária, conforme visto abaixo.
MaxCoreCount = ${HyperthreadedCoreCount/2}
SubnetId = ${ifThenElse($Autoscale, $BurstSubnet, $FixedSubnet)}
JetpackPlatform = ${imageselect == "windows" ? "windows" : "centos-7"}
Funções disponíveis:
Observação
Essa lista não é abrangente, mas abrange algumas das funções mais usadas.
ifThenElse
Atua como um operador ternário. Retorna um dos dois valores dado uma expressão que é avaliada como true ou false.
Sintaxe:
ifThenElse(predicate, trueValue, falseValue)
Argumentos:
Nome | Obrigatório | Descrição |
---|---|---|
predicate | sim | Uma expressão que é avaliada como true ou false. |
trueValue | sim | O valor a ser usado quando predicate avaliado como true. |
falseValue | sim | O valor a ser usado quando predicate avaliado como false. |
ifUndefined
Se o resultado da avaliação de uma determinada expressão for indefinido, retornará um valor diferente. Caso contrário, simplesmente retorna o resultado.
Sintaxe:
ifUndefined(expression, value)
Argumentos:
Nome | Obrigatório | Descrição |
---|---|---|
expressão | sim | A expressão a ser avaliada. |
value | sim | O valor a ser retornado quando expression avaliado como indefinido. |
regexp
Executa uma correspondência de expressão regular na cadeia de caracteres fornecida e retorna true se houver uma correspondência, caso contrário, false.
Sintaxe:
regexp(pattern, target, [options])
Argumentos:
Nome | Obrigatório | Descrição |
---|---|---|
pattern | sim | Uma expressão regular no estilo Java. |
destino | sim | A cadeia de caracteres de entrada. |
opções | não | Opções a serem usadas ao avaliar a expressão regular. Confira Sinalizadores de expressão regular do Java ativados java.util.regex.Pattern para obter mais detalhes. |
regexps
Executa a substituição de expressão regular na cadeia de caracteres fornecida e retorna a nova cadeia de caracteres.
Sintaxe:
regexps(pattern, target, substitution, [options])
Argumentos:
Nome | Obrigatório | Descrição |
---|---|---|
pattern | sim | Uma expressão regular no estilo Java que corresponde à cadeia de caracteres a ser substituída. |
destino | sim | A cadeia de caracteres de entrada. |
substitution | sim | A nova cadeia de caracteres a ser substituída no lugar da parte da target qual corresponde à expressão regular. |
opções | não | Opções a serem usadas ao avaliar a expressão regular. Confira Sinalizadores de expressão regular do Java ativados java.util.regex.Pattern para obter mais detalhes. |
tamanho
Retorna o comprimento de uma determinada cadeia de caracteres.
Sintaxe:
size(string)
Argumentos:
Nome | Obrigatório | Descrição |
---|---|---|
string | sim | A cadeia de caracteres a ser verificada. |
strjoin
Concatena várias cadeias de caracteres usando um separador.
Sintaxe:
strjoin(separator, strings)
Argumentos:
Nome | Obrigatório | Descrição |
---|---|---|
separator | sim | Um separador de cadeia de caracteres a ser acrescentado entre cadeias de caracteres. |
cadeias de caracteres | sim | Uma lista de cadeias de caracteres a serem concatenas. Também pode ser especificado como um número variável de argumentos de função: strjoin(separator, string1, string2, string3...) |
substr
Retorna parte de uma cadeia de caracteres do índice inicial para o índice final (ou o final da cadeia de caracteres se nenhum índice final for fornecido).
Sintaxe:
substr(string, startIndex, [endIndex])
Argumentos:
Nome | Obrigatório | Descrição |
---|---|---|
string | sim | A cadeia de caracteres de entrada. |
startIndex | sim | O índice inicial a ser usado. |
endIndex | não | Um índice final opcional. |
cortar
Remove todos os caracteres de espaço em branco do início e do final de uma cadeia de caracteres e retorna o resultado.
Sintaxe:
trim(string)
Argumentos:
Nome | Obrigatório | Descrição |
---|---|---|
string | sim | Cadeia de caracteres para cortar. |
Operadores disponíveis
Operador | Definição |
---|---|
-, +, /, * | aritmética |
<, <=, >=, > | Comparadores |
==, != | avaliadores de igualdade |
&&, || | operadores boolianos compostos |
Variável ClusterName Especial
Uma variável sempre fornecida é ${ClusterName}
. Isso é avaliado como o nome do cluster CycleCloud.
EmailAddress = ${strcat("myuser", "@", ClusterName)}
ResourceId = ${ClusterName}-00-resource
Tempo relativo
O CycleCloud interpreta os tiques inativos em torno da duração do tempo como tempo relativo; dando suporte a segundo, minuto e dia.
ThrottleCapacityTime=`10m`
Attribute1=`30s`
Attribute2=`7d`