func()

in controllers/stage/chain/put_configmap.go [26:69]


func (h *PutConfigMap) ServeRequest(ctx context.Context, stage *cdPipeApi.Stage) error {
	log := ctrl.LoggerFrom(ctx)

	log.Info("Start putting ConfigMap", "configMapName", stage.Name)

	cm := &corev1.ConfigMap{}

	err := h.k8sClient.Get(
		ctx,
		types.NamespacedName{
			Namespace: stage.Namespace,
			Name:      stage.Name,
		},
		cm,
	)
	if err != nil && !k8sErrors.IsNotFound(err) {
		return fmt.Errorf("failed to get ConfigMap: %w", err)
	}

	if err == nil {
		log.Info("ConfigMap already exists")

		return nil
	}

	cm = &corev1.ConfigMap{
		ObjectMeta: metav1.ObjectMeta{
			Name:      stage.Name,
			Namespace: stage.Namespace,
		},
	}

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

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

	log.Info("ConfigMap has been created")

	return nil
}