Skip to content

Commit 911336c

Browse files
authored
[chore][fileconsumer] Extract internal header package (#24264)
This continues from #24036 by moving additional complexity into an internal package. Some files contain headers that are different than the rest of the file. In such cases, we may need to extract file attributes that will be applied to logs from that file.
1 parent d71f107 commit 911336c

File tree

13 files changed

+496
-433
lines changed

13 files changed

+496
-433
lines changed

pkg/stanza/fileconsumer/config.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import (
1515

1616
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/fileconsumer/emit"
1717
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/fileconsumer/internal/fingerprint"
18+
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/fileconsumer/internal/header"
19+
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator"
1820
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/helper"
1921
)
2022

@@ -72,6 +74,11 @@ type Config struct {
7274
Header *HeaderConfig `mapstructure:"header,omitempty"`
7375
}
7476

77+
type HeaderConfig struct {
78+
Pattern string `mapstructure:"pattern"`
79+
MetadataOperators []operator.Config `mapstructure:"metadata_operators"`
80+
}
81+
7582
// Build will build a file input operator from the supplied configuration
7683
func (c Config) Build(logger *zap.SugaredLogger, emit emit.Callback) (*Manager, error) {
7784
if err := c.validate(); err != nil {
@@ -120,14 +127,14 @@ func (c Config) buildManager(logger *zap.SugaredLogger, emit emit.Callback, fact
120127
return nil, fmt.Errorf("invalid start_at location '%s'", c.StartAt)
121128
}
122129

123-
var hs *headerSettings
130+
var hCfg *header.Config
124131
if c.Header != nil {
125132
enc, err := c.Splitter.EncodingConfig.Build()
126133
if err != nil {
127134
return nil, fmt.Errorf("failed to create encoding: %w", err)
128135
}
129136

130-
hs, err = c.Header.buildHeaderSettings(enc.Encoding)
137+
hCfg, err = header.NewConfig(c.Header.Pattern, c.Header.MetadataOperators, enc.Encoding)
131138
if err != nil {
132139
return nil, fmt.Errorf("failed to build header config: %w", err)
133140
}
@@ -150,7 +157,7 @@ func (c Config) buildManager(logger *zap.SugaredLogger, emit emit.Callback, fact
150157
fromBeginning: startAtBeginning,
151158
splitterFactory: factory,
152159
encodingConfig: c.Splitter.EncodingConfig,
153-
headerSettings: hs,
160+
headerConfig: hCfg,
154161
},
155162
finder: c.MatchingCriteria,
156163
roller: newRoller(),
@@ -226,13 +233,13 @@ func (c Config) validate() error {
226233
return errors.New("`max_batches` must not be negative")
227234
}
228235

229-
_, err := c.Splitter.EncodingConfig.Build()
236+
enc, err := c.Splitter.EncodingConfig.Build()
230237
if err != nil {
231238
return err
232239
}
233240

234241
if c.Header != nil {
235-
if err := c.Header.validate(); err != nil {
242+
if _, err := header.NewConfig(c.Header.Pattern, c.Header.MetadataOperators, enc.Encoding); err != nil {
236243
return fmt.Errorf("invalid config for `header`: %w", err)
237244
}
238245
}

pkg/stanza/fileconsumer/config_test.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -790,10 +790,7 @@ func TestBuildWithHeader(t *testing.T) {
790790
},
791791
require.NoError,
792792
func(t *testing.T, f *Manager) {
793-
require.NotNil(t, f.readerFactory.headerSettings)
794-
require.NotNil(t, f.readerFactory.headerSettings.matchRegex)
795-
require.NotNil(t, f.readerFactory.headerSettings.splitFunc)
796-
require.NotNil(t, f.readerFactory.headerSettings.config)
793+
require.NotNil(t, f.readerFactory.headerConfig.SplitFunc)
797794
},
798795
},
799796
}
@@ -810,7 +807,6 @@ func TestBuildWithHeader(t *testing.T) {
810807
if err != nil {
811808
return
812809
}
813-
814810
tc.validate(t, input)
815811
})
816812
}

pkg/stanza/fileconsumer/file_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1630,7 +1630,6 @@ func TestHeaderPersistanceInHeader(t *testing.T) {
16301630
})
16311631

16321632
require.NoError(t, op2.Stop())
1633-
16341633
}
16351634

16361635
func TestStalePartialFingerprintDiscarded(t *testing.T) {

pkg/stanza/fileconsumer/header.go

Lines changed: 0 additions & 147 deletions
This file was deleted.

0 commit comments

Comments
 (0)