@@ -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
4141var config Config
4242
4343func 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
221199func 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}
0 commit comments