From 1de488859957e4c8782079f75df0963c6f6ce547 Mon Sep 17 00:00:00 2001 From: plm Date: Tue, 10 Dec 2024 14:01:47 +0100 Subject: [PATCH 1/4] Remove extra underscore character; it breaks the env var loading --- config/conf_loader.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/conf_loader.go b/config/conf_loader.go index 8397953..9d1e1ee 100644 --- a/config/conf_loader.go +++ b/config/conf_loader.go @@ -26,7 +26,7 @@ import ( func GetConfLoader() *onion.Onion { logger := zerolog.New(os.Stdout).With().Timestamp().Logger() AppName := GetAppName() - EnvPrefix := strings.ToUpper(AppName[0:2]+AppName[3:]) + "_" + EnvPrefix := strings.ToUpper(AppName[0:2] + AppName[3:]) defaultConfigFile := "/etc/oc/" + AppName[3:] + ".json" localConfigFile := "./" + AppName[3:] + ".json" var configFile string From 21d08204b5ba5518f36c3c9c3b3cc4e57ca2fde9 Mon Sep 17 00:00:00 2001 From: plm Date: Mon, 16 Dec 2024 09:17:54 +0100 Subject: [PATCH 2/4] Fixing env based layer; not using onion builtin mechanism to preserve opencloud conf key/value format --- config/conf_loader.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/config/conf_loader.go b/config/conf_loader.go index 9d1e1ee..5494e3d 100644 --- a/config/conf_loader.go +++ b/config/conf_loader.go @@ -26,12 +26,12 @@ import ( func GetConfLoader() *onion.Onion { logger := zerolog.New(os.Stdout).With().Timestamp().Logger() AppName := GetAppName() - EnvPrefix := strings.ToUpper(AppName[0:2] + AppName[3:]) + EnvPrefix := strings.ToUpper(AppName[0:2]+AppName[3:]) + "_" defaultConfigFile := "/etc/oc/" + AppName[3:] + ".json" localConfigFile := "./" + AppName[3:] + ".json" var configFile string var o *onion.Onion - l3 := onion.NewEnvLayerPrefix("_", EnvPrefix) + l3 := GetEnvVarLayer(EnvPrefix) l2, err := onion.NewFileLayer(localConfigFile, nil) if err == nil { logger.Info().Msg("Local config file found " + localConfigFile + ", overriding default file") @@ -54,3 +54,17 @@ func GetConfLoader() *onion.Onion { } return o } + +func GetEnvVarLayer(prefix string) onion.Layer { + envVars := make(map[string]interface{}) + + for _, e := range os.Environ() { + pair := strings.SplitN(e, "=", 2) + key := pair[0] + if strings.HasPrefix(key, prefix) { + envVars[strings.TrimPrefix(key, prefix)] = pair[1] + } + } + + return onion.NewMapLayer(envVars) +} From 0f4adeea86bebbe2b6bda36abd6ed5d33b05f674 Mon Sep 17 00:00:00 2001 From: plm Date: Wed, 8 Jan 2025 16:55:42 +0100 Subject: [PATCH 3/4] Same prefix for all builtin microservices in opencloud --- config/conf_loader.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/conf_loader.go b/config/conf_loader.go index 5494e3d..7c3bce1 100644 --- a/config/conf_loader.go +++ b/config/conf_loader.go @@ -26,7 +26,7 @@ import ( func GetConfLoader() *onion.Onion { logger := zerolog.New(os.Stdout).With().Timestamp().Logger() AppName := GetAppName() - EnvPrefix := strings.ToUpper(AppName[0:2]+AppName[3:]) + "_" + EnvPrefix := "OC_" defaultConfigFile := "/etc/oc/" + AppName[3:] + ".json" localConfigFile := "./" + AppName[3:] + ".json" var configFile string From fd1c579ec418387a6a2cbf052a9c18dc51ef8bd7 Mon Sep 17 00:00:00 2001 From: plm Date: Fri, 10 Jan 2025 17:39:58 +0100 Subject: [PATCH 4/4] Removing required field on PeerId, see #7 --- models/resource_model/resource_model.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/resource_model/resource_model.go b/models/resource_model/resource_model.go index 63bf0b6..9255411 100644 --- a/models/resource_model/resource_model.go +++ b/models/resource_model/resource_model.go @@ -25,7 +25,7 @@ type AbstractResource struct { Owner string `json:"owner,omitempty" bson:"owner,omitempty" validate:"required"` // Owner is the owner of the resource OwnerLogo string `json:"owner_logo,omitempty" bson:"owner_logo,omitempty"` // OwnerLogo is the owner logo of the resource SourceUrl string `json:"source_url,omitempty" bson:"source_url,omitempty" validate:"required"` // SourceUrl is the source URL of the resource - PeerID string `json:"peer_id,omitempty" bson:"peer_id,omitempty" validate:"required"` // PeerID is the ID of the peer getting this resource + PeerID string `json:"peer_id,omitempty" bson:"peer_id,omitempty"` // PeerID is the ID of the peer getting this resource Price string `json:"price,omitempty" bson:"price,omitempty"` // Price is the price of access to the resource License string `json:"license,omitempty" bson:"license,omitempty"` // License is the license of the resource ResourceModel *ResourceModel `json:"resource_model,omitempty" bson:"resource_model,omitempty"` // ResourceModel is the model of the resource