Análisis de archivos de plantilla de clúster de CycleCloud

CycleCloud puede resolver los valores de parámetro y realizar la evaluación lógica de las funciones.

Tipos de parámetros

CycleCloud controla varios tipos básicos de parámetros. En la mayoría de los casos, los controlará según lo previsto:

Attribute = foo      # string
Attribute = 1        # integer
Attribute = 1.1      # double
Attribute = false    # boolean
Attribute = foo, bar # string[]

Para ser más explícito, los valores de cadena se pueden rodear entre comillas dobles (por ejemplo, Attribute = "foo"). Esto puede ser útil en el caso de que un valor tenga un aspecto similar a un número, pero debe interpretarse como una cadena (números de versión, por ejemplo). Los valores booleanos se pueden establecer en los tokens true sin sistema operativo o false (sin distinción entre mayúsculas y minúsculas). Los valores separados por comas se interpretan como listas y, a su vez, los elementos se interpretan con las mismas reglas que anteriormente.

Evaluación de valores de parámetros

CycleCloud interpreta directamente los valores de parámetro que usan la $ notación o ${} .

MyAttribute = $MyParameter
MyAttribute2 = ${MyParameter2}
MyAttributeList = $Param1, $Param2

Funciones que usan parámetros

El analizador de plantillas de CycleCloud es capaz de realizar análisis matemáticos y de lógica ternaria, como se muestra a continuación.

MaxCoreCount = ${HyperthreadedCoreCount/2}
SubnetId = ${ifThenElse($Autoscale, $BurstSubnet, $FixedSubnet)}
JetpackPlatform = ${imageselect == "windows" ? "windows" : "centos-7"}

Funciones disponibles:

Nota

Esta lista no es completa, pero trata algunas de las funciones más usadas.

ifThenElse

Actúa como operador ternario. Devuelve uno de los dos valores dados una expresión que se evalúa como true o false.

Sintaxis:

ifThenElse(predicate, trueValue, falseValue)

Argumentos:

Nombre Obligatorio Descripción
predicate Expresión que se evalúa como true o false.
trueValue Valor que se va a usar cuando se evalúa como predicate true.
falseValue Valor que se va a usar cuando predicate se evalúa como false.

ifUndefined

Si el resultado de evaluar una expresión determinada no está definido, devuelve un valor diferente en su lugar. De lo contrario, simplemente devuelve el resultado.

Sintaxis:

ifUndefined(expression, value)

Argumentos:

Nombre Obligatorio Descripción
expresión La expresión que se va a evaluar.
value Valor que se va a devolver cuando expression se evalúa como indefinido.

regexp

Realiza una coincidencia de expresión regular en la cadena especificada y devuelve true si hay una coincidencia; de lo contrario, false.

Sintaxis:

regexp(pattern, target, [options])

Argumentos:

Nombre Obligatorio Descripción
pattern Expresión regular de estilo Java.
Destino Cadena de entrada.
opciones no Opciones que se usarán al evaluar la expresión regular. Para más información, consulte Marcas de expresiones java.util.regex.Pattern regulares de Java.

regexps

Realiza la sustitución de expresiones regulares en la cadena especificada y devuelve la nueva cadena.

Sintaxis:

regexps(pattern, target, substitution, [options])

Argumentos:

Nombre Obligatorio Descripción
pattern Expresión regular de estilo Java que coincide con la cadena que se va a sustituir.
Destino Cadena de entrada.
substitution Nueva cadena que se va a sustituir en lugar de la parte de target la que coincide con la expresión regular.
opciones no Opciones que se usarán al evaluar la expresión regular. Para más información, consulte Marcas de expresiones java.util.regex.Pattern regulares de Java.

tamaño

Devuelve la longitud de una cadena determinada.

Sintaxis:

size(string)

Argumentos:

Nombre Obligatorio Descripción
string Cadena que se va a comprobar.

strjoin

Concatena varias cadenas juntas mediante un separador.

Sintaxis:

strjoin(separator, strings)

Argumentos:

Nombre Obligatorio Descripción
separador Separador de cadena que se va a anexar entre cadenas.
cadenas Lista de cadenas que se van a concatenar. También se puede especificar como un número variable de argumentos de función: strjoin(separator, string1, string2, string3...)

substr

Devuelve parte de una cadena desde el índice inicial hasta el índice final (o el final de la cadena si no se da ningún índice final).

Sintaxis:

substr(string, startIndex, [endIndex])

Argumentos:

Nombre Obligatorio Descripción
string Cadena de entrada.
startIndex Índice de inicio que se va a usar.
endIndex no Índice final opcional.

trim

Quita todos los caracteres de espacio en blanco del inicio y el final de una cadena y devuelve el resultado.

Sintaxis:

trim(string)

Argumentos:

Nombre Obligatorio Descripción
string La cadena que se recortará.

Operadores disponibles

Operator Definición
-, +, /, * operaciones aritméticas
<, <=, >=, > Comparadores
==, != evaluadores de igualdad
&&, || operadores booleanos compuestos

Variable ClusterName especial

Una variable siempre proporcionada es ${ClusterName}. Esto se evalúa como el nombre del clúster de CycleCloud.

EmailAddress = ${strcat("myuser", "@", ClusterName)}
ResourceId = ${ClusterName}-00-resource

Tiempo relativo

CycleCloud interpreta las tics inversas en torno a la duración del tiempo como tiempo relativo; apoyo de segundo, minuto y día.

ThrottleCapacityTime=`10m` 
Attribute1=`30s`
Attribute2=`7d`