Skip to content

Commit 1b68ab3

Browse files
authored
Input packages don't require to define fields (#994)
With OTel inputs we have seen that all fields required are already defined in the built-in templates, and requiring to add mappings can lead to conflicts with them. For ECS inputs, most required fields are also defined in ecs@mappings, so there would be no need to require them. These packages can still define fields if needed. Test package for OTel is updated for current recommendations.
1 parent 18af7f0 commit 1b68ab3

File tree

6 files changed

+26
-26
lines changed

6 files changed

+26
-26
lines changed

compliance/compliance_test.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,12 @@ func aPolicyIsCreatedWithPackageAndVersion(packageName, packageVersion string) e
146146
return nil
147147
}
148148

149-
func aPolicyIsCreatedWithPackageInputAndDataset(packageName, templateName, inputName, inputType, dataset string) error {
150-
const version = "1.0.0" // TODO: Add support for package and version
151-
149+
func aPolicyIsCreatedWithPackageInputAndDataset(packageName, packageVersion, templateName, inputName, inputType, dataset string) error {
152150
kibana, err := NewKibanaClient()
153151
if err != nil {
154152
return err
155153
}
156-
_, err = kibana.CreatePolicyForPackageInputAndDataset(packageName, version, templateName, inputName, inputType, dataset)
154+
_, err = kibana.CreatePolicyForPackageInputAndDataset(packageName, packageVersion, templateName, inputName, inputType, dataset)
157155
if err != nil {
158156
return err
159157
}
@@ -172,7 +170,7 @@ func thereIsAnIndexTemplateWithPattern(indexTemplateName, pattern string) error
172170
}
173171

174172
if !slices.Contains(indexTemplate.IndexPatterns, pattern) {
175-
return fmt.Errorf("index template %q not found in %s", pattern, indexTemplate.IndexPatterns)
173+
return fmt.Errorf("pattern %q not found in %s", pattern, indexTemplate.IndexPatterns)
176174
}
177175

178176
return nil
@@ -310,7 +308,7 @@ func InitializeScenario(ctx *godog.ScenarioContext) {
310308
ctx.Step(`^the "([^"]*)" package is installed$`, thePackageIsInstalled)
311309
ctx.Step(`^a policy is created with "([^"]*)" package$`, aPolicyIsCreatedWithPackage)
312310
ctx.Step(`^a policy is created with "([^"]*)" package and "([^"]*)" version$`, aPolicyIsCreatedWithPackageAndVersion)
313-
ctx.Step(`^a policy is created with "([^"]*)" package, "([^"]*)" template, "([^"]*)" input, "([^"]*)" input type and dataset "([^"]*)"$`, aPolicyIsCreatedWithPackageInputAndDataset)
311+
ctx.Step(`^a policy is created with "([^"]*)" package, "([^"]*)" version, "([^"]*)" template, "([^"]*)" input, "([^"]*)" input type and dataset "([^"]*)"$`, aPolicyIsCreatedWithPackageInputAndDataset)
314312
ctx.Step(`^there is an index template "([^"]*)" with pattern "([^"]*)"$`, thereIsAnIndexTemplateWithPattern)
315313
ctx.Step(`^there is a transform "([^"]*)"$`, thereIsATransform)
316314
ctx.Step(`^there is a transform alias "([^"]*)"$`, thereIsATransformAlias)

compliance/features/basic.feature

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,15 @@ Feature: Basic package types support
1010
@2.6.0
1111
Scenario: Input package can be installed
1212
Given the "basic_input" package is installed
13-
And a policy is created with "basic_input" package, "test" template, "test" input, "logfile" input type and dataset "spec.input_test"
13+
And a policy is created with "basic_input" package, "1.0.0" version, "test" template, "test" input, "logfile" input type and dataset "spec.input_test"
1414
Then there is an index template "logs-spec.input_test" with pattern "logs-spec.input_test-*"
1515

16+
@3.5.0
17+
Scenario: OTel input package can be installed
18+
Given the "good_input_otel" package is installed
19+
And a policy is created with "good_input_otel" package, "0.0.1" version, "httpcheckreceiver" template, "httpcheckreceiver" input, "otelcol" input type and dataset "spec.otel_input_test"
20+
Then there is an index template "metrics-spec.otel_input_test" with pattern "metrics-spec.otel_input_test.otel-*"
21+
1622
@3.3.0
1723
Scenario: Basic content package can be installed
1824
Given the "basic_content" package is installed

spec/changelog.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
- description: Add support for semantic_text field definition.
1313
type: enhancement
1414
link: https://github.com/elastic/package-spec/pull/807
15+
- version: 3.5.1-next
16+
changes:
17+
- description: Input packages don't require to define fields.
18+
type: enhancement
19+
link: https://github.com/elastic/package-spec/pull/994
1520
- version: 3.5.0
1621
changes:
1722
- description: Add `duration` variable data type with `min_duration` and `max_duration` validation properties.

spec/input/spec.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ spec:
4343
- description: Folder containing field definitions
4444
type: folder
4545
name: fields
46-
required: true
46+
required: false
4747
$ref: "../integration/data_stream/fields/spec.yml"
4848
- description: Sample event file
4949
type: file
@@ -75,6 +75,11 @@ spec:
7575
$ref: "../integration/img/spec.yml"
7676

7777
versions:
78+
- before: 3.5.0
79+
patch:
80+
- op: replace
81+
path: "/contents/5/required" # Input packages don't require field definitions.
82+
value: true
7883
- before: 3.2.2
7984
patch:
8085
- op: remove

test/packages/good_input_otel/fields/base-fields.yml

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

test/packages/good_input_otel/manifest.yml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
format_version: 3.5.0
2-
name: httpcheck
2+
name: good_input_otel
33
title: "Simple HTTP Check"
44
version: 0.0.1
55
source:
@@ -26,7 +26,7 @@ icons:
2626
size: 32x32
2727
type: image/svg+xml
2828
policy_templates:
29-
- name: check
29+
- name: httpcheckreceiver
3030
type: metrics
3131
title: HTTP Check
3232
description: Perform HTTP checks and collect its results.
@@ -60,17 +60,15 @@ policy_templates:
6060
multi: true
6161
required: true
6262
show_user: true
63+
default:
64+
- https://epr.elastic.co
6365
- name: headers
6466
type: text
6567
title: HTTP headers
6668
description: HTTP headers, defined as YAML key-values.
6769
multi: true
6870
required: false
6971
show_user: false
70-
elasticsearch:
71-
index_template:
72-
mappings:
73-
subobjects: false
7472
owner:
7573
github: elastic/ecosystem
7674
type: elastic

0 commit comments

Comments
 (0)