From ba8b4bde3ae062818d83072680fafa1775ed55bb Mon Sep 17 00:00:00 2001 From: jackyin <648588267@qq.com> Date: Tue, 7 May 2024 02:17:03 +0800 Subject: [PATCH] fix ipv6 startup fail #81870 (#87108) * fix ipv6 startup fail #81870 * ipv6 startup fail * ipv6 startup fail --- pkg/services/apiserver/config.go | 8 ++++++-- pkg/services/apiserver/service.go | 7 +++++-- 2 files changed, 11 insertions(+), 4 deletions(-) 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,