Skip to content

Commit 4d022fd

Browse files
committed
Use policy template name as default dataset for input packages
Default dataset in integration packages is formed as <package name>.<data stream name>, both in elastic-package and Fleet. In the case of input packages, elastic-package was forming it as something like <package name>.<policy template name>, but Fleet uses only the policy template name. Do the same as Fleet for input packages.
1 parent fbe01ff commit 4d022fd

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

internal/testrunner/runners/system/tester.go

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,8 +1093,8 @@ func (r *tester) prepareScenario(ctx context.Context, config *testConfig, stackC
10931093
}
10941094
scenario.kibanaDataStream = ds
10951095

1096-
scenario.indexTemplateName = BuildIndexTemplateName(ds, r.pkgManifest.Type, config.Vars)
1097-
scenario.dataStream = BuildDataStreamName(scenario.policyTemplateInput, ds, r.pkgManifest.Type, config.Vars)
1096+
scenario.indexTemplateName = BuildIndexTemplateName(ds, policyTemplate, r.pkgManifest.Type, config.Vars)
1097+
scenario.dataStream = BuildDataStreamName(scenario.policyTemplateInput, ds, policyTemplate, r.pkgManifest.Type, config.Vars)
10981098

10991099
r.cleanTestScenarioHandler = func(ctx context.Context) error {
11001100
logger.Debugf("Deleting data stream for testing %s", scenario.dataStream)
@@ -1263,8 +1263,8 @@ func (r *tester) prepareScenario(ctx context.Context, config *testConfig, stackC
12631263

12641264
// BuildIndexTemplateName builds the expected index template name that is installed in Elasticsearch
12651265
// when the package data stream is added to the policy.
1266-
func BuildIndexTemplateName(ds kibana.PackageDataStream, manType string, cfgVars common.MapStr) string {
1267-
dataStreamDataset := getExpectedDatasetForTest(manType, ds.Inputs[0].Streams[0].DataStream.Dataset, cfgVars)
1266+
func BuildIndexTemplateName(ds kibana.PackageDataStream, policyTemplate packages.PolicyTemplate, manType string, cfgVars common.MapStr) string {
1267+
dataStreamDataset := getExpectedDatasetForTest(manType, ds.Inputs[0].Streams[0].DataStream.Dataset, policyTemplate.Name, cfgVars)
12681268

12691269
indexTemplateName := fmt.Sprintf(
12701270
"%s-%s",
@@ -1276,8 +1276,8 @@ func BuildIndexTemplateName(ds kibana.PackageDataStream, manType string, cfgVars
12761276

12771277
// BuildDataStreamName builds the expected data stream name that is installed in Elasticsearch
12781278
// when the package data stream is added to the policy.
1279-
func BuildDataStreamName(policyTemplateInput string, ds kibana.PackageDataStream, manType string, cfgVars common.MapStr) string {
1280-
dataStreamDataset := getExpectedDatasetForTest(manType, ds.Inputs[0].Streams[0].DataStream.Dataset, cfgVars)
1279+
func BuildDataStreamName(policyTemplateInput string, ds kibana.PackageDataStream, policyTemplate packages.PolicyTemplate, manType string, cfgVars common.MapStr) string {
1280+
dataStreamDataset := getExpectedDatasetForTest(manType, ds.Inputs[0].Streams[0].DataStream.Dataset, policyTemplate.Name, cfgVars)
12811281

12821282
// Input packages using the otel collector input require to add a specific dataset suffix
12831283
if manType == "input" && policyTemplateInput == otelCollectorInputName {
@@ -1293,13 +1293,14 @@ func BuildDataStreamName(policyTemplateInput string, ds kibana.PackageDataStream
12931293
return dataStreamName
12941294
}
12951295

1296-
func getExpectedDatasetForTest(pkgType, dataset string, cfgVars common.MapStr) string {
1296+
func getExpectedDatasetForTest(pkgType, dataset, policyTemplateName string, cfgVars common.MapStr) string {
12971297
if pkgType == "input" {
12981298
// Input packages can set `data_stream.dataset` by convention to customize the dataset.
12991299
v, _ := cfgVars.GetValue("data_stream.dataset")
13001300
if ds, ok := v.(string); ok && ds != "" {
13011301
return ds
13021302
}
1303+
return policyTemplateName
13031304
}
13041305
return dataset
13051306
}
@@ -1768,6 +1769,7 @@ func (r *tester) expectedDatasets(scenario *scenarioTest, config *testConfig) ([
17681769
// get dataset directly from package policy added when preparing the scenario
17691770
expectedDataset := scenario.kibanaDataStream.Inputs[0].Streams[0].DataStream.Dataset
17701771
if r.pkgManifest.Type == "input" {
1772+
expectedDataset = scenario.policyTemplateName
17711773
if scenario.policyTemplateInput == otelCollectorInputName {
17721774
// Input packages whose input is `otelcol` must add the `.otel` suffix
17731775
// Example: httpcheck.metrics.otel
@@ -2015,22 +2017,26 @@ func createInputPackageDatastream(
20152017
},
20162018
}
20172019

2018-
dataset := fmt.Sprintf("%s.%s", pkg.Name, policyTemplate.Name)
20192020
streams := []kibana.Stream{
20202021
{
20212022
ID: fmt.Sprintf("%s-%s.%s", policyTemplate.Input, pkg.Name, policyTemplate.Name),
20222023
Enabled: true,
20232024
DataStream: kibana.DataStream{
2024-
Type: policyTemplate.Type,
2025-
Dataset: dataset,
2025+
Type: policyTemplate.Type,
2026+
// This dataset is the one Fleet uses to identify the stream,
2027+
// it must be <package name>.<policy template name>. This is not
2028+
// the same as the dataset used for the index template, configured
2029+
// with vars below.
2030+
Dataset: fmt.Sprintf("%s.%s", pkg.Name, policyTemplate.Name),
20262031
},
20272032
},
20282033
}
20292034

20302035
// Add policyTemplate-level vars.
20312036
vars := setKibanaVariables(policyTemplate.Vars, cfgVars)
20322037
if _, found := vars["data_stream.dataset"]; !found {
2033-
dataStreamDataset := dataset
2038+
// Fleet uses the policy template name as default dataset for input packages, do the same.
2039+
dataStreamDataset := policyTemplate.Name
20342040
v, _ := cfgVars.GetValue("data_stream.dataset")
20352041
if dataset, ok := v.(string); ok && dataset != "" {
20362042
dataStreamDataset = dataset

0 commit comments

Comments
 (0)