func()

in app/registry/external_reg.go [216:264]


func (a *App) disableExternalReg(ctx *gin.Context) (router.Response, error) {
	userCtx := router.ContextWithUserAccessToken(ctx)

	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, errors.Wrap(err, "unable to get values from git")
	}

	eRegs, err := decodeExternalRegsFromValues(vals.OriginalYaml)
	if err != nil {
		return nil, errors.Wrap(err, "unable to decode external regs")
	}

	found := false
	mrSubTarget := mrSubTargetDisable
	for i, v := range eRegs {
		if v.Name == systemName {
			eRegs[i].Enabled = !eRegs[i].Enabled
			found = true
			if eRegs[i].Enabled {
				mrSubTarget = mrSubTargetEnable
			}
		}
	}
	if !found {
		return nil, errors.New("reg-name not found")
	}

	vals.OriginalYaml[erValuesIndex] = eRegs
	newValues, err := yaml.Marshal(vals.OriginalYaml)
	if err != nil {
		return nil, errors.Wrap(err, "unable to encode new values yaml")
	}

	if err := a.createErMergeRequest(userCtx, ctx, registryName, systemName, string(newValues), mrSubTarget); err != nil {
		if _, ok := err.(MRExists); !ok {
			return nil, errors.Wrap(err, "unable to create MR")
		}
	}

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