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  }