Поделиться через


Анализ файла шаблона кластера 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`