1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-09 09:26:54 +00:00
kyverno/pkg/cel/engine/provider.go
Charles-Edouard Brétéché 54a8a53205
feat: add validating policy engine api wrapper (#11963)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2025-01-21 15:59:34 +08:00

34 lines
965 B
Go

package engine
import (
"context"
"fmt"
kyvernov2alpha1 "github.com/kyverno/kyverno/api/kyverno/v2alpha1"
"github.com/kyverno/kyverno/pkg/cel/policy"
)
type Provider interface {
CompiledPolicies(context.Context) ([]policy.CompiledPolicy, error)
}
type ProviderFunc func(context.Context) ([]policy.CompiledPolicy, error)
func (f ProviderFunc) CompiledPolicies(ctx context.Context) ([]policy.CompiledPolicy, error) {
return f(ctx)
}
func NewProvider(compiler policy.Compiler, policies ...kyvernov2alpha1.ValidatingPolicy) (ProviderFunc, error) {
compiled := make([]policy.CompiledPolicy, 0, len(policies))
for _, vp := range policies {
policy, err := compiler.Compile(&vp)
if err != nil {
return nil, fmt.Errorf("failed to compile policy %s (%w)", vp.GetName(), err.ToAggregate())
}
compiled = append(compiled, policy)
}
provider := func(context.Context) ([]policy.CompiledPolicy, error) {
return compiled, nil
}
return provider, nil
}