in app/registry/create.go [300:370]
func (a *App) createRegistry(ctx context.Context, ginContext *gin.Context, r *registry,
cbService codebase.ServiceInterface, k8sService k8s.ServiceInterface) error {
_, err := cbService.Get(r.Name)
if err == nil {
return validator.ValidationErrors([]validator.FieldError{router.MakeFieldError("Name", "registry-exists")})
}
if !k8sErrors.IsNotFound(err) {
return errors.Wrap(err, "unknown error")
}
values, err := GetValuesFromGit(a.Config.RegistryTemplateName, r.RegistryGitBranch, a.Gerrit)
if err != nil {
return errors.Wrap(err, "unable to load values from template")
}
vaultSecretData := make(map[string]map[string]interface{})
mrActions := make([]string, 0)
for _, proc := range a.createUpdateRegistryProcessors() {
if _, err := proc(ginContext, r, values, vaultSecretData, &mrActions); err != nil {
return errors.Wrap(err, "error during registry create")
}
}
repoFiles := make(map[string]string)
if _, err := PrepareRegistryKeys(keyManagement{
r: r,
vaultSecretPath: a.vaultRegistryPathKey(r.Name, fmt.Sprintf("%s-%s", KeyManagementVaultPath,
time.Now().Format("20060201T150405Z"))),
}, ginContext.Request, vaultSecretData, values.OriginalYaml, repoFiles); err != nil {
return errors.Wrap(err, "unable to prepare registry keys")
}
a.prepareValuesGlobal(r, values)
if err := CacheRepoFiles(a.TempFolder, r.Name, repoFiles, a.Cache); err != nil {
return fmt.Errorf("unable to cache repo file, %w", err)
}
if err := CreateVaultSecrets(a.Vault, vaultSecretData, false); err != nil {
return errors.Wrap(err, "unable to create vault secrets")
}
if err := a.Services.Gerrit.CreateProject(ctx, r.Name); err != nil {
return errors.Wrap(err, "unable to create gerrit project")
}
cb := a.prepareRegistryCodebase(r)
valuesEncoded, err := a.encodeValues(r.Name, values.OriginalYaml)
if err != nil {
return errors.Wrap(err, "unable to encode values")
}
cb.Annotations = map[string]string{
AnnotationTemplateName: a.Config.RegistryTemplateName,
AnnotationCreatorUsername: ginContext.GetString(router.UserNameSessionKey),
AnnotationCreatorEmail: ginContext.GetString(router.UserEmailSessionKey),
AnnotationValues: valuesEncoded,
}
if err := cbService.Create(cb); err != nil {
return errors.Wrap(err, "unable to create codebase")
}
if err := cbService.CreateDefaultBranch(cb); err != nil {
return errors.Wrap(err, "unable to create default branch")
}
return nil
}