in app/cluster/edit.go [25:111]
func (a *App) editGet(ctx *gin.Context) (router.Response, error) {
userCtx := router.ContextWithUserAccessToken(ctx)
mrExists, err := registry.ProjectHasOpenMR(ctx, a.ClusterRepo, a.Gerrit)
if err != nil {
return nil, errors.Wrap(err, "unable to check project MR exists")
}
if mrExists {
return router.MakeHTMLResponse(200, "registry/edit-mr-exists.html", gin.H{
"page": "cluster",
}), nil
}
k8sService, err := a.Services.K8S.ServiceForContext(userCtx)
if err != nil {
return nil, errors.Wrap(err, "unable to init service for user context")
}
cbService, err := a.Services.Codebase.ServiceForContext(userCtx)
if err != nil {
return nil, errors.Wrap(err, "unable to init cb service for user")
}
canUpdateCluster, err := k8sService.CanI("v2.edp.epam.com", "codebases", "update", a.Config.CodebaseName)
if err != nil {
return nil, errors.Wrap(err, "unable to check access to cluster codebase")
}
if !canUpdateCluster {
return nil, errors.Wrap(err, "access denied")
}
cb, err := cbService.Get(a.Config.CodebaseName)
if err != nil {
return nil, errors.Wrap(err, "unable to get registry")
}
hasUpdate, branches, _, err := registry.HasUpdate(userCtx, a.Services.Gerrit, cb, registry.MRTargetClusterUpdate)
if err != nil {
return nil, errors.Wrap(err, "unable to check for updates")
}
hwINITemplateContent, err := registry.GetINITemplateContent(a.Config.HardwareINITemplatePath)
if err != nil {
return nil, errors.Wrap(err, "unable to get ini template data")
}
values, err := a.getValuesDict(ctx)
if err != nil {
return nil, errors.Wrap(err, "unable to load values")
}
valuesJs, err := json.Marshal(values)
if err != nil {
return nil, fmt.Errorf("unable to encode values to json, %w", err)
}
dnsManual, err := registry.GetManualURL(ctx, a.EDPComponent, a.DDMManualEDPComponent, a.RegistryDNSManualPath)
if err != nil {
return nil, fmt.Errorf("unable to get manual, %w", err)
}
rspParams := gin.H{
"dnsManual": dnsManual,
"page": "cluster",
"updateBranches": branches,
"hasUpdate": hasUpdate,
"values": string(valuesJs),
}
for _, f := range a.editDataLoaders() {
if err := f(ctx, values, rspParams); err != nil {
return nil, errors.Wrap(err, "unable to load edit data")
}
}
templateArgs, err := json.Marshal(rspParams)
if err != nil {
return nil, errors.Wrap(err, "unable to encode template arguments")
}
return router.MakeHTMLResponse(200, "cluster/edit.html", gin.H{
"page": "cluster",
"templateArgs": string(templateArgs),
"hwINITemplateContent": hwINITemplateContent,
}), nil
}