Условия
Условия — это механизм InfraVision для оценки того, соответствует ли набор данных заданному набору условий. Он позволяет автору передавать простую логику, объявляя произвольное количество кортежей атрибут-значение-операция, вложенных в иерархию логических операторов И и ИЛИ.
Условия
Условие выражается в виде JSON-объекта со следующими ключами:
| Имя ключа | Обязателен | По умолчанию | Описание |
|---|---|---|---|
| attr | Да | - | Имя ключа в оцениваемых данных |
| value | Да | - | Эталонное значение, с которым будут сравниваться данные |
| op | Нет | eq |
Логическая операция, которая будет выполнена |
| negate | Нет | False | Инвертировать результат оценки условия |
Доступные операции
eq: Равноgt: Больше чемgte: Больше или равноlt: Меньше чемlte: Меньше или равноin: Присутствует в списке значенийcontains: Содержит указанное значение
Доступ к вложенным ключам
Для доступа к вложенным ключам используйте точки для обозначения пути к нужному атрибуту. Например, предположим следующие данные:
{
"a": {
"b": {
"c": 123
}
}
}
Следующее условие будет оценено как истинное:
{
"attr": "a.b.c",
"value": 123
}
Примеры
name равно "foo":
{
"attr": "name",
"value": "foo"
}
name не равно "foo"
{
"attr": "name",
"value": "foo",
"negate": true
}
asn больше 65000:
{
"attr": "asn",
"value": 65000,
"op": "gt"
}
status не равен "planned" или "staging":
{
"attr": "status.value",
"value": ["planned", "staging"],
"op": "in",
"negate": true
}
Примечание
Обратите внимание при оценке полей статического выбора, таких как поле status выше. Эти поля обычно отрисовываются как словарь, указывающий как сырое значение поля (value), так и его понятную метку (label). Обязательно укажите, по какому из них вы хотите выполнять сопоставление.
Наборы условий
Несколько условий можно объединить во вложенные наборы, используя логику И или ИЛИ. Это делается путём объявления JSON-объекта с единственным ключом (and или or), содержащим список объектов условий и/или дочерних наборов условий.
Примеры
status равен "active" и primary_ip4 определён или применён тег "exempt".
{
"or": [
{
"and": [
{
"attr": "status.value",
"value": "active"
},
{
"attr": "primary_ip4",
"value": null,
"negate": true
}
]
},
{
"attr": "tags.slug",
"value": "exempt",
"op": "contains"
}
]
}