Создайте набор из цепочки элементов в Rego
Как создать набор из строки на языке Rego Open Policy Agent?
У меня есть строка таких элементов, как "values": "pvc-volume,emptydir-volume,hostPath,ConfigMaps"
какие элементы необходимо проверить на соответствие заданному набору допустимых значений
valid_backup_profiles := {
"pvc-volume",
"emptydir-volume"
}
например, используя пересечение
valid_backup_profiles & elements_coming_from_string_above
Я знаю split(string, ",")
функция, возвращающая массив элементов, но массив не может пересекаться с набором. Есть ли какой-нибудь умный способ сгенерировать набор из строки вместо массива?
1 ответ
Уловка состоит в том, чтобы использовать установленное понимание:
s := {x |
some i
parts := split(string, ",")
x := parts[i]
}
Вы можете сделать это в одной строке, если хотите:
s := {x | x := split(string, ",")[_]}
Очевидно, это красиво и компактно, но форму выше немного легче читать. Если вы хотите сделать логику многоразовой, просто определите функцию:
split_csv_set(str) = {x |
some i
parts := split(str, ",")
x := parts[i]
}