在 rego 中将 { key: [values] } 转换为 {value: [keys]}
Transform { key: [values] } to {value: [keys]} in rego
请帮我在 rego 上写一个规则,returns 一个转换后的对象。
我的对象:
{
"read": [
"server1",
"server2"
],
"write": [
"server2",
"server3"
],
"create": [
"server1",
"server2",
"server3"
]
}
预计:
{
"server1": [
"read",
"create"
],
"server2": [
"read",
"write",
"create"
],
"server3": [
"write",
"create"
]
}
我知道我需要使用推导式,但我不明白如何使用
TLDR;您可以使用理解来执行分组操作。在这种情况下,您希望按服务器对操作进行分组。
operations_by_server := {server: operations |
server := input[_][_]
operations := {op |
some op
server == input[op][_]
}
}
这是一个互动版本:https://play.openpolicyagent.org/p/y5ldvjvmfK
有关理解的更多信息:https://www.openpolicyagent.org/docs/latest/policy-language/#comprehensions
附带说明一下,如果您想了解有关 Rego 的更多信息,请查看 this 在线课程。免责声明:我在制作该课程的公司工作。
请帮我在 rego 上写一个规则,returns 一个转换后的对象。
我的对象:
{
"read": [
"server1",
"server2"
],
"write": [
"server2",
"server3"
],
"create": [
"server1",
"server2",
"server3"
]
}
预计:
{
"server1": [
"read",
"create"
],
"server2": [
"read",
"write",
"create"
],
"server3": [
"write",
"create"
]
}
我知道我需要使用推导式,但我不明白如何使用
TLDR;您可以使用理解来执行分组操作。在这种情况下,您希望按服务器对操作进行分组。
operations_by_server := {server: operations |
server := input[_][_]
operations := {op |
some op
server == input[op][_]
}
}
这是一个互动版本:https://play.openpolicyagent.org/p/y5ldvjvmfK
有关理解的更多信息:https://www.openpolicyagent.org/docs/latest/policy-language/#comprehensions
附带说明一下,如果您想了解有关 Rego 的更多信息,请查看 this 在线课程。免责声明:我在制作该课程的公司工作。