mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-09 17:37:12 +00:00
68 lines
1.8 KiB
Go
68 lines
1.8 KiB
Go
package api
|
|
|
|
import (
|
|
kyvernov2 "github.com/kyverno/kyverno/api/kyverno/v2"
|
|
policiesv1alpha1 "github.com/kyverno/kyverno/api/policies.kyverno.io/v1alpha1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
)
|
|
|
|
// GenericException abstracts the exception type (PolicyException, CELPolicyException)
|
|
type GenericException interface {
|
|
metav1.Object
|
|
// GetAPIVersion returns policy API version
|
|
GetAPIVersion() string
|
|
// GetKind returns policy kind
|
|
GetKind() string
|
|
// AsException returns the policy exception
|
|
AsException() *kyvernov2.PolicyException
|
|
// AsCELException returns the CEL policy exception
|
|
AsCELException() *policiesv1alpha1.CELPolicyException
|
|
}
|
|
|
|
type genericException struct {
|
|
metav1.Object
|
|
PolicyException *kyvernov2.PolicyException
|
|
CELPolicyException *policiesv1alpha1.CELPolicyException
|
|
}
|
|
|
|
func (p *genericException) AsException() *kyvernov2.PolicyException {
|
|
return p.PolicyException
|
|
}
|
|
|
|
func (p *genericException) AsCELException() *policiesv1alpha1.CELPolicyException {
|
|
return p.CELPolicyException
|
|
}
|
|
|
|
func (p *genericException) GetAPIVersion() string {
|
|
switch {
|
|
case p.PolicyException != nil:
|
|
return kyvernov2.GroupVersion.String()
|
|
case p.CELPolicyException != nil:
|
|
return policiesv1alpha1.GroupVersion.String()
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (p *genericException) GetKind() string {
|
|
switch {
|
|
case p.PolicyException != nil:
|
|
return "PolicyException"
|
|
case p.CELPolicyException != nil:
|
|
return "CELPolicyException"
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func NewPolicyException(polex *kyvernov2.PolicyException) GenericException {
|
|
return &genericException{
|
|
Object: polex,
|
|
PolicyException: polex,
|
|
}
|
|
}
|
|
|
|
func NewCELPolicyException(polex *policiesv1alpha1.CELPolicyException) GenericException {
|
|
return &genericException{
|
|
Object: polex,
|
|
CELPolicyException: polex,
|
|
}
|
|
}
|