func()

in controllers/codebaseimagestream/chain/put_cd_stage_deploy.go [49:76]


func (h PutCDStageDeploy) handleCodebaseImageStreamEnvLabels(ctx context.Context, imageStream *codebaseApi.CodebaseImageStream) error {
	l := ctrl.LoggerFrom(ctx)

	if imageStream.ObjectMeta.Labels == nil || len(imageStream.ObjectMeta.Labels) == 0 {
		l.Info("CodebaseImageStream does not contain env labels. Skip CDStageDeploy creating.")
		return nil
	}

	if errs := validateCbis(imageStream); len(errs) != 0 {
		return errors.New(strings.Join(errs, "; "))
	}

	labelValueRegexp := regexp.MustCompile("^[-A-Za-z0-9_.]+/[-A-Za-z0-9_.]+$")

	for envLabel := range imageStream.ObjectMeta.Labels {
		if !labelValueRegexp.MatchString(envLabel) {
			l.Info("Label value does not match the pattern cd-pipeline-name/stage-name. Skip CDStageDeploy creating.")

			continue
		}

		if err := h.putCDStageDeploy(ctx, envLabel, imageStream.Namespace, imageStream.Spec); err != nil {
			return err
		}
	}

	return nil
}