github.com/argoproj/argo-events@v1.9.1/webhook/validator/eventsource.go (about) 1 package validator 2 3 import ( 4 "context" 5 6 admissionv1 "k8s.io/api/admission/v1" 7 "k8s.io/client-go/kubernetes" 8 9 eventsourcecontroller "github.com/argoproj/argo-events/controllers/eventsource" 10 eventsourcev1alpha1 "github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1" 11 eventbusclient "github.com/argoproj/argo-events/pkg/client/eventbus/clientset/versioned" 12 eventsourceclient "github.com/argoproj/argo-events/pkg/client/eventsource/clientset/versioned" 13 sensorclient "github.com/argoproj/argo-events/pkg/client/sensor/clientset/versioned" 14 ) 15 16 type eventsource struct { 17 client kubernetes.Interface 18 eventBusClient eventbusclient.Interface 19 eventSourceClient eventsourceclient.Interface 20 sensorClient sensorclient.Interface 21 22 oldes *eventsourcev1alpha1.EventSource 23 newes *eventsourcev1alpha1.EventSource 24 } 25 26 // NewEventSourceValidator returns a validator for EventSource 27 func NewEventSourceValidator(client kubernetes.Interface, ebClient eventbusclient.Interface, 28 esClient eventsourceclient.Interface, sClient sensorclient.Interface, old, new *eventsourcev1alpha1.EventSource) Validator { 29 return &eventsource{client: client, eventBusClient: ebClient, eventSourceClient: esClient, sensorClient: sClient, oldes: old, newes: new} 30 } 31 32 func (es *eventsource) ValidateCreate(ctx context.Context) *admissionv1.AdmissionResponse { 33 if err := eventsourcecontroller.ValidateEventSource(es.newes); err != nil { 34 return DeniedResponse(err.Error()) 35 } 36 return AllowedResponse() 37 } 38 39 func (es *eventsource) ValidateUpdate(ctx context.Context) *admissionv1.AdmissionResponse { 40 if es.oldes.Generation == es.newes.Generation { 41 return AllowedResponse() 42 } 43 return es.ValidateCreate(ctx) 44 }