diff --git a/CHANGELOG.md b/CHANGELOG.md index 898ed3fcb5e1..65ed01309a2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,8 @@ Main (unreleased) each time it pulls. (@erikbaranowski) - Allow overriding default `User-Agent` for `http.remote` component (@hainenber) +- Fix panic when running `grafana-agentctl config-check` against config files + having `integrations` block (both V1 and V2). (@hainenber) - Fix a deadlock candidate in the `loki.process` component. (@tpaschalis) diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 880f5e667759..a10b47b81e96 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -522,3 +522,26 @@ func TestConfig_EmptyServerConfigFails(t *testing.T) { _, err := Load(fs, []string{"--config.file", "./testdata/server_empty.yml"}, logger) require.Error(t, err) } + +func TestConfig_ValidateConfigWithIntegrationV1(t *testing.T) { + input := util.Untab(` +integrations: + agent: + enabled: true +`) + var cfg Config + require.NoError(t, LoadBytes([]byte(input), false, &cfg)) + require.NoError(t, cfg.Validate(nil)) +} + +func TestConfig_ValidateConfigWithIntegrationV2(t *testing.T) { + input := util.Untab(` +integrations: + agent: + autoscrape: + enabled: true +`) + var cfg Config + require.NoError(t, LoadBytes([]byte(input), false, &cfg)) + require.NoError(t, cfg.Validate(nil)) +} diff --git a/pkg/config/integrations.go b/pkg/config/integrations.go index e62ac5e96e4f..acf76492aff3 100644 --- a/pkg/config/integrations.go +++ b/pkg/config/integrations.go @@ -85,10 +85,15 @@ func (c VersionedIntegrations) IsZero() bool { // ApplyDefaults applies defaults to the subsystem based on globals. func (c *VersionedIntegrations) ApplyDefaults(sflags *server.Flags, mcfg *metrics.Config) error { - if c.version != integrationsVersion2 { + switch { + case c.version != integrationsVersion2 && c.ConfigV1 != nil: return c.ConfigV1.ApplyDefaults(sflags, mcfg) + case c.configV2 != nil: + return c.configV2.ApplyDefaults(mcfg) + default: + // No-op + return nil } - return c.configV2.ApplyDefaults(mcfg) } // setVersion completes the deferred unmarshal and unmarshals the raw YAML into