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`