func()

in controllers/codebasebranch/chain/put_codebase_image_stream/put_codebase_image_stream.go [33:84]


func (h PutCodebaseImageStream) ServeRequest(ctx context.Context, cb *codebaseApi.CodebaseBranch) error {
	log := ctrl.LoggerFrom(ctx).WithName("put-codebase-image-stream")

	log.Info("Start creating CodebaseImageStream")

	if err := h.setIntermediateSuccessFields(cb, codebaseApi.PutCodebaseImageStream); err != nil {
		return err
	}

	c := &codebaseApi.Codebase{}
	if err := h.Client.Get(ctx, types.NamespacedName{
		Namespace: cb.Namespace,
		Name:      cb.Spec.CodebaseName,
	}, c); err != nil {
		setFailedFields(cb, codebaseApi.PutCodebaseImageStream, err.Error())

		return fmt.Errorf("failed to fetch Codebase resource: %w", err)
	}

	registryUrl, err := h.getDockerRegistryUrl(ctx, cb.Namespace)
	if err != nil {
		err = fmt.Errorf("failed to get container registry url: %w", err)
		setFailedFields(cb, codebaseApi.PutCodebaseImageStream, err.Error())

		return err
	}

	cisName := fmt.Sprintf("%v-%v", c.Name, ProcessNameToK8sConvention(cb.Spec.BranchName))
	imageName := fmt.Sprintf("%v/%v", registryUrl, cb.Spec.CodebaseName)

	if err = h.createCodebaseImageStreamIfNotExists(
		ctrl.LoggerInto(ctx, log),
		cisName,
		imageName,
		cb.Spec.CodebaseName,
		cb.Namespace,
		cb,
	); err != nil {
		setFailedFields(cb, codebaseApi.PutCodebaseImageStream, err.Error())

		return err
	}

	log.Info("End creating CodebaseImageStream")

	err = handler.NextServeOrNil(ctx, h.Next, cb)
	if err != nil {
		return fmt.Errorf("failed to process next handler in chain: %w", err)
	}

	return nil
}