func()

in app/registry/public_api.go [183:230]


func (a *App) removePublicAPIReg(ctx *gin.Context) (router.Response, error) {
	registryName := ctx.Param("name")
	systemName := ctx.PostForm("reg-name")
	if systemName == "" {
		return nil, errors.New("reg-name is required")
	}

	vals, err := GetValuesFromGit(registryName, MasterBranch, a.Gerrit)
	if err != nil {
		return nil, fmt.Errorf("unable to get values from git, %w", err)
	}

	if err != nil {
		return nil, fmt.Errorf("unable to decode publicAPI regs, %w", err)
	}

	found := false
	for i, v := range vals.PublicApi {
		if v.Name == systemName {
			vals.PublicApi = append(vals.PublicApi[:i], vals.PublicApi[i+1:]...)
			found = true
			break
		}
	}
	if !found {
		return nil, errors.New("reg-name not found")
	}

	vals.OriginalYaml[publicAPIValuesIndex] = vals.PublicApi
	if err != nil {
		return nil, fmt.Errorf("unable to encode new values yaml, %w", err)
	}

	if err := CreateEditMergeRequest(
		ctx,
		registryName,
		vals.OriginalYaml,
		a.Gerrit, []string{},
		MRLabel{Key: MRLabelPublicApiTarget, Value: mrTargetPublicAPIReg},
		MRLabel{Key: MRLabelPublicApiName, Value: ctx.PostForm("reg-name")},
		MRLabel{Key: MRLabelPublicApiSubTarget, Value: "deletion"},
	); err != nil {
		return nil, fmt.Errorf("unable to create MR, %w", err)
	}

	return router.MakeRedirectResponse(http.StatusFound,
		fmt.Sprintf("/admin/registry/view/%s", registryName)), nil
}