func()

in controllers/stage/chain/put_environment_label_to_codebase_image_streams.go [24:64]


func (h PutEnvironmentLabelToCodebaseImageStreams) ServeRequest(ctx context.Context, stage *cdPipeApi.Stage) error {
	logger := ctrl.LoggerFrom(ctx)
	if stage.IsManualTriggerType() {
		logger.Info("Trigger type is not auto deploy, skipping")
		return nil
	}

	logger.Info("start creating environment labels in codebase image stream resources.")

	pipe, err := util.GetCdPipeline(h.client, stage)
	if err != nil {
		return fmt.Errorf("couldn't get %s cd pipeline: %w", stage.Spec.CdPipeline, err)
	}

	if len(pipe.Spec.InputDockerStreams) == 0 {
		return fmt.Errorf("pipeline %s doesn't contain codebase image streams", pipe.Name)
	}

	for _, name := range pipe.Spec.InputDockerStreams {
		stream, err := cluster.GetCodebaseImageStream(h.client, name, stage.Namespace)
		if err != nil {
			return fmt.Errorf("couldn't get %s codebase image stream: %w", name, err)
		}

		if stage.IsFirst() || !slices.Contains(pipe.Spec.ApplicationsToPromote, stream.Spec.Codebase) {
			if updErr := h.updateLabel(ctx, stream, pipe.Name, stage.Spec.Name); updErr != nil {
				return updErr
			}

			continue
		}

		if err = h.updateLabelForVerifiedStream(ctx, pipe.Name, stream.Spec.Codebase, stage); err != nil {
			return err
		}
	}

	logger.Info("environment labels have been added to codebase image stream resources.")

	return nil
}