func()

in controllers/codebase/service/chain/delete_webhook.go [32:94]


func (s *DeleteWebHook) ServeRequest(ctx context.Context, codebase *codebaseApi.Codebase) error {
	log := ctrl.LoggerFrom(ctx)

	if codebase.Spec.CiTool != util.CITekton {
		log.Info("Skip deleting webhook for non-Tekton CI tool")
		return nil
	}

	log.Info("Start deleting webhook...")

	if codebase.Status.GetWebHookRef() == "" {
		log.Info("Webhook ref is empty. Skip deleting webhook.")

		return nil
	}

	gitServer := &codebaseApi.GitServer{}
	if err := s.client.Get(ctx, client.ObjectKey{Name: codebase.Spec.GitServer, Namespace: codebase.Namespace}, gitServer); err != nil {
		log.Error(err, "Failed to delete webhook: unable to get GitServer", "gitServer", codebase.Spec.GitServer)

		return nil
	}

	secret, err := s.getGitServerSecret(ctx, gitServer.Spec.NameSshKeySecret, codebase.Namespace)
	if err != nil {
		log.Error(err, "Failed to delete webhook: unable to get GitServer secret")

		return nil
	}

	gitProvider, err := gitprovider.NewProvider(gitServer, s.restyClient, string(secret.Data[util.GitServerSecretTokenField]))
	if err != nil {
		log.Error(err, "Failed to delete webhook: unable to create git provider")

		return nil
	}

	projectID := codebase.Spec.GetProjectID()
	gitHost := gitprovider.GetGitProviderAPIURL(gitServer)

	err = gitProvider.DeleteWebHook(
		ctx,
		gitHost,
		string(secret.Data[util.GitServerSecretTokenField]),
		projectID,
		codebase.Status.GetWebHookRef(),
	)
	if err != nil {
		if errors.Is(err, gitprovider.ErrWebHookNotFound) {
			log.Info("Webhook was not found. Skip deleting webhook")

			return nil
		}

		log.Error(err, "Failed to delete webhook")

		return nil
	}

	log.Info("Webhook has been deleted successfully")

	return nil
}