func()

in app/cluster/key.go [112:156]


func (a *App) updateKey(ctx *gin.Context) error {
	ck := clusterKey{}

	if err := ctx.ShouldBind(&ck); err != nil {
		_, ok := err.(validator.ValidationErrors)
		if !ok {
			return errors.Wrap(err, "unable to parse registry form")
		}

		return err
	}

	values, err := registry.GetValuesFromGit(a.Config.CodebaseName, registry.MasterBranch, a.Gerrit)
	if err != nil {
		return errors.Wrap(err, "unable to get values from git")
	}
	vaultSecretData := make(map[string]map[string]interface{})

	vaultPath := a.vaultPlatformPathKey(fmt.Sprintf("%s-%s", registry.KeyManagementVaultPath, time.Now().Format("20060201T150405Z")))

	repoFiles := make(map[string]string)

	if _, err := registry.PrepareRegistryKeys(keyManagement{r: &ck, vaultSecretPath: vaultPath}, ctx.Request,
		vaultSecretData, values.OriginalYaml, repoFiles); err != nil {
		return errors.Wrap(err, "unable to create registry keys")
	}

	if err := registry.CacheRepoFiles(a.TempFolder, a.ClusterRepo, repoFiles, a.appCache); err != nil {
		return fmt.Errorf("unable to cache repo files")
	}

	if len(values.OriginalYaml) > 0 || len(repoFiles) > 0 {
		if err := registry.CreateEditMergeRequest(ctx, a.Config.CodebaseName, values.OriginalYaml, a.Gerrit, []string{}); err != nil {
			return errors.Wrap(err, "unable to create edit merge request")
		}
	}

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

	return nil
}