in controllers/gitserver/create_event_listener.go [49:130]
func (h *CreateEventListener) createEventListener(ctx context.Context, gitServer *codebaseApi.GitServer) error {
log := ctrl.LoggerFrom(ctx)
log.Info("Creating EventListener")
// Use Unstructured to avoid direct dependency on "knative.dev/pkg/apis/duck/v1" because EventListener relies on it.
// This dependency can conflict with the operator's dependencies.
// https://github.com/tektoncd/triggers/blob/v0.27.0/pkg/apis/triggers/v1beta1/event_listener_types.go#L86
el := tektoncd.NewEventListenerUnstructured()
elName := generateEventListenerName(gitServer.Name)
el.SetName(elName)
el.SetNamespace(gitServer.Namespace)
el.SetLabels(map[string]string{
"app.edp.epam.com/gitServer": gitServer.Name,
})
el.Object["spec"] = map[string]interface{}{
"serviceAccountName": "default",
"triggers": []interface{}{
map[string]interface{}{
"triggerRef": fmt.Sprintf("%s-build", gitServer.Spec.GitProvider),
},
map[string]interface{}{
"triggerRef": fmt.Sprintf("%s-review", gitServer.Spec.GitProvider),
},
},
"resources": map[string]interface{}{
"kubernetesResource": map[string]interface{}{
"spec": map[string]interface{}{
"template": map[string]interface{}{
"spec": map[string]interface{}{
"serviceAccountName": fmt.Sprintf("tekton-triggers-sa-%s", gitServer.Namespace),
"containers": []interface{}{
map[string]interface{}{
"name": "",
"resources": map[string]interface{}{
"limits": map[string]interface{}{
"cpu": "500m",
"memory": "128Mi",
},
"requests": map[string]interface{}{
"cpu": "50m",
"memory": "64Mi",
},
},
},
},
},
},
},
},
},
}
if err := controllerutil.SetControllerReference(gitServer, el, h.k8sClient.Scheme()); err != nil {
return fmt.Errorf("failed to set controller reference for EventListener: %w", err)
}
elCheck := tektoncd.NewEventListenerUnstructured()
err := h.k8sClient.Get(ctx, client.ObjectKey{
Namespace: gitServer.Namespace,
Name: elName,
}, elCheck)
if err == nil {
log.Info("EventListener already exists", "EventListener", el.GetName())
return nil
}
if client.IgnoreNotFound(err) != nil {
return fmt.Errorf("failed to get EventListener: %w", err)
}
if err = h.k8sClient.Create(ctx, el); err != nil {
return fmt.Errorf("failed to create EventListener: %w", err)
}
log.Info("EventListener has been created", "EventListener", el.GetName())
return nil
}