func()

in controllers/gitserver/create_event_listener.go [217:285]


func (h *CreateEventListener) createRoute(ctx context.Context, gitServer *codebaseApi.GitServer) error {
	log := ctrl.LoggerFrom(ctx)

	log.Info("Creating Route for EventListener")

	name := GenerateIngressName(gitServer.Name)

	err := h.k8sClient.Get(ctx, client.ObjectKey{
		Namespace: gitServer.Namespace,
		Name:      name,
	}, &routeApi.Route{})

	if err == nil {
		log.Info("Route already exists", "Route", name)

		return nil
	}

	if client.IgnoreNotFound(err) != nil {
		return fmt.Errorf("failed to get Route: %w", err)
	}

	edpConf, err := platform.GetEdpConfig(ctx, h.k8sClient, gitServer.Namespace)
	if err != nil {
		return fmt.Errorf("failed to get dnsWildcard: %w", err)
	}

	const routeWeight = int32(100)

	route := &routeApi.Route{
		ObjectMeta: metav1.ObjectMeta{
			Name:      name,
			Namespace: gitServer.Namespace,
		},
		Spec: routeApi.RouteSpec{
			Host: fmt.Sprintf(
				"el-%s-%s.%s",
				gitServer.Name,
				gitServer.Namespace,
				edpConf.DnsWildcard,
			),
			TLS: &routeApi.TLSConfig{
				InsecureEdgeTerminationPolicy: routeApi.InsecureEdgeTerminationPolicyRedirect,
				Termination:                   routeApi.TLSTerminationEdge,
			},
			To: routeApi.RouteTargetReference{
				Kind:   "Service",
				Name:   generateServiceName(gitServer.Name),
				Weight: ptr.To(routeWeight),
			},
			Port: &routeApi.RoutePort{
				TargetPort: intstr.FromString("http-listener"),
			},
			WildcardPolicy: routeApi.WildcardPolicyNone,
		},
	}

	if err = controllerutil.SetControllerReference(gitServer, route, h.k8sClient.Scheme()); err != nil {
		return fmt.Errorf("failed to set controller reference for Route: %w", err)
	}

	if err = h.k8sClient.Create(ctx, route); err != nil {
		return fmt.Errorf("failed to create Route: %w", err)
	}

	log.Info("Route has been created", "Route", route.Name)

	return nil
}