in app/registry/view.go [148:190]
func (a *App) makeViewRegistryExternalRegistration(mrs []gerrit.GerritMergeRequest) func(userCtx context.Context,
reg *codebase.Codebase, values *Values, viewParams gin.H) error {
return func(userCtx context.Context, reg *codebase.Codebase, values *Values, viewParams gin.H) error {
eRegs, mergeRequestsForER := make([]ExternalRegistration, 0), make(map[string]struct{})
for _, mr := range mrs {
if mr.Labels[MRLabelTarget] == "external-reg" && mr.Status.Value == gerrit.StatusNew {
eRegs = append(eRegs, ExternalRegistration{Name: mr.Annotations[mrAnnotationRegName], Enabled: true,
External: mr.Annotations[mrAnnotationRegType] == externalSystemTypeExternal, StatusRegistration: erStatusInactive})
mergeRequestsForER[mr.Annotations[mrAnnotationRegName]] = struct{}{}
} else if mr.Labels[MRLabelTarget] == "external-reg" && mr.Status.Value != gerrit.StatusMerged && mr.Status.Value != gerrit.StatusAbandoned {
eRegs = append(eRegs, ExternalRegistration{Name: mr.Annotations[mrAnnotationRegName], Enabled: true,
External: mr.Annotations[mrAnnotationRegType] == externalSystemTypeExternal, StatusRegistration: erStatusFailed})
mergeRequestsForER[mr.Annotations[mrAnnotationRegName]] = struct{}{}
}
}
//TODO: refactor to values struct
_eRegs, err := decodeExternalRegsFromValues(values.OriginalYaml)
if err != nil {
return errors.Wrap(err, "unable to decode external regs")
}
for _, _er := range _eRegs {
if _, ok := mergeRequestsForER[_er.Name]; !ok {
eRegs = append(eRegs, _er)
}
}
if err := a.loadKeysForExternalRegs(userCtx, reg.Name, eRegs); err != nil {
return errors.Wrap(err, "unable load keys for ext regs")
}
viewParams["externalRegs"] = eRegs
viewParams["values"] = values
if err := a.loadCodebasesForExternalRegistrations(reg.Name, eRegs, viewParams); err != nil {
return errors.Wrap(err, "unable to load codebases for external reg")
}
return nil
}
}