Skip to content

Commit

Permalink
x-pack/filebeat/input/cel: make http functions always available (#40912)
Browse files Browse the repository at this point in the history
HTTP functions were previously conditional on the resource URL being an
HTTP/HTTPS URL. In hindsight, this offers no benefits and can result in
confusing errors when the end user enters an invalid URL for an HTTP-based
integration. Instead of a URL-related or HTTP-related error, the user is
given a compilation error indicating that the HTTP-related function that
are being called (and they may not be aware of in any way) are not valid
references. So let's just always make them available.
  • Loading branch information
efd6 committed Sep 20, 2024
1 parent cef78ed commit 14337dd
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 11 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.next.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff]
- Allow attribute selection in the Active Directory entity analytics provider. {issue}40482[40482] {pull}40662[40662]
- Improve error quality when CEL program does not correctly return an events array. {pull}40580[40580]
- Add `use_kubeadm` config option for filebeat (both filbeat.input and autodiscovery) in order to toggle kubeadm-config api requests {pull}40301[40301]
- Make HTTP library function inclusion non-conditional in CEL input. {pull}40912[40912]

*Auditbeat*

Expand Down
6 changes: 1 addition & 5 deletions x-pack/filebeat/input/cel/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,15 +81,11 @@ func (c config) Validate() error {
return fmt.Errorf("failed to check regular expressions: %w", err)
}
// TODO: Consider just building the program here to avoid this wasted work.
var client *http.Client
if wantClient(c) {
client = &http.Client{}
}
var patterns map[string]*regexp.Regexp
if len(c.Regexps) != 0 {
patterns = map[string]*regexp.Regexp{".": nil}
}
_, _, err = newProgram(context.Background(), c.Program, root, client, nil, nil, patterns, c.XSDs, logp.L().Named("input.cel"), nil)
_, _, err = newProgram(context.Background(), c.Program, root, &http.Client{}, nil, nil, patterns, c.XSDs, logp.L().Named("input.cel"), nil)
if err != nil {
return fmt.Errorf("failed to check program: %w", err)
}
Expand Down
7 changes: 1 addition & 6 deletions x-pack/filebeat/input/cel/input.go
Original file line number Diff line number Diff line change
Expand Up @@ -727,9 +727,6 @@ func getLimit(which string, rateLimit map[string]interface{}, log *logp.Logger)
const lumberjackTimestamp = "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]-[0-9][0-9]-[0-9][0-9].[0-9][0-9][0-9]"

func newClient(ctx context.Context, cfg config, log *logp.Logger, reg *monitoring.Registry) (*http.Client, *httplog.LoggingRoundTripper, error) {
if !wantClient(cfg) {
return nil, nil, nil
}
c, err := cfg.Resource.Transport.Client(clientOptions(cfg.Resource.URL.URL, cfg.Resource.KeepAlive.settings())...)
if err != nil {
return nil, nil, err
Expand Down Expand Up @@ -1012,14 +1009,12 @@ func newProgram(ctx context.Context, src, root string, client *http.Client, limi
lib.Debug(debug(log, trace)),
lib.File(mimetypes),
lib.MIME(mimetypes),
lib.HTTPWithContext(ctx, client, limiter, auth),
lib.Limit(limitPolicies),
lib.Globals(map[string]interface{}{
"useragent": userAgent,
}),
}
if client != nil {
opts = append(opts, lib.HTTPWithContext(ctx, client, limiter, auth))
}
if len(patterns) != 0 {
opts = append(opts, lib.Regexp(patterns))
}
Expand Down

0 comments on commit 14337dd

Please sign in to comment.