func()

in app/registry/edit.go [378:440]


func (a *App) editRegistry(ctx context.Context, ginContext *gin.Context, r *registry, cb *codebase.Codebase,
	cbService codebase.ServiceInterface) error {

	cb.Spec.Description = &r.Description
	if cb.Annotations == nil {
		cb.Annotations = make(map[string]string)
	}

	values, err := GetValuesFromGit(r.Name, MasterBranch, a.Gerrit)
	if err != nil {
		return fmt.Errorf("unable to get values from git, %w", err)
	}

	var (
		vaultSecretData = make(map[string]map[string]interface{})
		mrActions       = make([]string, 0)
		valuesChanged   = false
		repoFiles       = make(map[string]string)
	)

	for _, proc := range a.createUpdateRegistryProcessors() {
		procValuesChanged, err := proc(ginContext, r, values, vaultSecretData, &mrActions)
		if err != nil {
			return fmt.Errorf("error during registry create, %w", err)
		}
		if procValuesChanged {
			valuesChanged = true
		}
	}

	keysModified, 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)
	if err != nil {
		return fmt.Errorf("unable to create registry keys, %w", err)
	}

	if keysModified {
		if err := CacheRepoFiles(a.TempFolder, r.Name, repoFiles, a.Cache); err != nil {
			return fmt.Errorf("unable to cache repo file, %w", err)
		}
	}

	if valuesChanged || len(repoFiles) > 0 || keysModified {
		if err := CreateEditMergeRequest(ginContext, r.Name, values.OriginalYaml, a.Gerrit, mrActions); err != nil {
			return fmt.Errorf("unable to create edit merge request, %w", err)
		}
	}

	if len(vaultSecretData) > 0 {
		if err := CreateVaultSecrets(a.Vault, vaultSecretData, false); err != nil {
			return fmt.Errorf("unable to create vault secrets, %w", err)
		}
	}

	if err := cbService.Update(ctx, cb); err != nil {
		return fmt.Errorf("unable to update codebase, %w", err)
	}

	return nil
}