Skip to content

Commit a7663b6

Browse files
committed
Fix loading of config
1 parent 32fb4a5 commit a7663b6

39 files changed

Lines changed: 15121 additions & 41 deletions

config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ nomad:
2222
apikey: blahblah
2323

2424
server_config:
25-
host: "" # Leave empty for all interfaces
25+
host: ""
2626
port: 8080

go.mod

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ require (
1010
github.com/jedib0t/go-pretty/v6 v6.6.7
1111
github.com/rs/zerolog v1.34.0
1212
github.com/stretchr/testify v1.10.0
13-
gopkg.in/yaml.v3 v3.0.1
1413
)
1514

15+
require gopkg.in/yaml.v3 v3.0.1 // indirect
16+
1617
require (
1718
github.com/davecgh/go-spew v1.1.1 // indirect
1819
github.com/go-openapi/jsonpointer v0.21.0 // indirect
1920
github.com/go-openapi/swag v0.23.0 // indirect
21+
github.com/goccy/go-yaml v1.18.0
2022
github.com/gorilla/websocket v1.5.0 // indirect
2123
github.com/hashicorp/cronexpr v1.1.2 // indirect
2224
github.com/hashicorp/errwrap v1.0.0 // indirect

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr
1515
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
1616
github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
1717
github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
18+
github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw=
19+
github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
1820
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
1921
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
2022
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=

logger/logger.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,29 @@ import (
88
)
99

1010
var Log zerolog.Logger
11+
var level zerolog.Level
12+
13+
func InitLogger() {
14+
15+
switch os.Getenv("LEVEL") {
16+
case "trace":
17+
level = zerolog.TraceLevel
18+
case "debug":
19+
level = zerolog.DebugLevel
20+
case "info":
21+
level = zerolog.InfoLevel
22+
case "warn":
23+
level = zerolog.WarnLevel
24+
case "error":
25+
level = zerolog.ErrorLevel
26+
case "fatal":
27+
level = zerolog.FatalLevel
28+
case "panic":
29+
level = zerolog.PanicLevel
30+
default:
31+
level = zerolog.InfoLevel
32+
}
1133

12-
func InitLogger(level zerolog.Level) {
1334
zerolog.SetGlobalLevel(level)
1435
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
1536

main.go

Lines changed: 19 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import (
99

1010
"github.com/go-chi/chi/v5"
1111
"github.com/go-chi/chi/v5/middleware"
12+
"github.com/goccy/go-yaml"
1213
"github.com/google/uuid"
1314
"github.com/hashicorp/nomad/api"
1415
"github.com/rs/zerolog"
15-
"gopkg.in/yaml.v3"
1616

1717
v1 "github.com/DistroByte/molecule/internal/api/v1"
1818
generated "github.com/DistroByte/molecule/internal/generated/go"
@@ -33,35 +33,17 @@ type Config struct {
3333
} `yaml:"standard_urls"`
3434

3535
ServerConfig struct {
36-
Port int `yaml:"port"`
3736
Host string `yaml:"host"`
37+
Port int `yaml:"port"`
3838
} `yaml:"server_config"`
3939
}
4040

4141
var config Config
4242

4343
func main() {
44+
logger.InitLogger()
4445

45-
switch os.Getenv("LEVEL") {
46-
case "trace":
47-
logger.InitLogger(zerolog.TraceLevel)
48-
case "debug":
49-
logger.InitLogger(zerolog.DebugLevel)
50-
case "info":
51-
logger.InitLogger(zerolog.InfoLevel)
52-
case "warn":
53-
logger.InitLogger(zerolog.WarnLevel)
54-
case "error":
55-
logger.InitLogger(zerolog.ErrorLevel)
56-
case "fatal":
57-
logger.InitLogger(zerolog.FatalLevel)
58-
case "panic":
59-
logger.InitLogger(zerolog.PanicLevel)
60-
default:
61-
logger.InitLogger(zerolog.InfoLevel)
62-
}
63-
64-
logger.Log.Info().Msg("Logger initialized")
46+
logger.Log.Info().Msg("logger initialized")
6547

6648
var nomadService v1.NomadServiceInterface
6749

@@ -75,19 +57,18 @@ func main() {
7557
config, err = loadConfig(configFilePath)
7658

7759
if err != nil {
78-
logger.Log.Error().Err(err).Msg("Failed to load config file")
60+
logger.Log.Error().Err(err).Msg("failed to load config file")
7961
return
8062
}
8163
}
8264

83-
logger.Log.Debug().Any("urls", config.StandardURLs).Msg("Loaded standard URLs from YAML")
8465
if len(config.StandardURLs) == 0 {
85-
logger.Log.Warn().Msg("No standard URLs found in YAML file")
66+
logger.Log.Warn().Msg("no standard URLs found in YAML file")
8667
}
8768

8869
nomadClient, err := api.NewClient(&api.Config{Address: config.Nomad.Address})
8970
if err != nil {
90-
logger.Log.Error().Err(err).Msg("Failed to create api client")
71+
logger.Log.Error().Err(err).Msg("failed to create api client")
9172
return
9273
}
9374

@@ -101,11 +82,8 @@ func main() {
10182
})
10283
}
10384
nomadService = v1.NewNomadService(nomadClient, standardURLsSlice)
104-
logger.Log.Trace().Msg("Running in production mode with Nomad service")
105-
10685
} else {
10786
nomadService = v1.NewMockNomadService()
108-
logger.Log.Trace().Msg("Running in local mode with mock Nomad service")
10987
}
11088

11189
moleculeAPIService := v1.NewMoleculeAPIService(nomadService)
@@ -136,19 +114,19 @@ func main() {
136114
specPath := "./apispec/spec/index.yaml"
137115
yamlData, err := os.ReadFile(specPath)
138116
if err != nil {
139-
http.Error(w, "Failed to read OpenAPI spec", http.StatusInternalServerError)
117+
http.Error(w, "failed to read OpenAPI spec", http.StatusInternalServerError)
140118
return
141119
}
142120

143121
var jsonData map[string]interface{}
144122
if err := yaml.Unmarshal(yamlData, &jsonData); err != nil {
145-
http.Error(w, "Failed to parse OpenAPI spec", http.StatusInternalServerError)
123+
http.Error(w, "failed to parse OpenAPI spec", http.StatusInternalServerError)
146124
return
147125
}
148126

149127
w.Header().Set("Content-Type", "application/json")
150128
if err := json.NewEncoder(w).Encode(jsonData); err != nil {
151-
http.Error(w, "Failed to encode OpenAPI spec as JSON", http.StatusInternalServerError)
129+
http.Error(w, "failed to encode OpenAPI spec as JSON", http.StatusInternalServerError)
152130
}
153131
})
154132

@@ -171,7 +149,7 @@ func main() {
171149
loggerHost = config.ServerConfig.Host
172150
}
173151

174-
logger.Log.Info().Msgf("Starting server on http://%s:%d", loggerHost, config.ServerConfig.Port)
152+
logger.Log.Info().Msgf("starting server on http://%s:%d", loggerHost, config.ServerConfig.Port)
175153
logger.Log.Fatal().Err(http.ListenAndServe(fmt.Sprintf("%s:%d", config.ServerConfig.Host, config.ServerConfig.Port), r)).Msg("Server failed to start")
176154
}
177155

@@ -219,14 +197,14 @@ func apiKeyAuthHandler(key string) func(http.Handler) http.Handler {
219197
}
220198

221199
func requiresAuth(pattern string) bool {
222-
logger.Log.Debug().Msgf("Checking if route %s requires authentication", pattern)
200+
logger.Log.Debug().Msgf("checking if route %s requires authentication", pattern)
223201
authenticatedRoutes := []string{
224202
"/v1/services/{service}/alloc-restart",
225203
}
226204

227205
for _, route := range authenticatedRoutes {
228206
if route == pattern {
229-
logger.Log.Debug().Msgf("Route %s requires authentication", pattern)
207+
logger.Log.Debug().Msgf("route %s requires authentication", pattern)
230208
return true
231209
}
232210
}
@@ -241,14 +219,17 @@ func loadConfig(filePath string) (Config, error) {
241219
defer file.Close()
242220

243221
var config Config
244-
decoder := yaml.NewDecoder(file)
245-
if err := decoder.Decode(&config); err != nil {
222+
if err := yaml.NewDecoder(file).Decode(&config); err != nil {
246223
return Config{}, fmt.Errorf("failed to decode YAML file: %w", err)
247224
}
248225

226+
// Set default values for server config if not provided
249227
if config.ServerConfig.Port == 0 {
250-
config.ServerConfig.Port = 8080 // Default port if not specified
228+
logger.Log.Warn().Msg("no port specified in server config, using default port 8080")
229+
config.ServerConfig.Port = 8080
251230
}
252231

232+
logger.Log.Debug().Any("config", config).Msg("config loaded")
233+
253234
return config, nil
254235
}

vendor/github.com/goccy/go-yaml/.codecov.yml

Lines changed: 31 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/goccy/go-yaml/.gitignore

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/goccy/go-yaml/.golangci.yml

Lines changed: 65 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)