func()

in controllers/stage/chain/delete_environment_label_from_codebase_image_streams.go [37:73]


func (h DeleteEnvironmentLabelFromCodebaseImageStreams) deleteEnvironmentLabel(ctx context.Context, stage *cdPipeApi.Stage) error {
	pipe, err := util.GetCdPipeline(h.client, stage)
	if err != nil {
		return fmt.Errorf("failed to 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.Spec.Name)
	}

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

		if stage.IsFirst() {
			if envErr := h.setEnvLabel(ctx, stage.Spec.Name, pipe.Spec.Name, stream); envErr != nil {
				return envErr
			}

			continue
		}

		if envErr := h.setEnvLabelForVerifiedImageStream(ctx, stage, stream, pipe.Spec.Name, name); envErr != nil {
			return envErr
		}

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

	return nil
}