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
}