diff --git a/pkg/services/apiserver/config.go b/pkg/services/apiserver/config.go index 5436b97be4d..39346bb26c8 100644 --- a/pkg/services/apiserver/config.go +++ b/pkg/services/apiserver/config.go @@ -11,9 +11,12 @@ import ( "github.com/grafana/grafana/pkg/setting" ) -func applyGrafanaConfig(cfg *setting.Cfg, features featuremgmt.FeatureToggles, o *options.Options) { +func applyGrafanaConfig(cfg *setting.Cfg, features featuremgmt.FeatureToggles, o *options.Options) error { defaultLogLevel := 0 ip := net.ParseIP(cfg.HTTPAddr) + if ip == nil { + return fmt.Errorf("invalid IP address: %s", cfg.HTTPAddr) + } apiURL := cfg.AppURL port, err := strconv.Atoi(cfg.HTTPPort) if err != nil { @@ -27,7 +30,7 @@ func applyGrafanaConfig(cfg *setting.Cfg, features featuremgmt.FeatureToggles, o apiURL = fmt.Sprintf("https://%s:%d", ip, port) } - host := fmt.Sprintf("%s:%d", ip, port) + host := net.JoinHostPort(cfg.HTTPAddr, strconv.Itoa(port)) apiserverCfg := cfg.SectionWithEnvOverrides("grafana-apiserver") @@ -54,4 +57,5 @@ func applyGrafanaConfig(cfg *setting.Cfg, features featuremgmt.FeatureToggles, o o.ExtraOptions.ExternalAddress = host o.ExtraOptions.APIURL = apiURL o.ExtraOptions.Verbosity = apiserverCfg.Key("log_level").MustInt(defaultLogLevel) + return nil } diff --git a/pkg/services/apiserver/service.go b/pkg/services/apiserver/service.go index 5ff958012f9..50ad8387c5b 100644 --- a/pkg/services/apiserver/service.go +++ b/pkg/services/apiserver/service.go @@ -212,7 +212,10 @@ func (s *service) start(ctx context.Context) error { } o := grafanaapiserveroptions.NewOptions(Codecs.LegacyCodec(groupVersions...)) - applyGrafanaConfig(s.cfg, s.features, o) + err := applyGrafanaConfig(s.cfg, s.features, o) + if err != nil { + return err + } if errs := o.Validate(); len(errs) != 0 { // TODO: handle multiple errors @@ -286,7 +289,7 @@ func (s *service) start(ctx context.Context) error { } // Add OpenAPI specs for each group+version - err := builder.SetupConfig( + err = builder.SetupConfig( Scheme, serverConfig, builders,