mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-05 15:37:19 +00:00
91 lines
2.2 KiB
Go
91 lines
2.2 KiB
Go
package api
|
|
|
|
import (
|
|
kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1"
|
|
"k8s.io/api/admissionregistration/v1alpha1"
|
|
)
|
|
|
|
// PolicyType represents the type of a policy
|
|
type PolicyType string
|
|
|
|
const (
|
|
// KyvernoPolicy type for kyverno policies
|
|
KyvernoPolicyType PolicyType = "KyvernoPolicy"
|
|
// ValidatingAdmissionPolicy for validating admission policies
|
|
ValidatingAdmissionPolicyType PolicyType = "ValidatingAdmissionPolicy"
|
|
)
|
|
|
|
// GenericPolicy abstracts the policy type (Kyverno policy vs Validating admission policy)
|
|
// It is intended to be used in EngineResponse
|
|
type GenericPolicy interface {
|
|
// GetPolicy returns either kyverno policy or validating admission policy
|
|
GetPolicy() interface{}
|
|
// GetType returns policy type
|
|
GetType() PolicyType
|
|
// GetName returns policy name
|
|
GetName() string
|
|
// GetNamespace returns policy namespace
|
|
GetNamespace() string
|
|
// GetAnnotations returns policy annotations
|
|
GetAnnotations() map[string]string
|
|
}
|
|
|
|
type KyvernoPolicy struct {
|
|
policy kyvernov1.PolicyInterface
|
|
}
|
|
|
|
func (p *KyvernoPolicy) GetPolicy() interface{} {
|
|
return p.policy
|
|
}
|
|
|
|
func (p *KyvernoPolicy) GetType() PolicyType {
|
|
return KyvernoPolicyType
|
|
}
|
|
|
|
func (p *KyvernoPolicy) GetName() string {
|
|
return p.policy.GetName()
|
|
}
|
|
|
|
func (p *KyvernoPolicy) GetNamespace() string {
|
|
return p.policy.GetNamespace()
|
|
}
|
|
|
|
func (p *KyvernoPolicy) GetAnnotations() map[string]string {
|
|
return p.policy.GetAnnotations()
|
|
}
|
|
|
|
func NewKyvernoPolicy(pol kyvernov1.PolicyInterface) GenericPolicy {
|
|
return &KyvernoPolicy{
|
|
policy: pol,
|
|
}
|
|
}
|
|
|
|
type ValidatingAdmissionPolicy struct {
|
|
policy v1alpha1.ValidatingAdmissionPolicy
|
|
}
|
|
|
|
func (p *ValidatingAdmissionPolicy) GetPolicy() interface{} {
|
|
return p.policy
|
|
}
|
|
|
|
func (p *ValidatingAdmissionPolicy) GetType() PolicyType {
|
|
return ValidatingAdmissionPolicyType
|
|
}
|
|
|
|
func (p *ValidatingAdmissionPolicy) GetName() string {
|
|
return p.policy.GetName()
|
|
}
|
|
|
|
func (p *ValidatingAdmissionPolicy) GetNamespace() string {
|
|
return p.policy.GetNamespace()
|
|
}
|
|
|
|
func (p *ValidatingAdmissionPolicy) GetAnnotations() map[string]string {
|
|
return p.policy.GetAnnotations()
|
|
}
|
|
|
|
func NewValidatingAdmissionPolicy(pol v1alpha1.ValidatingAdmissionPolicy) GenericPolicy {
|
|
return &ValidatingAdmissionPolicy{
|
|
policy: pol,
|
|
}
|
|
}
|