繁体   English   中英

如何做一个 || “b”在 rego

[英]How to do a || "b" in rego

我们验证有和没有命名空间的对象,我总是想打印当前命名空间是什么......但是当没有设置命名空间时回退到“”或其他一些默认值。

使用天真的input.review.object.metadata.namespace直接失败了规则,所以我求助于

namespace := [input.review.object.metadata.namespace | ""]

它打印一个数组,有点丑,但它有效......有没有更好的解决方案?

没有一个很好的运算符,尽管正在进行讨论以添加一个。

通常,该模式是使用具有访问器的辅助规则/函数和具有默认值的否定规则/函数。 例如:

https://play.openpolicyagent.org/p/RhZVyJjqOJ使用..

# If the namespace exists, use it
input_namespace = ns {
    ns := input.review.object.metadata.namespace
}

# or if it doesn't, use the string defined here
input_namespace = "whatever-default-value-i-want" {
    not input.review.object.metadata.namespace
}

同样的模式也可以在野外看到,例如在 Gatekeeper 库中: https : //github.com/open-policy-agent/gatekeeper/blob/master/library/general/requiredlabels/src.rego# L3-L10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM