in app/registry/trembita_client.go [140:193]
func (a *App) createTrembitaClientRegistry(ctx *gin.Context) (rsp router.Response, retErr error) {
registryName := ctx.Param("name")
_, err := a.Codebase.Get(registryName)
if err != nil {
return nil, errors.Wrap(err, "unable to find registry")
}
var tf TrembitaClientRegistryForm
if err := ctx.ShouldBind(&tf); err != nil {
return nil, errors.Wrap(err, "unable to parse form")
}
values, err := GetValuesFromGit(registryName, MasterBranch, a.Gerrit)
if err != nil {
return nil, errors.Wrap(err, "unable to get values")
}
_, ok := values.Trembita.Registries[tf.TrembitaClientRegitryName]
if ok {
return nil, errors.Wrap(err, "trembita client already exists")
}
trembitaRegistry := tf.ToNestedStruct(strings.ReplaceAll(a.Config.WiremockAddr, registryNamePlaceholder,
registryName))
trembitaRegistry.Type = externalSystemDeletableType
trembitaRegistry.Protocol = tf.TrembitaClientProtocol
if tf.TrembitaServiceAuthType == authTypeAuthToken && tf.TrembitaServiceAuthSecret != "" {
vaultPath := fmt.Sprintf("%s/trembita-registries/%s-%s", a.vaultRegistryPath(registryName), tf.TrembitaClientRegitryName, time.Now().Format("20060201T150405Z"))
prefixedPath := fmt.Sprintf("vault:%s", vaultPath)
if tf.TrembitaServiceAuthSecret != prefixedPath {
if err := CreateVaultSecrets(a.Vault, map[string]map[string]interface{}{
vaultPath: {
fmt.Sprintf("trembita.registries.%s.auth.secret.token", tf.TrembitaClientRegitryName): tf.TrembitaServiceAuthSecret,
},
}, true); err != nil {
return nil, errors.Wrap(err, "unable to create auth token secret")
}
}
trembitaRegistry.Auth["secret"] = prefixedPath
}
values.Trembita.Registries[tf.TrembitaClientRegitryName] = trembitaRegistry
values.OriginalYaml[trembitaValuesKey] = values.Trembita
if err := CreateEditMergeRequest(ctx, registryName, values.OriginalYaml, a.Gerrit,
[]string{}, MRLabel{Key: MRLabelTarget, Value: MRLabelTargetTrembitaRegistryUpdate},
MRLabel{Key: MRLabelTrembitaRegsitryName, Value: tf.TrembitaClientRegitryName}); err != nil {
return nil, errors.Wrap(err, "unable to create merge request")
}
return router.MakeRedirectResponse(http.StatusFound,
fmt.Sprintf("/admin/registry/view/%s", registryName)), nil
}