Анализ файла шаблона кластера CycleCloud
CycleCloud может разрешать значения параметров и выполнять логическую оценку функций.
Типы параметров
CycleCloud обрабатывает несколько основных типов параметров. В большинстве случаев они обрабатываются должным образом:
Attribute = foo # string
Attribute = 1 # integer
Attribute = 1.1 # double
Attribute = false # boolean
Attribute = foo, bar # string[]
Чтобы быть более явным, строковые значения можно заключить в двойные кавычки (например, Attribute = "foo"
). Это может быть полезно в случае, когда значение выглядит как число, но должно интерпретироваться как строка (например, номера версий). Логические значения можно задать для маркеров true
без учета регистра или false
(без учета регистра). Значения, разделенные запятыми, интерпретируются как списки, а элементы, в свою очередь, интерпретируются с помощью указанных выше правил.
Оценка значения параметра
CycleCloud напрямую интерпретирует значения параметров, использующие $
нотацию или ${}
.
MyAttribute = $MyParameter
MyAttribute2 = ${MyParameter2}
MyAttributeList = $Param1, $Param2
Функции, использующие параметры
Средство синтаксического анализа шаблонов CycleCloud может выполнять математические вычисления и выполнять тернарный логический анализ, как показано ниже.
MaxCoreCount = ${HyperthreadedCoreCount/2}
SubnetId = ${ifThenElse($Autoscale, $BurstSubnet, $FixedSubnet)}
JetpackPlatform = ${imageselect == "windows" ? "windows" : "centos-7"}
Доступные функции:
Примечание
Этот список не является исчерпывающим, но охватывает некоторые из наиболее часто используемых функций.
ifThenElse
Действует как тернарный оператор. Возвращает одно из двух значений, заданных выражением, которое имеет значение true или false.
Синтаксис:
ifThenElse(predicate, trueValue, falseValue)
Аргументы:
Имя | Обязательно | Описание |
---|---|---|
predicate | да | Выражение, которое принимает значение true или false. |
trueValue | да | Значение, используемое при predicate вычислении значения true. |
falseValue | да | Значение, используемое при predicate вычислении со значением false. |
IfUndefined
Если результат вычисления данного выражения не определен, возвращает другое значение. В противном случае просто возвращает результат.
Синтаксис:
ifUndefined(expression, value)
Аргументы:
Имя | Обязательно | Описание |
---|---|---|
expression | да | Выражение для вычисления. |
значение | да | Значение, возвращаемое при expression вычислении с неопределенным значением. |
regexp
Выполняет сопоставление регулярных выражений в заданной строке и возвращает значение true, если совпадение было, в противном случае — false.
Синтаксис:
regexp(pattern, target, [options])
Аргументы:
Имя | Обязательно | Описание |
---|---|---|
pattern | да | Регулярное выражение в стиле Java. |
target | да | Входная строка. |
параметры | нет | Параметры, используемые при вычислении регулярного выражения. Дополнительные сведения см. в разделе Флаги регулярных выражений java.util.regex.Pattern Java. |
regexps
Выполняет подстановку регулярных выражений в заданной строке и возвращает новую строку.
Синтаксис:
regexps(pattern, target, substitution, [options])
Аргументы:
Имя | Обязательно | Описание |
---|---|---|
pattern | да | Регулярное выражение в стиле Java, соответствующее строке для замены. |
target | да | Входная строка. |
substitution | да | Новая строка для замены части target , которая соответствует регулярному выражению. |
параметры | нет | Параметры, используемые при вычислении регулярного выражения. Дополнительные сведения см. в разделе Флаги регулярных выражений java.util.regex.Pattern Java. |
size
Возвращает длину заданной строки.
Синтаксис:
size(string)
Аргументы:
Имя | Обязательно | Описание |
---|---|---|
строка | да | Проверяемая строка. |
strjoin
Объединяет несколько строк вместе с помощью разделителя.
Синтаксис:
strjoin(separator, strings)
Аргументы:
Имя | Обязательно | Описание |
---|---|---|
separator | да | Разделитель строк, добавляемый между строками. |
строки; | да | Список строк для объединения. Можно также указать как переменное число аргументов функции: strjoin(separator, string1, string2, string3...) |
substr
Возвращает часть строки от начального индекса к конечному индексу (или конец строки, если конечный индекс не задан).
Синтаксис:
substr(string, startIndex, [endIndex])
Аргументы:
Имя | Обязательно | Описание |
---|---|---|
строка | да | Входная строка. |
startIndex | да | Используемый начальный индекс. |
endIndex | нет | Необязательный конечный индекс. |
trim
Удаляет все пробелы из начала и конца строки и возвращает результат.
Синтаксис:
trim(string)
Аргументы:
Имя | Обязательно | Описание |
---|---|---|
строка | да | Строка для усечения. |
Доступные операторы
Оператор | Определение |
---|---|
-, +, /, * | арифметический |
<, <=, >=, > | Компараторы |
==, != | вычислители равенства |
&&, || | составные логические операторы |
Специальная переменная clusterName
Всегда предоставляется одна переменная — ${ClusterName}
. Вычисляется имя кластера CycleCloud.
EmailAddress = ${strcat("myuser", "@", ClusterName)}
ResourceId = ${ClusterName}-00-resource
Относительное время
CycleCloud интерпретирует обратные такты вокруг длительности времени как относительное время; поддержка секунды, минуты и дня.
ThrottleCapacityTime=`10m`
Attribute1=`30s`
Attribute2=`7d`