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 | sí | Expresión que se evalúa como true o false. |
trueValue | sí | Valor que se va a usar cuando se evalúa como predicate true. |
falseValue | sí | 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 | sí | La expresión que se va a evaluar. |
value | sí | 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 | sí | Expresión regular de estilo Java. |
Destino | sí | 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 | sí | Expresión regular de estilo Java que coincide con la cadena que se va a sustituir. |
Destino | sí | Cadena de entrada. |
substitution | sí | 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 | sí | Cadena que se va a comprobar. |
strjoin
Concatena varias cadenas juntas mediante un separador.
Sintaxis:
strjoin(separator, strings)
Argumentos:
Nombre | Obligatorio | Descripción |
---|---|---|
separador | sí | Separador de cadena que se va a anexar entre cadenas. |
cadenas | sí | 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 | sí | Cadena de entrada. |
startIndex | sí | Í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 | sí | 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`