Skip to content

Commit bbb7797

Browse files
authored
Fix: use correct index template name for hidden data streams (#673)
* Correctly process the hidden property in datastream definition * Add unit test coverage * Add comment referring to kibana implementation * Address code review feedback
1 parent 72f2110 commit bbb7797

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

internal/packages/packages.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ type DataStreamManifest struct {
115115
Title string `config:"title" json:"title" yaml:"title"`
116116
Type string `config:"type" json:"type" yaml:"type"`
117117
Dataset string `config:"dataset" json:"dataset" yaml:"dataset"`
118+
Hidden bool `config:"hidden" json:"hidden" yaml:"hidden"`
118119
Release string `config:"release" json:"release" yaml:"release"`
119120
Elasticsearch *struct {
120121
IngestPipeline *struct {
@@ -241,12 +242,21 @@ func (dsm *DataStreamManifest) GetPipelineNameOrDefault() string {
241242

242243
// IndexTemplateName returns the name of the Elasticsearch index template that would be installed
243244
// for this data stream.
245+
// The template name starts with dot "." if the datastream is hidden which is consistent with kibana implementation
246+
// https://github.com/elastic/kibana/blob/3955d0dc819fec03f68cd1d931f64da8472e34b2/x-pack/plugins/fleet/server/services/epm/elasticsearch/index.ts#L14
244247
func (dsm *DataStreamManifest) IndexTemplateName(pkgName string) string {
245248
if dsm.Dataset == "" {
246-
return fmt.Sprintf("%s-%s.%s", dsm.Type, pkgName, dsm.Name)
249+
return fmt.Sprintf("%s%s-%s.%s", dsm.indexTemplateNamePrefix(), dsm.Type, pkgName, dsm.Name)
247250
}
248251

249-
return fmt.Sprintf("%s-%s", dsm.Type, dsm.Dataset)
252+
return fmt.Sprintf("%s%s-%s", dsm.indexTemplateNamePrefix(), dsm.Type, dsm.Dataset)
253+
}
254+
255+
func (dsm *DataStreamManifest) indexTemplateNamePrefix() string {
256+
if dsm.Hidden {
257+
return "."
258+
}
259+
return ""
250260
}
251261

252262
// FindInputByType returns the input for the provided type.

internal/packages/packages_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,15 @@ func TestDataStreamManifest_IndexTemplateName(t *testing.T) {
5757
"pkg",
5858
dataStreamTypeLogs + "-pkg.foo",
5959
},
60+
"no_dataset_hidden": {
61+
DataStreamManifest{
62+
Name: "foo",
63+
Type: dataStreamTypeLogs,
64+
Hidden: true,
65+
},
66+
"pkg",
67+
"." + dataStreamTypeLogs + "-pkg.foo",
68+
},
6069
"with_dataset": {
6170
DataStreamManifest{
6271
Name: "foo",
@@ -66,6 +75,16 @@ func TestDataStreamManifest_IndexTemplateName(t *testing.T) {
6675
"pkg",
6776
dataStreamTypeLogs + "-custom",
6877
},
78+
"with_dataset_hidden": {
79+
DataStreamManifest{
80+
Name: "foo",
81+
Type: dataStreamTypeLogs,
82+
Dataset: "custom",
83+
Hidden: true,
84+
},
85+
"pkg",
86+
"." + dataStreamTypeLogs + "-custom",
87+
},
6988
}
7089

7190
for name, test := range cases {

0 commit comments

Comments
 (0)