diff --git a/CHANGELOG.md b/CHANGELOG.md index cd8c325f4..cd7d1f664 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,12 +8,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Breaking changes +* Packages with major version 0 or with prerelease labels are only returned by search requests when they include `prerelease=true` or `experimental=true`. [#785](https://github.com/elastic/package-registry/pull/785) +* Release level of a package without release tag is based on its semantic versioning now, previously it was experimental. [#785](https://github.com/elastic/package-registry/pull/785) +* Release level of a data stream without release tag is the same as the package that contains it, previously it was experimental. [#785](https://github.com/elastic/package-registry/pull/785) + ### Bugfixes ### Added +* Add the `prerelease` parameter in search requests to include in-development versions of packages. [#785](https://github.com/elastic/package-registry/pull/785) + ### Deprecated +* `experimental` parameter in search requests is deprecated. [#785](https://github.com/elastic/package-registry/pull/785) + ### Known Issues ## [v1.6.0](https://github.com/elastic/package-registry/compare/v1.5.1...v1.6.0) @@ -37,6 +45,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Deprecated + ### Known Issues diff --git a/categories.go b/categories.go index 6d393d032..a1fca0319 100644 --- a/categories.go +++ b/categories.go @@ -84,11 +84,25 @@ func newCategoriesFilterFromQuery(query url.Values) (*packages.Filter, error) { } } + // Deprecated: release tags to be removed. if v := query.Get("experimental"); v != "" { filter.Experimental, err = strconv.ParseBool(v) if err != nil { return nil, fmt.Errorf("invalid 'experimental' query param: '%s'", v) } + + // For compatibility with older versions of Kibana. + if filter.Experimental { + filter.Prerelease = true + } + } + + if v := query.Get("prerelease"); v != "" { + // In case of error, keep it false + filter.Prerelease, err = strconv.ParseBool(v) + if err != nil { + return nil, fmt.Errorf("invalid 'prerelease' query param: '%s'", v) + } } return &filter, nil diff --git a/main_test.go b/main_test.go index 75e6aa7ab..40eb647ee 100644 --- a/main_test.go +++ b/main_test.go @@ -60,10 +60,13 @@ func TestEndpoints(t *testing.T) { {"/search?all=true", "/search", "search-all.json", searchHandler(indexer, testCacheTime)}, {"/categories", "/categories", "categories.json", categoriesHandler(indexer, testCacheTime)}, {"/categories?experimental=true", "/categories", "categories-experimental.json", categoriesHandler(indexer, testCacheTime)}, - {"/categories?experimental=foo", "/categories", "categories-experimental-error.json", categoriesHandler(indexer, testCacheTime)}, + {"/categories?experimental=foo", "/categories", "categories-experimental-error.txt", categoriesHandler(indexer, testCacheTime)}, {"/categories?experimental=true&kibana.version=6.5.2", "/categories", "categories-kibana652.json", categoriesHandler(indexer, testCacheTime)}, + {"/categories?prerelease=true", "/categories", "categories-prerelease.json", categoriesHandler(indexer, testCacheTime)}, + {"/categories?prerelease=foo", "/categories", "categories-prerelease-error.txt", categoriesHandler(indexer, testCacheTime)}, + {"/categories?prerelease=true&kibana.version=6.5.2", "/categories", "categories-prerelease-kibana652.json", categoriesHandler(indexer, testCacheTime)}, {"/categories?include_policy_templates=true", "/categories", "categories-include-policy-templates.json", categoriesHandler(indexer, testCacheTime)}, - {"/categories?include_policy_templates=foo", "/categories", "categories-include-policy-templates-error.json", categoriesHandler(indexer, testCacheTime)}, + {"/categories?include_policy_templates=foo", "/categories", "categories-include-policy-templates-error.txt", categoriesHandler(indexer, testCacheTime)}, {"/search?kibana.version=6.5.2", "/search", "search-kibana652.json", searchHandler(indexer, testCacheTime)}, {"/search?kibana.version=7.2.1", "/search", "search-kibana721.json", searchHandler(indexer, testCacheTime)}, {"/search?kibana.version=8.0.0", "/search", "search-kibana800.json", searchHandler(indexer, testCacheTime)}, @@ -73,8 +76,11 @@ func TestEndpoints(t *testing.T) { {"/search?package=example", "/search", "search-package-example.json", searchHandler(indexer, testCacheTime)}, {"/search?package=example&all=true", "/search", "search-package-example-all.json", searchHandler(indexer, testCacheTime)}, {"/search?experimental=true", "/search", "search-package-experimental.json", searchHandler(indexer, testCacheTime)}, - {"/search?experimental=foo", "/search", "search-package-experimental-error.json", searchHandler(indexer, testCacheTime)}, + {"/search?experimental=foo", "/search", "search-package-experimental-error.txt", searchHandler(indexer, testCacheTime)}, {"/search?category=datastore&experimental=true", "/search", "search-category-datastore.json", searchHandler(indexer, testCacheTime)}, + {"/search?prerelease=true", "/search", "search-package-prerelease.json", searchHandler(indexer, testCacheTime)}, + {"/search?prerelease=foo", "/search", "search-package-prerelease-error.txt", searchHandler(indexer, testCacheTime)}, + {"/search?category=datastore&prerelease=true", "/search", "search-category-datastore-prerelease.json", searchHandler(indexer, testCacheTime)}, {"/favicon.ico", "", "favicon.ico", faviconHandleFunc}, // Removed flags, kept to ensure that they don't break requests from old versions. diff --git a/packages/datastream.go b/packages/datastream.go index 26cbb81f1..d77db7838 100644 --- a/packages/datastream.go +++ b/packages/datastream.go @@ -157,7 +157,7 @@ func NewDataStream(basePath string, p *Package) (*DataStream, error) { } if d.Release == "" { - d.Release = DefaultRelease + d.Release = p.Release } // Default for the enabled flags is true. diff --git a/packages/package.go b/packages/package.go index 7365d6079..992a42970 100644 --- a/packages/package.go +++ b/packages/package.go @@ -278,7 +278,7 @@ func NewPackage(basePath string, fsBuilder FileSystemBuilder) (*Package, error) } if p.Release == "" { - p.Release = DefaultRelease + p.Release = releaseForSemVerCompat(p.versionSemVer) } if !IsValidRelease(p.Release) { @@ -348,6 +348,17 @@ func (p *Package) IsNewerOrEqual(pp *Package) bool { return !p.versionSemVer.LessThan(pp.versionSemVer) } +func (p *Package) IsPrerelease() bool { + return isPrerelease(p.versionSemVer) +} + +func isPrerelease(version *semver.Version) bool { + if version.Major() < 1 { + return true + } + return version.Prerelease() != "" +} + // LoadAssets (re)loads all the assets of the package // Based on the time when this is called, it might be that not all assets for a package exist yet, so it is reset every time. func (p *Package) LoadAssets() (err error) { diff --git a/packages/package_test.go b/packages/package_test.go index f22799414..988c244b7 100644 --- a/packages/package_test.go +++ b/packages/package_test.go @@ -250,6 +250,27 @@ func TestNewPackageFromPath(t *testing.T) { } } +func TestIsPrerelease(t *testing.T) { + cases := []struct { + version string + prerelease bool + }{ + {"0.1.0-rc1", true}, + {"0.1.0", true}, // Major version 0 shouldn't be considered stable. + {"1.0.0-beta1", true}, + {"1.0.0-rc.1", true}, + {"1.0.0-SNAPSHOT", true}, + {"1.0.0", false}, + } + + for _, c := range cases { + t.Run(c.version, func(t *testing.T) { + semver := semver.MustParse(c.version) + assert.Equal(t, c.prerelease, isPrerelease(semver)) + }) + } +} + func BenchmarkNewPackage(b *testing.B) { fsBuilder := func(p *Package) (PackageFileSystem, error) { return NewExtractedPackageFileSystem(p) diff --git a/packages/packages.go b/packages/packages.go index d95b278f7..7c29bbdc0 100644 --- a/packages/packages.go +++ b/packages/packages.go @@ -236,10 +236,13 @@ func (i *FileSystemIndexer) getPackagePaths(packagesPath string) ([]string, erro type Filter struct { AllVersions bool Category string - Experimental bool + Prerelease bool KibanaVersion *semver.Version PackageName string PackageVersion string + + // Deprecated, release tags to be removed. + Experimental bool } // Apply applies the filter to the list of packages, if the filter is nil, no filtering is done. @@ -259,6 +262,11 @@ func (f *Filter) Apply(ctx context.Context, packages Packages) Packages { continue } + // Skip prerelease packages by default + if p.IsPrerelease() && !f.Prerelease { + continue + } + if f.KibanaVersion != nil { if valid := p.HasKibanaVersion(f.KibanaVersion); !valid { continue @@ -342,6 +350,7 @@ func NameVersionFilter(name, version string) GetOptions { return GetOptions{ Filter: &Filter{ Experimental: true, + Prerelease: true, PackageName: name, PackageVersion: version, }, diff --git a/packages/releases.go b/packages/releases.go index 8441f0fa4..7fa036dea 100644 --- a/packages/releases.go +++ b/packages/releases.go @@ -4,14 +4,19 @@ package packages +import ( + "github.com/Masterminds/semver/v3" +) + const ( ReleaseExperimental = "experimental" ReleaseBeta = "beta" ReleaseGa = "ga" // Default release if no release is configured - DefaultRelease = ReleaseExperimental - DefaultLicense = "basic" + DefaultRelease = ReleaseGa + DefaultPrerelease = ReleaseBeta + DefaultLicense = "basic" ) var ReleaseTypes = map[string]interface{}{ @@ -24,3 +29,12 @@ func IsValidRelease(release string) bool { _, exists := ReleaseTypes[release] return exists } + +// releaseForSemVerCompat is a compatibility function that returns a release +// for a given version. +func releaseForSemVerCompat(version *semver.Version) string { + if isPrerelease(version) { + return DefaultPrerelease + } + return DefaultRelease +} diff --git a/search.go b/search.go index fd5f6a30f..04ce2b7fc 100644 --- a/search.go +++ b/search.go @@ -81,12 +81,26 @@ func newSearchFilterFromQuery(query url.Values) (*packages.Filter, error) { } } + // Deprecated: release tags to be removed. if v := query.Get("experimental"); v != "" { // In case of error, keep it false filter.Experimental, err = strconv.ParseBool(v) if err != nil { return nil, fmt.Errorf("invalid 'experimental' query param: '%s'", v) } + + // For compatibility with older versions of Kibana. + if filter.Experimental { + filter.Prerelease = true + } + } + + if v := query.Get("prerelease"); v != "" { + // In case of error, keep it false + filter.Prerelease, err = strconv.ParseBool(v) + if err != nil { + return nil, fmt.Errorf("invalid 'prerelease' query param: '%s'", v) + } } return &filter, nil diff --git a/testdata/generated/categories-experimental-error.json b/testdata/generated/categories-experimental-error.txt similarity index 100% rename from testdata/generated/categories-experimental-error.json rename to testdata/generated/categories-experimental-error.txt diff --git a/testdata/generated/categories-experimental.json b/testdata/generated/categories-experimental.json index d8b02d01e..cd73fb577 100644 --- a/testdata/generated/categories-experimental.json +++ b/testdata/generated/categories-experimental.json @@ -12,7 +12,7 @@ { "id": "cloud", "title": "Cloud", - "count": 1 + "count": 2 }, { "id": "containers", diff --git a/testdata/generated/categories-include-policy-templates-error.json b/testdata/generated/categories-include-policy-templates-error.txt similarity index 100% rename from testdata/generated/categories-include-policy-templates-error.json rename to testdata/generated/categories-include-policy-templates-error.txt diff --git a/testdata/generated/categories-include-policy-templates.json b/testdata/generated/categories-include-policy-templates.json index 9a25a410d..a612caf29 100644 --- a/testdata/generated/categories-include-policy-templates.json +++ b/testdata/generated/categories-include-policy-templates.json @@ -1,29 +1,9 @@ [ - { - "id": "aws", - "title": "AWS", - "count": 2 - }, { "id": "azure", "title": "Azure", "count": 2 }, - { - "id": "cloud", - "title": "Cloud", - "count": 2 - }, - { - "id": "compute", - "title": "compute", - "count": 2 - }, - { - "id": "containers", - "title": "Containers", - "count": 1 - }, { "id": "crm", "title": "CRM", @@ -32,23 +12,13 @@ { "id": "custom", "title": "Custom", - "count": 14 + "count": 12 }, { "id": "datastore", "title": "Datastore", "count": 2 }, - { - "id": "message_queue", - "title": "Message Queue", - "count": 1 - }, - { - "id": "monitoring", - "title": "Monitoring", - "count": 1 - }, { "id": "web", "title": "Web", diff --git a/testdata/generated/categories-prerelease-error.txt b/testdata/generated/categories-prerelease-error.txt new file mode 100644 index 000000000..ef09f9e51 --- /dev/null +++ b/testdata/generated/categories-prerelease-error.txt @@ -0,0 +1 @@ +invalid 'prerelease' query param: 'foo' diff --git a/testdata/generated/categories-prerelease-kibana652.json b/testdata/generated/categories-prerelease-kibana652.json new file mode 100644 index 000000000..8d00c0c0a --- /dev/null +++ b/testdata/generated/categories-prerelease-kibana652.json @@ -0,0 +1,32 @@ +[ + { + "id": "aws", + "title": "AWS", + "count": 1 + }, + { + "id": "containers", + "title": "Containers", + "count": 1 + }, + { + "id": "custom", + "title": "Custom", + "count": 6 + }, + { + "id": "message_queue", + "title": "Message Queue", + "count": 1 + }, + { + "id": "monitoring", + "title": "Monitoring", + "count": 1 + }, + { + "id": "web", + "title": "Web", + "count": 1 + } +] diff --git a/testdata/generated/categories-prerelease.json b/testdata/generated/categories-prerelease.json new file mode 100644 index 000000000..312745f18 --- /dev/null +++ b/testdata/generated/categories-prerelease.json @@ -0,0 +1,47 @@ +[ + { + "id": "aws", + "title": "AWS", + "count": 2 + }, + { + "id": "azure", + "title": "Azure", + "count": 1 + }, + { + "id": "cloud", + "title": "Cloud", + "count": 2 + }, + { + "id": "containers", + "title": "Containers", + "count": 1 + }, + { + "id": "crm", + "title": "CRM", + "count": 1 + }, + { + "id": "custom", + "title": "Custom", + "count": 14 + }, + { + "id": "message_queue", + "title": "Message Queue", + "count": 1 + }, + { + "id": "monitoring", + "title": "Monitoring", + "count": 1 + }, + { + "id": "web", + "title": "Web", + "count": 3 + } +] diff --git a/testdata/generated/categories.json b/testdata/generated/categories.json index 850ece1d8..af43fda86 100644 --- a/testdata/generated/categories.json +++ b/testdata/generated/categories.json @@ -1,24 +1,9 @@ [ - { - "id": "aws", - "title": "AWS", - "count": 1 - }, { "id": "azure", "title": "Azure", "count": 1 }, - { - "id": "cloud", - "title": "Cloud", - "count": 1 - }, - { - "id": "containers", - "title": "Containers", - "count": 1 - }, { "id": "crm", "title": "CRM", @@ -27,17 +12,7 @@ { "id": "custom", "title": "Custom", - "count": 14 - }, - { - "id": "message_queue", - "title": "Message Queue", - "count": 1 - }, - { - "id": "monitoring", - "title": "Monitoring", - "count": 1 + "count": 12 }, { "id": "web", diff --git a/testdata/generated/package-zip.json b/testdata/generated/package-zip.json index 81db7718b..a6cdcf80f 100644 --- a/testdata/generated/package-zip.json +++ b/testdata/generated/package-zip.json @@ -71,7 +71,7 @@ "type": "logs", "dataset": "example.foo", "title": "Foo", - "release": "experimental", + "release": "ga", "ingest_pipeline": "pipeline-entry", "streams": [ { diff --git a/testdata/generated/package.json b/testdata/generated/package.json index f3d7778a8..8ff31899c 100644 --- a/testdata/generated/package.json +++ b/testdata/generated/package.json @@ -73,7 +73,7 @@ "type": "logs", "dataset": "example.foo", "title": "Foo", - "release": "experimental", + "release": "ga", "ingest_pipeline": "pipeline-entry", "streams": [ { diff --git a/testdata/generated/package/dataset_is_prefix/0.0.1/index.json b/testdata/generated/package/dataset_is_prefix/0.0.1/index.json index f9673455d..79213c7e5 100644 --- a/testdata/generated/package/dataset_is_prefix/0.0.1/index.json +++ b/testdata/generated/package/dataset_is_prefix/0.0.1/index.json @@ -25,7 +25,7 @@ "dataset": "dataset_is_prefix.test", "dataset_is_prefix": true, "title": "dataset_is_prefix test data stream", - "release": "experimental", + "release": "beta", "package": "dataset_is_prefix", "path": "test" } diff --git a/testdata/generated/package/datasources/1.0.0/index.json b/testdata/generated/package/datasources/1.0.0/index.json index 305c439b3..5703859ff 100644 --- a/testdata/generated/package/datasources/1.0.0/index.json +++ b/testdata/generated/package/datasources/1.0.0/index.json @@ -89,7 +89,7 @@ "type": "logs", "dataset": "datasources.examplelog1", "title": "Example dataset with inputs", - "release": "experimental", + "release": "beta", "streams": [ { "input": "logs", @@ -126,7 +126,7 @@ "type": "logs", "dataset": "datasources.examplelog2", "title": "Example dataset with inputs", - "release": "experimental", + "release": "beta", "streams": [ { "input": "logs", @@ -156,7 +156,7 @@ "type": "metrics", "dataset": "datasources.examplemetric", "title": "Example data stream with inputs", - "release": "experimental", + "release": "beta", "streams": [ { "input": "nginx/metrics", diff --git a/testdata/generated/package/default_pipeline/0.0.2/index.json b/testdata/generated/package/default_pipeline/0.0.2/index.json index f89ab4de7..a8137b36b 100644 --- a/testdata/generated/package/default_pipeline/0.0.2/index.json +++ b/testdata/generated/package/default_pipeline/0.0.2/index.json @@ -40,7 +40,7 @@ "type": "logs", "dataset": "default_pipeline.foo", "title": "Foo", - "release": "experimental", + "release": "beta", "ingest_pipeline": "default", "streams": [ { diff --git a/testdata/generated/package/defaultrelease/0.0.1/index.json b/testdata/generated/package/defaultrelease/0.0.1/index.json new file mode 100644 index 000000000..af3274089 --- /dev/null +++ b/testdata/generated/package/defaultrelease/0.0.1/index.json @@ -0,0 +1,20 @@ +{ + "name": "defaultrelease", + "title": "Default Release", + "version": "0.0.1", + "release": "beta", + "description": "Package without release, should be set to default", + "type": "solution", + "download": "/epr/defaultrelease/defaultrelease-0.0.1.zip", + "path": "/package/defaultrelease/0.0.1", + "categories": [ + "aws" + ], + "format_version": "1.0.0", + "readme": "/package/defaultrelease/0.0.1/docs/README.md", + "license": "basic", + "assets": [ + "/package/defaultrelease/0.0.1/manifest.yml", + "/package/defaultrelease/0.0.1/docs/README.md" + ] +} diff --git a/testdata/generated/package/ecs_style_dataset/0.0.1/index.json b/testdata/generated/package/ecs_style_dataset/0.0.1/index.json index fda1abad5..eb4327d02 100644 --- a/testdata/generated/package/ecs_style_dataset/0.0.1/index.json +++ b/testdata/generated/package/ecs_style_dataset/0.0.1/index.json @@ -37,7 +37,7 @@ "type": "logs", "dataset": "ecs_style_dataset.foo", "title": "Foo", - "release": "experimental", + "release": "beta", "package": "ecs_style_dataset", "path": "foo" } diff --git a/testdata/generated/package/elasticsearch_privileges/1.0.0/index.json b/testdata/generated/package/elasticsearch_privileges/1.0.0/index.json index 891e74bb6..eef296db2 100644 --- a/testdata/generated/package/elasticsearch_privileges/1.0.0/index.json +++ b/testdata/generated/package/elasticsearch_privileges/1.0.0/index.json @@ -29,7 +29,7 @@ "type": "metrics", "dataset": "elasticsearch_privileges.elasticsearch_privileges", "title": "Elasticsearch privileges data stream", - "release": "experimental", + "release": "beta", "package": "elasticsearch_privileges", "elasticsearch": { "privileges": { diff --git a/testdata/generated/package/example/1.0.0/index.json b/testdata/generated/package/example/1.0.0/index.json index f3d7778a8..8ff31899c 100644 --- a/testdata/generated/package/example/1.0.0/index.json +++ b/testdata/generated/package/example/1.0.0/index.json @@ -73,7 +73,7 @@ "type": "logs", "dataset": "example.foo", "title": "Foo", - "release": "experimental", + "release": "ga", "ingest_pipeline": "pipeline-entry", "streams": [ { diff --git a/testdata/generated/package/example/1.1.0/index.json b/testdata/generated/package/example/1.1.0/index.json index 239f7b0c6..19a90ef21 100644 --- a/testdata/generated/package/example/1.1.0/index.json +++ b/testdata/generated/package/example/1.1.0/index.json @@ -73,7 +73,7 @@ "type": "logs", "dataset": "example.foo", "title": "Foo", - "release": "experimental", + "release": "ga", "ingest_pipeline": "pipeline-entry", "streams": [ { diff --git a/testdata/generated/package/example/1.2.0-rc1/index.json b/testdata/generated/package/example/1.2.0-rc1/index.json new file mode 100644 index 000000000..0ece178ab --- /dev/null +++ b/testdata/generated/package/example/1.2.0-rc1/index.json @@ -0,0 +1,100 @@ +{ + "name": "example", + "title": "Example Integration", + "version": "1.2.0-rc1", + "release": "ga", + "description": "This is the example integration", + "type": "integration", + "download": "/epr/example/example-1.2.0-rc1.zip", + "path": "/package/example/1.2.0-rc1", + "conditions": { + "kibana": { + "version": "^7.16.0 || ^8.0.0" + } + }, + "owner": { + "github": "ruflin" + }, + "categories": [ + "crm", + "azure", + "cloud" + ], + "format_version": "1.0.0", + "readme": "/package/example/1.2.0-rc1/docs/README.md", + "license": "basic", + "screenshots": [ + { + "src": "/img/kibana-envoyproxy.jpg", + "path": "/package/example/1.2.0-rc1/img/kibana-envoyproxy.jpg", + "title": "IP Tables Ubiquity Dashboard", + "size": "1492x1464", + "type": "image/png" + } + ], + "assets": [ + "/package/example/1.2.0-rc1/manifest.yml", + "/package/example/1.2.0-rc1/docs/README.md", + "/package/example/1.2.0-rc1/img/icon.png", + "/package/example/1.2.0-rc1/img/kibana-envoyproxy.jpg", + "/package/example/1.2.0-rc1/data_stream/foo/manifest.yml", + "/package/example/1.2.0-rc1/kibana/dashboard/0c610510-5cbd-11e9-8477-077ec9664dbd.json", + "/package/example/1.2.0-rc1/kibana/visualization/0a994af0-5c9d-11e9-8477-077ec9664dbd.json", + "/package/example/1.2.0-rc1/kibana/visualization/36f872a0-5c03-11e9-85b4-19d0072eb4f2.json", + "/package/example/1.2.0-rc1/kibana/visualization/38f96190-5c99-11e9-8477-077ec9664dbd.json", + "/package/example/1.2.0-rc1/kibana/visualization/7e4084e0-5c99-11e9-8477-077ec9664dbd.json", + "/package/example/1.2.0-rc1/kibana/visualization/80844540-5c97-11e9-8477-077ec9664dbd.json", + "/package/example/1.2.0-rc1/kibana/visualization/ab48c3f0-5ca6-11e9-8477-077ec9664dbd.json", + "/package/example/1.2.0-rc1/data_stream/foo/fields/base-fields.yml", + "/package/example/1.2.0-rc1/data_stream/foo/agent/stream/stream.yml.hbs", + "/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-entry.json", + "/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-http.json", + "/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-json.json", + "/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-plaintext.json", + "/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-tcp.json" + ], + "policy_templates": [ + { + "name": "logs", + "title": "Logs datasource", + "description": "Datasource for your log files.", + "inputs": [ + { + "type": "foo" + } + ], + "multiple": true, + "categories": [ + "datastore" + ] + } + ], + "data_streams": [ + { + "type": "logs", + "dataset": "example.foo", + "title": "Foo", + "release": "ga", + "ingest_pipeline": "pipeline-entry", + "streams": [ + { + "input": "foo", + "vars": [ + { + "name": "paths", + "type": "text", + "description": "Path to log files to be collected", + "multi": true, + "required": true, + "show_user": false + } + ], + "template_path": "stream.yml.hbs", + "enabled": true + } + ], + "package": "example", + "path": "foo" + } + ] +} diff --git a/testdata/generated/package/experimental/0.0.1/index.json b/testdata/generated/package/experimental/0.0.1/index.json deleted file mode 100644 index 3fa400afd..000000000 --- a/testdata/generated/package/experimental/0.0.1/index.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "experimental", - "title": "Experimental", - "version": "0.0.1", - "release": "experimental", - "description": "Experimental package, should be set by default", - "type": "solution", - "download": "/epr/experimental/experimental-0.0.1.zip", - "path": "/package/experimental/0.0.1", - "categories": [ - "aws" - ], - "format_version": "1.0.0", - "readme": "/package/experimental/0.0.1/docs/README.md", - "license": "basic", - "assets": [ - "/package/experimental/0.0.1/manifest.yml", - "/package/experimental/0.0.1/docs/README.md" - ] -} diff --git a/testdata/generated/package/hidden/1.0.0/index.json b/testdata/generated/package/hidden/1.0.0/index.json index 6ede7e960..479fa614d 100644 --- a/testdata/generated/package/hidden/1.0.0/index.json +++ b/testdata/generated/package/hidden/1.0.0/index.json @@ -31,7 +31,7 @@ "dataset": "hidden.hidden", "hidden": true, "title": "Hidden data stream and ilm policy overrride", - "release": "experimental", + "release": "beta", "package": "hidden", "elasticsearch": { "index_template.mappings": { diff --git a/testdata/generated/package/ilmpolicy/1.0.0/index.json b/testdata/generated/package/ilmpolicy/1.0.0/index.json index bc41c9139..58af99c76 100644 --- a/testdata/generated/package/ilmpolicy/1.0.0/index.json +++ b/testdata/generated/package/ilmpolicy/1.0.0/index.json @@ -32,7 +32,7 @@ "dataset": "ilmpolicy.ilm_policy", "ilm_policy": "diagnostics", "title": "ILM policy overrride data stream", - "release": "experimental", + "release": "beta", "package": "ilmpolicy", "elasticsearch": { "index_template.mappings": { diff --git a/testdata/generated/package/multiple_false/0.0.1/index.json b/testdata/generated/package/multiple_false/0.0.1/index.json index 86752c6e8..ec3ff041a 100644 --- a/testdata/generated/package/multiple_false/0.0.1/index.json +++ b/testdata/generated/package/multiple_false/0.0.1/index.json @@ -39,7 +39,7 @@ "type": "logs", "dataset": "multiple_false.foo", "title": "Foo", - "release": "experimental", + "release": "beta", "ingest_pipeline": "default", "streams": [ { diff --git a/testdata/generated/package/no_stream_configs/1.0.0/index.json b/testdata/generated/package/no_stream_configs/1.0.0/index.json index 05bea7651..bee709b8a 100644 --- a/testdata/generated/package/no_stream_configs/1.0.0/index.json +++ b/testdata/generated/package/no_stream_configs/1.0.0/index.json @@ -25,7 +25,7 @@ "type": "logs", "dataset": "no_stream_configs.log", "title": "Log Yaml pipeline", - "release": "experimental", + "release": "beta", "package": "no_stream_configs", "path": "log" } diff --git a/testdata/generated/package/yamlpipeline/1.0.0/index.json b/testdata/generated/package/yamlpipeline/1.0.0/index.json index f2bcc0f51..4f5bd3bee 100644 --- a/testdata/generated/package/yamlpipeline/1.0.0/index.json +++ b/testdata/generated/package/yamlpipeline/1.0.0/index.json @@ -28,7 +28,7 @@ "type": "logs", "dataset": "yamlpipeline.log", "title": "Log Yaml pipeline", - "release": "experimental", + "release": "beta", "ingest_pipeline": "pipeline-entry", "streams": [ { diff --git a/testdata/generated/search-all.json b/testdata/generated/search-all.json index 9b3e1af96..37fba48a9 100644 --- a/testdata/generated/search-all.json +++ b/testdata/generated/search-all.json @@ -1,17 +1,4 @@ [ - { - "name": "dataset_is_prefix", - "title": "DatasetIsPrefix Flag", - "version": "0.0.1", - "release": "beta", - "description": "This package contains a datastream with the dataset_is_prefix flag set to true.\n", - "type": "integration", - "download": "/epr/dataset_is_prefix/dataset_is_prefix-0.0.1.zip", - "path": "/package/dataset_is_prefix/0.0.1", - "categories": [ - "custom" - ] - }, { "name": "datasources", "title": "Default datasource Integration", @@ -32,47 +19,6 @@ "custom" ] }, - { - "name": "ecs_style_dataset", - "title": "Default pipeline Integration", - "version": "0.0.1", - "release": "beta", - "description": "Tests the registry validations works for dataset fields using the ecs style format", - "type": "integration", - "download": "/epr/ecs_style_dataset/ecs_style_dataset-0.0.1.zip", - "path": "/package/ecs_style_dataset/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "monitoring" - ] - }, - { - "name": "default_pipeline", - "title": "Default pipeline Integration", - "version": "0.0.2", - "release": "beta", - "description": "Tests if no pipeline is set, it defaults to the default one", - "type": "integration", - "download": "/epr/default_pipeline/default_pipeline-0.0.2.zip", - "path": "/package/default_pipeline/0.0.2", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "containers", - "message_queue" - ] - }, { "name": "elasticsearch_privileges", "title": "Elasticsearch Privileges", @@ -91,24 +37,6 @@ "custom" ] }, - { - "name": "example", - "title": "Example", - "version": "0.0.2", - "release": "beta", - "description": "This is the example integration.", - "type": "integration", - "download": "/epr/example/example-0.0.2.zip", - "path": "/package/example/0.0.2", - "conditions": { - "kibana": { - "version": ">=6.0.0" - } - }, - "categories": [ - "web" - ] - }, { "name": "example", "title": "Example Integration", @@ -227,53 +155,6 @@ "custom" ] }, - { - "name": "input_groups", - "title": "Input Groups", - "version": "0.0.1", - "release": "beta", - "description": "AWS Integration for testing input groups", - "type": "integration", - "download": "/epr/input_groups/input_groups-0.0.1.zip", - "path": "/package/input_groups/0.0.1", - "icons": [ - { - "src": "/img/logo_aws.svg", - "path": "/package/input_groups/0.0.1/img/logo_aws.svg", - "title": "logo aws", - "size": "32x32", - "type": "image/svg+xml" - } - ], - "policy_templates": [ - { - "name": "ec2", - "title": "AWS EC2", - "description": "Collect logs and metrics from EC2 service", - "icons": [ - { - "src": "/img/logo_ec2.svg", - "path": "/package/input_groups/0.0.1/img/logo_ec2.svg", - "title": "AWS EC2 logo", - "size": "32x32", - "type": "image/svg+xml" - } - ], - "categories": [ - "compute" - ] - } - ], - "conditions": { - "kibana": { - "version": "~7.x.x" - } - }, - "categories": [ - "aws", - "cloud" - ] - }, { "name": "input_level_templates", "title": "Input level templates", @@ -423,26 +304,6 @@ "web" ] }, - { - "name": "multiple_false", - "title": "Multiple false", - "version": "0.0.1", - "release": "beta", - "description": "Tests that multiple can be set to false", - "type": "integration", - "download": "/epr/multiple_false/multiple_false-0.0.1.zip", - "path": "/package/multiple_false/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "custom" - ] - }, { "name": "no_stream_configs", "title": "No Stream configs", diff --git a/testdata/generated/search-category-custom.json b/testdata/generated/search-category-custom.json index f5687bcc9..91ed410dc 100644 --- a/testdata/generated/search-category-custom.json +++ b/testdata/generated/search-category-custom.json @@ -1,17 +1,4 @@ [ - { - "name": "dataset_is_prefix", - "title": "DatasetIsPrefix Flag", - "version": "0.0.1", - "release": "beta", - "description": "This package contains a datastream with the dataset_is_prefix flag set to true.\n", - "type": "integration", - "download": "/epr/dataset_is_prefix/dataset_is_prefix-0.0.1.zip", - "path": "/package/dataset_is_prefix/0.0.1", - "categories": [ - "custom" - ] - }, { "name": "datasources", "title": "Default datasource Integration", @@ -201,26 +188,6 @@ "web" ] }, - { - "name": "multiple_false", - "title": "Multiple false", - "version": "0.0.1", - "release": "beta", - "description": "Tests that multiple can be set to false", - "type": "integration", - "download": "/epr/multiple_false/multiple_false-0.0.1.zip", - "path": "/package/multiple_false/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "custom" - ] - }, { "name": "no_stream_configs", "title": "No Stream configs", diff --git a/testdata/generated/search-category-datastore-prerelease.json b/testdata/generated/search-category-datastore-prerelease.json new file mode 100644 index 000000000..4567ba998 --- /dev/null +++ b/testdata/generated/search-category-datastore-prerelease.json @@ -0,0 +1,35 @@ +[ + { + "name": "example", + "title": "Example Integration", + "version": "1.2.0-rc1", + "release": "ga", + "description": "This is the example integration", + "type": "integration", + "download": "/epr/example/example-1.2.0-rc1.zip", + "path": "/package/example/1.2.0-rc1", + "policy_templates": [ + { + "name": "logs", + "title": "Logs datasource", + "description": "Datasource for your log files.", + "categories": [ + "datastore" + ] + } + ], + "conditions": { + "kibana": { + "version": "^7.16.0 || ^8.0.0" + } + }, + "owner": { + "github": "ruflin" + }, + "categories": [ + "crm", + "azure", + "cloud" + ] + } +] diff --git a/testdata/generated/search-category-datastore.json b/testdata/generated/search-category-datastore.json index 1c0beddb1..4567ba998 100644 --- a/testdata/generated/search-category-datastore.json +++ b/testdata/generated/search-category-datastore.json @@ -2,12 +2,12 @@ { "name": "example", "title": "Example Integration", - "version": "1.1.0", + "version": "1.2.0-rc1", "release": "ga", "description": "This is the example integration", "type": "integration", - "download": "/epr/example/example-1.1.0.zip", - "path": "/package/example/1.1.0", + "download": "/epr/example/example-1.2.0-rc1.zip", + "path": "/package/example/1.2.0-rc1", "policy_templates": [ { "name": "logs", @@ -28,7 +28,8 @@ }, "categories": [ "crm", - "azure" + "azure", + "cloud" ] } ] diff --git a/testdata/generated/search-category-web-all.json b/testdata/generated/search-category-web-all.json index deb4ee8c7..5e5cbf1f4 100644 --- a/testdata/generated/search-category-web-all.json +++ b/testdata/generated/search-category-web-all.json @@ -1,22 +1,4 @@ [ - { - "name": "example", - "title": "Example", - "version": "0.0.2", - "release": "beta", - "description": "This is the example integration.", - "type": "integration", - "download": "/epr/example/example-0.0.2.zip", - "path": "/package/example/0.0.2", - "conditions": { - "kibana": { - "version": ">=6.0.0" - } - }, - "categories": [ - "web" - ] - }, { "name": "longdocs", "title": "Long Docs", diff --git a/testdata/generated/search-kibana652.json b/testdata/generated/search-kibana652.json index 8565a7cd8..1dfc40730 100644 --- a/testdata/generated/search-kibana652.json +++ b/testdata/generated/search-kibana652.json @@ -1,17 +1,4 @@ [ - { - "name": "dataset_is_prefix", - "title": "DatasetIsPrefix Flag", - "version": "0.0.1", - "release": "beta", - "description": "This package contains a datastream with the dataset_is_prefix flag set to true.\n", - "type": "integration", - "download": "/epr/dataset_is_prefix/dataset_is_prefix-0.0.1.zip", - "path": "/package/dataset_is_prefix/0.0.1", - "categories": [ - "custom" - ] - }, { "name": "datasources", "title": "Default datasource Integration", @@ -32,65 +19,6 @@ "custom" ] }, - { - "name": "ecs_style_dataset", - "title": "Default pipeline Integration", - "version": "0.0.1", - "release": "beta", - "description": "Tests the registry validations works for dataset fields using the ecs style format", - "type": "integration", - "download": "/epr/ecs_style_dataset/ecs_style_dataset-0.0.1.zip", - "path": "/package/ecs_style_dataset/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "monitoring" - ] - }, - { - "name": "default_pipeline", - "title": "Default pipeline Integration", - "version": "0.0.2", - "release": "beta", - "description": "Tests if no pipeline is set, it defaults to the default one", - "type": "integration", - "download": "/epr/default_pipeline/default_pipeline-0.0.2.zip", - "path": "/package/default_pipeline/0.0.2", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "containers", - "message_queue" - ] - }, - { - "name": "example", - "title": "Example", - "version": "0.0.2", - "release": "beta", - "description": "This is the example integration.", - "type": "integration", - "download": "/epr/example/example-0.0.2.zip", - "path": "/package/example/0.0.2", - "conditions": { - "kibana": { - "version": ">=6.0.0" - } - }, - "categories": [ - "web" - ] - }, { "name": "metricsonly", "title": "Metrics Only", @@ -111,26 +39,6 @@ "custom" ] }, - { - "name": "multiple_false", - "title": "Multiple false", - "version": "0.0.1", - "release": "beta", - "description": "Tests that multiple can be set to false", - "type": "integration", - "download": "/epr/multiple_false/multiple_false-0.0.1.zip", - "path": "/package/multiple_false/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "custom" - ] - }, { "name": "no_stream_configs", "title": "No Stream configs", diff --git a/testdata/generated/search-kibana721.json b/testdata/generated/search-kibana721.json index ed3da8acf..6a7bba91a 100644 --- a/testdata/generated/search-kibana721.json +++ b/testdata/generated/search-kibana721.json @@ -1,17 +1,4 @@ [ - { - "name": "dataset_is_prefix", - "title": "DatasetIsPrefix Flag", - "version": "0.0.1", - "release": "beta", - "description": "This package contains a datastream with the dataset_is_prefix flag set to true.\n", - "type": "integration", - "download": "/epr/dataset_is_prefix/dataset_is_prefix-0.0.1.zip", - "path": "/package/dataset_is_prefix/0.0.1", - "categories": [ - "custom" - ] - }, { "name": "datasources", "title": "Default datasource Integration", @@ -32,47 +19,6 @@ "custom" ] }, - { - "name": "ecs_style_dataset", - "title": "Default pipeline Integration", - "version": "0.0.1", - "release": "beta", - "description": "Tests the registry validations works for dataset fields using the ecs style format", - "type": "integration", - "download": "/epr/ecs_style_dataset/ecs_style_dataset-0.0.1.zip", - "path": "/package/ecs_style_dataset/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "monitoring" - ] - }, - { - "name": "default_pipeline", - "title": "Default pipeline Integration", - "version": "0.0.2", - "release": "beta", - "description": "Tests if no pipeline is set, it defaults to the default one", - "type": "integration", - "download": "/epr/default_pipeline/default_pipeline-0.0.2.zip", - "path": "/package/default_pipeline/0.0.2", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "containers", - "message_queue" - ] - }, { "name": "example", "title": "Example Integration", @@ -159,53 +105,6 @@ "custom" ] }, - { - "name": "input_groups", - "title": "Input Groups", - "version": "0.0.1", - "release": "beta", - "description": "AWS Integration for testing input groups", - "type": "integration", - "download": "/epr/input_groups/input_groups-0.0.1.zip", - "path": "/package/input_groups/0.0.1", - "icons": [ - { - "src": "/img/logo_aws.svg", - "path": "/package/input_groups/0.0.1/img/logo_aws.svg", - "title": "logo aws", - "size": "32x32", - "type": "image/svg+xml" - } - ], - "policy_templates": [ - { - "name": "ec2", - "title": "AWS EC2", - "description": "Collect logs and metrics from EC2 service", - "icons": [ - { - "src": "/img/logo_ec2.svg", - "path": "/package/input_groups/0.0.1/img/logo_ec2.svg", - "title": "AWS EC2 logo", - "size": "32x32", - "type": "image/svg+xml" - } - ], - "categories": [ - "compute" - ] - } - ], - "conditions": { - "kibana": { - "version": "~7.x.x" - } - }, - "categories": [ - "aws", - "cloud" - ] - }, { "name": "longdocs", "title": "Long Docs", @@ -278,26 +177,6 @@ "web" ] }, - { - "name": "multiple_false", - "title": "Multiple false", - "version": "0.0.1", - "release": "beta", - "description": "Tests that multiple can be set to false", - "type": "integration", - "download": "/epr/multiple_false/multiple_false-0.0.1.zip", - "path": "/package/multiple_false/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "custom" - ] - }, { "name": "no_stream_configs", "title": "No Stream configs", diff --git a/testdata/generated/search-kibana800.json b/testdata/generated/search-kibana800.json index e488efebe..1a6019e91 100644 --- a/testdata/generated/search-kibana800.json +++ b/testdata/generated/search-kibana800.json @@ -1,17 +1,4 @@ [ - { - "name": "dataset_is_prefix", - "title": "DatasetIsPrefix Flag", - "version": "0.0.1", - "release": "beta", - "description": "This package contains a datastream with the dataset_is_prefix flag set to true.\n", - "type": "integration", - "download": "/epr/dataset_is_prefix/dataset_is_prefix-0.0.1.zip", - "path": "/package/dataset_is_prefix/0.0.1", - "categories": [ - "custom" - ] - }, { "name": "datasources", "title": "Default datasource Integration", @@ -32,47 +19,6 @@ "custom" ] }, - { - "name": "ecs_style_dataset", - "title": "Default pipeline Integration", - "version": "0.0.1", - "release": "beta", - "description": "Tests the registry validations works for dataset fields using the ecs style format", - "type": "integration", - "download": "/epr/ecs_style_dataset/ecs_style_dataset-0.0.1.zip", - "path": "/package/ecs_style_dataset/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "monitoring" - ] - }, - { - "name": "default_pipeline", - "title": "Default pipeline Integration", - "version": "0.0.2", - "release": "beta", - "description": "Tests if no pipeline is set, it defaults to the default one", - "type": "integration", - "download": "/epr/default_pipeline/default_pipeline-0.0.2.zip", - "path": "/package/default_pipeline/0.0.2", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "containers", - "message_queue" - ] - }, { "name": "elasticsearch_privileges", "title": "Elasticsearch Privileges", @@ -274,26 +220,6 @@ "web" ] }, - { - "name": "multiple_false", - "title": "Multiple false", - "version": "0.0.1", - "release": "beta", - "description": "Tests that multiple can be set to false", - "type": "integration", - "download": "/epr/multiple_false/multiple_false-0.0.1.zip", - "path": "/package/multiple_false/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "custom" - ] - }, { "name": "no_stream_configs", "title": "No Stream configs", diff --git a/testdata/generated/search-package-example-all.json b/testdata/generated/search-package-example-all.json index 2e8734e35..ac561be81 100644 --- a/testdata/generated/search-package-example-all.json +++ b/testdata/generated/search-package-example-all.json @@ -1,22 +1,4 @@ [ - { - "name": "example", - "title": "Example", - "version": "0.0.2", - "release": "beta", - "description": "This is the example integration.", - "type": "integration", - "download": "/epr/example/example-0.0.2.zip", - "path": "/package/example/0.0.2", - "conditions": { - "kibana": { - "version": ">=6.0.0" - } - }, - "categories": [ - "web" - ] - }, { "name": "example", "title": "Example Integration", diff --git a/testdata/generated/search-package-experimental-error.json b/testdata/generated/search-package-experimental-error.txt similarity index 100% rename from testdata/generated/search-package-experimental-error.json rename to testdata/generated/search-package-experimental-error.txt diff --git a/testdata/generated/search-package-experimental.json b/testdata/generated/search-package-experimental.json index 7d556893c..9070a8683 100644 --- a/testdata/generated/search-package-experimental.json +++ b/testdata/generated/search-package-experimental.json @@ -12,6 +12,19 @@ "custom" ] }, + { + "name": "defaultrelease", + "title": "Default Release", + "version": "0.0.1", + "release": "beta", + "description": "Package without release, should be set to default", + "type": "solution", + "download": "/epr/defaultrelease/defaultrelease-0.0.1.zip", + "path": "/package/defaultrelease/0.0.1", + "categories": [ + "aws" + ] + }, { "name": "datasources", "title": "Default datasource Integration", @@ -94,12 +107,12 @@ { "name": "example", "title": "Example Integration", - "version": "1.1.0", + "version": "1.2.0-rc1", "release": "ga", "description": "This is the example integration", "type": "integration", - "download": "/epr/example/example-1.1.0.zip", - "path": "/package/example/1.1.0", + "download": "/epr/example/example-1.2.0-rc1.zip", + "path": "/package/example/1.2.0-rc1", "policy_templates": [ { "name": "logs", @@ -120,20 +133,8 @@ }, "categories": [ "crm", - "azure" - ] - }, - { - "name": "experimental", - "title": "Experimental", - "version": "0.0.1", - "release": "experimental", - "description": "Experimental package, should be set by default", - "type": "solution", - "download": "/epr/experimental/experimental-0.0.1.zip", - "path": "/package/experimental/0.0.1", - "categories": [ - "aws" + "azure", + "cloud" ] }, { diff --git a/testdata/generated/search-package-internal.json b/testdata/generated/search-package-internal.json index b6613ac6e..0466859a5 100644 --- a/testdata/generated/search-package-internal.json +++ b/testdata/generated/search-package-internal.json @@ -1,17 +1,4 @@ [ - { - "name": "dataset_is_prefix", - "title": "DatasetIsPrefix Flag", - "version": "0.0.1", - "release": "beta", - "description": "This package contains a datastream with the dataset_is_prefix flag set to true.\n", - "type": "integration", - "download": "/epr/dataset_is_prefix/dataset_is_prefix-0.0.1.zip", - "path": "/package/dataset_is_prefix/0.0.1", - "categories": [ - "custom" - ] - }, { "name": "datasources", "title": "Default datasource Integration", @@ -32,47 +19,6 @@ "custom" ] }, - { - "name": "ecs_style_dataset", - "title": "Default pipeline Integration", - "version": "0.0.1", - "release": "beta", - "description": "Tests the registry validations works for dataset fields using the ecs style format", - "type": "integration", - "download": "/epr/ecs_style_dataset/ecs_style_dataset-0.0.1.zip", - "path": "/package/ecs_style_dataset/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "monitoring" - ] - }, - { - "name": "default_pipeline", - "title": "Default pipeline Integration", - "version": "0.0.2", - "release": "beta", - "description": "Tests if no pipeline is set, it defaults to the default one", - "type": "integration", - "download": "/epr/default_pipeline/default_pipeline-0.0.2.zip", - "path": "/package/default_pipeline/0.0.2", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "containers", - "message_queue" - ] - }, { "name": "elasticsearch_privileges", "title": "Elasticsearch Privileges", @@ -177,53 +123,6 @@ "custom" ] }, - { - "name": "input_groups", - "title": "Input Groups", - "version": "0.0.1", - "release": "beta", - "description": "AWS Integration for testing input groups", - "type": "integration", - "download": "/epr/input_groups/input_groups-0.0.1.zip", - "path": "/package/input_groups/0.0.1", - "icons": [ - { - "src": "/img/logo_aws.svg", - "path": "/package/input_groups/0.0.1/img/logo_aws.svg", - "title": "logo aws", - "size": "32x32", - "type": "image/svg+xml" - } - ], - "policy_templates": [ - { - "name": "ec2", - "title": "AWS EC2", - "description": "Collect logs and metrics from EC2 service", - "icons": [ - { - "src": "/img/logo_ec2.svg", - "path": "/package/input_groups/0.0.1/img/logo_ec2.svg", - "title": "AWS EC2 logo", - "size": "32x32", - "type": "image/svg+xml" - } - ], - "categories": [ - "compute" - ] - } - ], - "conditions": { - "kibana": { - "version": "~7.x.x" - } - }, - "categories": [ - "aws", - "cloud" - ] - }, { "name": "input_level_templates", "title": "Input level templates", @@ -321,26 +220,6 @@ "web" ] }, - { - "name": "multiple_false", - "title": "Multiple false", - "version": "0.0.1", - "release": "beta", - "description": "Tests that multiple can be set to false", - "type": "integration", - "download": "/epr/multiple_false/multiple_false-0.0.1.zip", - "path": "/package/multiple_false/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "custom" - ] - }, { "name": "no_stream_configs", "title": "No Stream configs", diff --git a/testdata/generated/search-package-prerelease-error.txt b/testdata/generated/search-package-prerelease-error.txt new file mode 100644 index 000000000..ef09f9e51 --- /dev/null +++ b/testdata/generated/search-package-prerelease-error.txt @@ -0,0 +1 @@ +invalid 'prerelease' query param: 'foo' diff --git a/testdata/generated/search-package-prerelease.json b/testdata/generated/search-package-prerelease.json new file mode 100644 index 000000000..e1b42b825 --- /dev/null +++ b/testdata/generated/search-package-prerelease.json @@ -0,0 +1,421 @@ +[ + { + "name": "dataset_is_prefix", + "title": "DatasetIsPrefix Flag", + "version": "0.0.1", + "release": "beta", + "description": "This package contains a datastream with the dataset_is_prefix flag set to true.\n", + "type": "integration", + "download": "/epr/dataset_is_prefix/dataset_is_prefix-0.0.1.zip", + "path": "/package/dataset_is_prefix/0.0.1", + "categories": [ + "custom" + ] + }, + { + "name": "defaultrelease", + "title": "Default Release", + "version": "0.0.1", + "release": "beta", + "description": "Package without release, should be set to default", + "type": "solution", + "download": "/epr/defaultrelease/defaultrelease-0.0.1.zip", + "path": "/package/defaultrelease/0.0.1", + "categories": [ + "aws" + ] + }, + { + "name": "datasources", + "title": "Default datasource Integration", + "version": "1.0.0", + "release": "beta", + "description": "Package with data sources", + "type": "integration", + "download": "/epr/datasources/datasources-1.0.0.zip", + "path": "/package/datasources/1.0.0", + "policy_templates": [ + { + "name": "nginx", + "title": "Datasource title", + "description": "Details about the data source." + } + ], + "categories": [ + "custom" + ] + }, + { + "name": "ecs_style_dataset", + "title": "Default pipeline Integration", + "version": "0.0.1", + "release": "beta", + "description": "Tests the registry validations works for dataset fields using the ecs style format", + "type": "integration", + "download": "/epr/ecs_style_dataset/ecs_style_dataset-0.0.1.zip", + "path": "/package/ecs_style_dataset/0.0.1", + "policy_templates": [ + { + "name": "logs", + "title": "Logs datasource", + "description": "Datasource for your log files." + } + ], + "categories": [ + "monitoring" + ] + }, + { + "name": "default_pipeline", + "title": "Default pipeline Integration", + "version": "0.0.2", + "release": "beta", + "description": "Tests if no pipeline is set, it defaults to the default one", + "type": "integration", + "download": "/epr/default_pipeline/default_pipeline-0.0.2.zip", + "path": "/package/default_pipeline/0.0.2", + "policy_templates": [ + { + "name": "logs", + "title": "Logs datasource", + "description": "Datasource for your log files." + } + ], + "categories": [ + "containers", + "message_queue" + ] + }, + { + "name": "elasticsearch_privileges", + "title": "Elasticsearch Privileges", + "version": "1.0.0", + "release": "beta", + "description": "Test package-specified Elasticsearch index privileges and cluster privileges", + "type": "solution", + "download": "/epr/elasticsearch_privileges/elasticsearch_privileges-1.0.0.zip", + "path": "/package/elasticsearch_privileges/1.0.0", + "conditions": { + "kibana": { + "version": ">=7.16.0" + } + }, + "categories": [ + "custom" + ] + }, + { + "name": "example", + "title": "Example Integration", + "version": "1.2.0-rc1", + "release": "ga", + "description": "This is the example integration", + "type": "integration", + "download": "/epr/example/example-1.2.0-rc1.zip", + "path": "/package/example/1.2.0-rc1", + "policy_templates": [ + { + "name": "logs", + "title": "Logs datasource", + "description": "Datasource for your log files.", + "categories": [ + "datastore" + ] + } + ], + "conditions": { + "kibana": { + "version": "^7.16.0 || ^8.0.0" + } + }, + "owner": { + "github": "ruflin" + }, + "categories": [ + "crm", + "azure", + "cloud" + ] + }, + { + "name": "foo", + "title": "Foo", + "version": "1.0.0", + "release": "beta", + "description": "This is the foo integration", + "type": "solution", + "download": "/epr/foo/foo-1.0.0.zip", + "path": "/package/foo/1.0.0", + "conditions": { + "kibana": { + "version": ">=7.0.0" + } + }, + "categories": [ + "custom" + ] + }, + { + "name": "hidden", + "title": "Hidden", + "version": "1.0.0", + "release": "beta", + "description": "This is the hidden integration", + "type": "solution", + "download": "/epr/hidden/hidden-1.0.0.zip", + "path": "/package/hidden/1.0.0", + "conditions": { + "kibana": { + "version": ">=7.0.0" + } + }, + "categories": [ + "custom" + ] + }, + { + "name": "ilmpolicy", + "title": "ILM Policy", + "version": "1.0.0", + "release": "beta", + "description": "Test form ILM Policy in Package", + "type": "solution", + "download": "/epr/ilmpolicy/ilmpolicy-1.0.0.zip", + "path": "/package/ilmpolicy/1.0.0", + "conditions": { + "kibana": { + "version": ">=7.0.0" + } + }, + "categories": [ + "custom" + ] + }, + { + "name": "input_groups", + "title": "Input Groups", + "version": "0.0.1", + "release": "beta", + "description": "AWS Integration for testing input groups", + "type": "integration", + "download": "/epr/input_groups/input_groups-0.0.1.zip", + "path": "/package/input_groups/0.0.1", + "icons": [ + { + "src": "/img/logo_aws.svg", + "path": "/package/input_groups/0.0.1/img/logo_aws.svg", + "title": "logo aws", + "size": "32x32", + "type": "image/svg+xml" + } + ], + "policy_templates": [ + { + "name": "ec2", + "title": "AWS EC2", + "description": "Collect logs and metrics from EC2 service", + "icons": [ + { + "src": "/img/logo_ec2.svg", + "path": "/package/input_groups/0.0.1/img/logo_ec2.svg", + "title": "AWS EC2 logo", + "size": "32x32", + "type": "image/svg+xml" + } + ], + "categories": [ + "compute" + ] + } + ], + "conditions": { + "kibana": { + "version": "~7.x.x" + } + }, + "categories": [ + "aws", + "cloud" + ] + }, + { + "name": "input_level_templates", + "title": "Input level templates", + "version": "1.0.0", + "release": "beta", + "description": "This is a test package showing input-level agent yaml templates", + "type": "solution", + "download": "/epr/input_level_templates/input_level_templates-1.0.0.zip", + "path": "/package/input_level_templates/1.0.0", + "policy_templates": [ + { + "name": "input_level_templates", + "title": "Input level templates", + "description": "Input with input-level template to use input-level vars with" + } + ], + "conditions": { + "kibana": { + "version": ">=7.11.0" + } + }, + "categories": [ + "custom" + ] + }, + { + "name": "longdocs", + "title": "Long Docs", + "version": "1.0.4", + "release": "ga", + "description": "This integration contains pretty long documentation.\nIt is used to show the different visualisations inside a documentation to test how we handle it.\nThe integration does not contain any assets except the documentation page.\n", + "type": "integration", + "download": "/epr/longdocs/longdocs-1.0.4.zip", + "path": "/package/longdocs/1.0.4", + "icons": [ + { + "src": "/img/icon.svg", + "path": "/package/longdocs/1.0.4/img/icon.svg", + "type": "image/svg+xml" + } + ], + "conditions": { + "kibana": { + "version": ">6.7.0" + } + }, + "categories": [ + "custom", + "web" + ] + }, + { + "name": "metricsonly", + "title": "Metrics Only", + "version": "2.0.1", + "release": "ga", + "description": "This is an integration with only the metrics category.\n", + "type": "integration", + "download": "/epr/metricsonly/metricsonly-2.0.1.zip", + "path": "/package/metricsonly/2.0.1", + "icons": [ + { + "src": "/img/icon.svg", + "path": "/package/metricsonly/2.0.1/img/icon.svg", + "type": "image/svg+xml" + } + ], + "categories": [ + "custom" + ] + }, + { + "name": "multiversion", + "title": "Multi Version Second with the same version! This one should win, because it is first.", + "version": "1.1.0", + "release": "ga", + "description": "Multiple versions of this integration exist.\n", + "type": "integration", + "download": "/epr/multiversion/multiversion-1.1.0.zip", + "path": "/package/multiversion/1.1.0", + "icons": [ + { + "src": "/img/icon.svg", + "path": "/package/multiversion/1.1.0/img/icon.svg", + "type": "image/svg+xml" + } + ], + "conditions": { + "kibana": { + "version": ">6.7.0" + } + }, + "categories": [ + "custom", + "web" + ] + }, + { + "name": "multiple_false", + "title": "Multiple false", + "version": "0.0.1", + "release": "beta", + "description": "Tests that multiple can be set to false", + "type": "integration", + "download": "/epr/multiple_false/multiple_false-0.0.1.zip", + "path": "/package/multiple_false/0.0.1", + "policy_templates": [ + { + "name": "logs", + "title": "Logs datasource", + "description": "Datasource for your log files." + } + ], + "categories": [ + "custom" + ] + }, + { + "name": "no_stream_configs", + "title": "No Stream configs", + "version": "1.0.0", + "release": "beta", + "description": "This package does contain a dataset but not stream configs.\n", + "type": "integration", + "download": "/epr/no_stream_configs/no_stream_configs-1.0.0.zip", + "path": "/package/no_stream_configs/1.0.0", + "categories": [ + "custom" + ] + }, + { + "name": "reference", + "title": "Reference package", + "version": "1.0.0", + "release": "ga", + "description": "This package is used for defining all the properties of a package, the possible assets etc. It serves as a reference on all the config options which are possible.\n", + "type": "integration", + "download": "/epr/reference/reference-1.0.0.zip", + "path": "/package/reference/1.0.0", + "icons": [ + { + "src": "/img/icon.svg", + "path": "/package/reference/1.0.0/img/icon.svg", + "size": "32x32", + "type": "image/svg+xml" + } + ], + "policy_templates": [ + { + "name": "nginx", + "title": "Nginx logs and metrics.", + "description": "Collecting logs and metrics from nginx." + } + ], + "conditions": { + "kibana": { + "version": ">6.7.0 <7.6.0" + } + }, + "owner": { + "github": "ruflin" + }, + "categories": [ + "custom", + "web" + ] + }, + { + "name": "yamlpipeline", + "title": "Yaml Pipeline package", + "version": "1.0.0", + "release": "beta", + "description": "This package contains a yaml pipeline.\n", + "type": "integration", + "download": "/epr/yamlpipeline/yamlpipeline-1.0.0.zip", + "path": "/package/yamlpipeline/1.0.0", + "categories": [ + "custom" + ] + } +] diff --git a/testdata/generated/search.json b/testdata/generated/search.json index b6613ac6e..0466859a5 100644 --- a/testdata/generated/search.json +++ b/testdata/generated/search.json @@ -1,17 +1,4 @@ [ - { - "name": "dataset_is_prefix", - "title": "DatasetIsPrefix Flag", - "version": "0.0.1", - "release": "beta", - "description": "This package contains a datastream with the dataset_is_prefix flag set to true.\n", - "type": "integration", - "download": "/epr/dataset_is_prefix/dataset_is_prefix-0.0.1.zip", - "path": "/package/dataset_is_prefix/0.0.1", - "categories": [ - "custom" - ] - }, { "name": "datasources", "title": "Default datasource Integration", @@ -32,47 +19,6 @@ "custom" ] }, - { - "name": "ecs_style_dataset", - "title": "Default pipeline Integration", - "version": "0.0.1", - "release": "beta", - "description": "Tests the registry validations works for dataset fields using the ecs style format", - "type": "integration", - "download": "/epr/ecs_style_dataset/ecs_style_dataset-0.0.1.zip", - "path": "/package/ecs_style_dataset/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "monitoring" - ] - }, - { - "name": "default_pipeline", - "title": "Default pipeline Integration", - "version": "0.0.2", - "release": "beta", - "description": "Tests if no pipeline is set, it defaults to the default one", - "type": "integration", - "download": "/epr/default_pipeline/default_pipeline-0.0.2.zip", - "path": "/package/default_pipeline/0.0.2", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "containers", - "message_queue" - ] - }, { "name": "elasticsearch_privileges", "title": "Elasticsearch Privileges", @@ -177,53 +123,6 @@ "custom" ] }, - { - "name": "input_groups", - "title": "Input Groups", - "version": "0.0.1", - "release": "beta", - "description": "AWS Integration for testing input groups", - "type": "integration", - "download": "/epr/input_groups/input_groups-0.0.1.zip", - "path": "/package/input_groups/0.0.1", - "icons": [ - { - "src": "/img/logo_aws.svg", - "path": "/package/input_groups/0.0.1/img/logo_aws.svg", - "title": "logo aws", - "size": "32x32", - "type": "image/svg+xml" - } - ], - "policy_templates": [ - { - "name": "ec2", - "title": "AWS EC2", - "description": "Collect logs and metrics from EC2 service", - "icons": [ - { - "src": "/img/logo_ec2.svg", - "path": "/package/input_groups/0.0.1/img/logo_ec2.svg", - "title": "AWS EC2 logo", - "size": "32x32", - "type": "image/svg+xml" - } - ], - "categories": [ - "compute" - ] - } - ], - "conditions": { - "kibana": { - "version": "~7.x.x" - } - }, - "categories": [ - "aws", - "cloud" - ] - }, { "name": "input_level_templates", "title": "Input level templates", @@ -321,26 +220,6 @@ "web" ] }, - { - "name": "multiple_false", - "title": "Multiple false", - "version": "0.0.1", - "release": "beta", - "description": "Tests that multiple can be set to false", - "type": "integration", - "download": "/epr/multiple_false/multiple_false-0.0.1.zip", - "path": "/package/multiple_false/0.0.1", - "policy_templates": [ - { - "name": "logs", - "title": "Logs datasource", - "description": "Datasource for your log files." - } - ], - "categories": [ - "custom" - ] - }, { "name": "no_stream_configs", "title": "No Stream configs", diff --git a/testdata/package/experimental/0.0.1/docs/README.md b/testdata/package/defaultrelease/0.0.1/docs/README.md similarity index 100% rename from testdata/package/experimental/0.0.1/docs/README.md rename to testdata/package/defaultrelease/0.0.1/docs/README.md diff --git a/testdata/package/defaultrelease/0.0.1/manifest.yml b/testdata/package/defaultrelease/0.0.1/manifest.yml new file mode 100644 index 000000000..02a7a2b3f --- /dev/null +++ b/testdata/package/defaultrelease/0.0.1/manifest.yml @@ -0,0 +1,10 @@ +format_version: 1.0.0 + +name: defaultrelease +description: Package without release, should be set to default +version: 0.0.1 +title: Default Release +categories: ["aws"] +type: solution + + diff --git a/testdata/package/example/1.2.0-rc1/data_stream/foo/agent/stream/stream.yml.hbs b/testdata/package/example/1.2.0-rc1/data_stream/foo/agent/stream/stream.yml.hbs new file mode 100644 index 000000000..20e9ff3fe --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/data_stream/foo/agent/stream/stream.yml.hbs @@ -0,0 +1 @@ +foo: bar diff --git a/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-entry.json b/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-entry.json new file mode 100644 index 000000000..9a0801c31 --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-entry.json @@ -0,0 +1,42 @@ +{ + "description": "Pipeline for normalizing envoyproxy logs", + "processors": [ + { + "pipeline": { + "if": "ctx.message.charAt(0) != (char)(\"{\")", + "name": "{{IngestPipeline 'pipeline-plaintext' }}" + } + }, + { + "pipeline": { + "if": "ctx.message.charAt(0) == (char)(\"{\")", + "name": "{{IngestPipeline 'pipeline-json' }}" + } + }, + { + "set": { + "field": "event.created", + "value": "{{@timestamp}}" + } + }, + { + "set": { + "field": "@timestamp", + "value": "{{timestamp}}", + "if": "ctx.timestamp != null" + } + }, + { + "remove": { + "field": ["timestamp"], + "ignore_failure": true + } + } + ], + "on_failure" : [{ + "set" : { + "field" : "error.message", + "value" : "pipeline-entry: {{ _ingest.on_failure_message }}" + } + }] +} diff --git a/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-http.json b/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-http.json new file mode 100644 index 000000000..e38875cfe --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-http.json @@ -0,0 +1,94 @@ +{ + "description": "Pipeline for normalizing envoy HTTP ACCESS logs", + "processors": [ + { + "script": { + "lang": "painless", + "source": "ctx['http'] = new HashMap(); def p = ctx.proto.indexOf ('/'); def l = ctx.proto.length(); ctx.http.version = ctx.proto.substring(p+1, l);", + "ignore_failure" : true + } + }, + { + "rename": { + "field": "method", + "target_field": "http.request.method" + } + }, + { + "rename": { + "field": "path", + "target_field": "url.path" + } + }, + { + "convert" : { + "field" : "response_code", + "type": "long" + } + }, + { + "rename": { + "field": "response_code", + "target_field": "http.response.status_code" + } + }, + { + "rename": { + "field": "bytes_received", + "target_field": "http.response.body.bytes" + } + }, + { + "convert" : { + "field" : "http.response.body.bytes", + "type": "long" + } + }, + { + "rename": { + "field": "bytes_sent", + "target_field": "http.request.body.bytes" + } + }, + { + "convert" : { + "field" : "http.request.body.bytes", + "type": "long" + } + }, + { + "script": { + "lang": "painless", + "source": "ctx.envoyproxy.upstream_service_time = Math.round(Double.parseDouble(ctx.upstream_service_time) * params.scale)", + "params": { + "scale": 1000000 + }, + "if": "ctx.upstream_service_time != null && ctx.upstream_service_time != '-'" + } + }, + { + "set": { + "field": "envoyproxy.proxy_type", + "value": "http" + } + }, + { + "set": { + "field": "url.domain", + "value": "{{envoyproxy.authority}}" + } + }, + { + "user_agent": { + "field": "user_agent.original", + "ignore_missing": true + } + } + ], + "on_failure" : [{ + "set" : { + "field" : "error.message", + "value" : "pipeline-http: {{ _ingest.on_failure_message }}" + } + }] +} \ No newline at end of file diff --git a/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-json.json b/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-json.json new file mode 100644 index 000000000..763ec6690 --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-json.json @@ -0,0 +1,47 @@ +{ + "description": "Pipeline for normalizing envoyproxy access logs", + "processors": [ + { + "json" : { + "field" : "message", + "target_field" : "json" + } + }, + { + "remove": { + "field": ["message"], + "ignore_failure" : true + } + }, + { + "rename": { + "field": "json.message", + "target_field": "message", + "ignore_failure" : true + } + }, + { + "rename": { + "field": "json.kubernetes", + "target_field": "kubernetes", + "ignore_failure" : true + } + }, + { + "remove": { + "field": ["json"] + } + }, + { + "pipeline": { + "name": "{{IngestPipeline 'pipeline-plaintext' }}" + } + } + ], + "on_failure" : [{ + "set" : { + "field" : "error.message", + "value" : "pipeline-json: {{ _ingest.on_failure_message }}" + } + }] +} diff --git a/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-plaintext.json b/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-plaintext.json new file mode 100644 index 000000000..5468ce1da --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-plaintext.json @@ -0,0 +1,124 @@ +{ + "description": "Pipeline for normalizing envoy access logs", + "processors": [ + { + "script": { + "lang": "painless", + "source": "if (ctx.message.charAt(0) == (char)(\"[\")) { ctx.temp_message = \"ACCESS \" + ctx.message;} else if (ctx.message.substring(0, 7) == \"ACCESS \") { ctx.temp_message = ctx.message;} else { throw new Exception(\"Not a valid envoyproxy access log\");}" + } + }, + { + "dissect": { + "field": "temp_message", + "pattern": "%{envoyproxy.log_type} [%{timestamp}] \"%{method} %{path} %{proto}\" %{response_code} %{envoyproxy.response_flags} %{bytes_received} %{bytes_sent} %{duration} %{upstream_service_time} \"%{source.address}\" \"%{user_agent.original}\" \"%{envoyproxy.request_id}\" \"%{envoyproxy.authority}\" \"%{dest}\"", + "on_failure" : [{ + "script": { + "lang": "painless", + "source": "ctx.remove('temp_message'); throw new Exception(\"Dissect error: Not a valid envoyproxy access log\");" + } + }] + } + }, + { + "script": { + "lang": "painless", + "source": "if (ctx.dest == \"-\") { ctx.remove('dest');} else { ctx['destination'] = new HashMap(); def p = ctx.dest.indexOf (':'); def l = ctx.dest.length(); ctx.destination.address = ctx.dest.substring(0, p); ctx.destination.port = ctx.dest.substring(p+1, l);} ctx.remove('dest');", + "if": "ctx.dest != null" + } + }, + { + "convert" : { + "field" : "destination.port", + "type": "integer", + "if": "ctx.destination?.port != null" + } + }, + { + "convert" : { + "field" : "duration", + "type": "double", + "if": "ctx.duration != null" + } + }, + { + "script": { + "lang": "painless", + "source": "ctx.event.duration = Math.round(ctx.duration * params.scale)", + "params": { + "scale": 1000000 + }, + "if": "ctx.duration != null" + } + }, + { + "remove": { + "field": ["json", "duration", "time", "temp_message"], + "ignore_missing": true + } + }, + { + "pipeline": { + "if": "ctx.proto.charAt(0) != (char)(\"-\")", + "name": "{{IngestPipeline 'pipeline-http' }}" + } + }, + { + "pipeline": { + "if": "ctx.proto.charAt(0) == (char)(\"-\")", + "name": "{{IngestPipeline 'pipeline-tcp' }}" + } + }, + { + "remove": { + "field": ["proto", "upstream_service_time"], + "ignore_failure": true + } + }, + { + "remove": { + "field": "source.address", + "if": "ctx.source.address == '-'" + } + }, + { + "remove": { + "field": "envoyproxy.response_flags", + "if": "ctx.envoyproxy.response_flags == '-'" + } + }, + { + "split": { + "field": "envoyproxy.response_flags", + "separator": "," , + "if": "ctx.envoyproxy.response_flags != null" + } + }, + { + "set" : { + "field" : "destination.ip", + "value" : "{{destination.address}}", + "if": "ctx.destination?.address != null" + } + }, + { + "set" : { + "field" : "source.ip", + "value" : "{{source.address}}", + "if": "ctx.source?.address != null" + } + }, + { + "geoip": { + "field": "destination.ip", + "target_field": "destination.geo", + "if": "ctx.destination?.ip != null" + } + } + ], + "on_failure" : [{ + "set" : { + "field" : "error.message", + "value" : "pipeline-plaintext: {{ _ingest.on_failure_message }}" + } + }] +} diff --git a/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-tcp.json b/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-tcp.json new file mode 100644 index 000000000..8a84954dc --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/data_stream/foo/elasticsearch/ingest_pipeline/pipeline-tcp.json @@ -0,0 +1,46 @@ +{ + "description": "Pipeline for normalizing envoy TCP ACCESS logs", + "processors": [ + { + "remove": { + "field": ["upstream_service_time", "method", "user_agent", "path", "response_code"] + } + }, + { + "rename": { + "field": "bytes_received", + "target_field": "destination.bytes" + } + }, + { + "convert" : { + "field" : "destination.bytes", + "type": "long" + } + }, + { + "rename": { + "field": "bytes_sent", + "target_field": "source.bytes" + } + }, + { + "convert" : { + "field" : "source.bytes", + "type": "long" + } + }, + { + "set": { + "field": "envoyproxy.proxy_type", + "value": "tcp" + } + } + ], + "on_failure" : [{ + "set" : { + "field" : "error.message", + "value" : "pipeline-tcp: {{ _ingest.on_failure_message }}" + } + }] +} \ No newline at end of file diff --git a/testdata/package/example/1.2.0-rc1/data_stream/foo/fields/base-fields.yml b/testdata/package/example/1.2.0-rc1/data_stream/foo/fields/base-fields.yml new file mode 100644 index 000000000..c40df14f9 --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/data_stream/foo/fields/base-fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: "@timestamp" + type: date + description: > + Event timestamp. diff --git a/testdata/package/example/1.2.0-rc1/data_stream/foo/manifest.yml b/testdata/package/example/1.2.0-rc1/data_stream/foo/manifest.yml new file mode 100644 index 000000000..89203c344 --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/data_stream/foo/manifest.yml @@ -0,0 +1,17 @@ +# This dataset has a different id then the path +name: bar.noo + +title: Foo + +# Needs to describe the type of this input +type: logs +ingest_pipeline: pipeline-entry + +streams: + - input: foo + vars: + - name: paths + required: true + description: Path to log files to be collected + type: text + multi: true diff --git a/testdata/package/example/1.2.0-rc1/docs/README.md b/testdata/package/example/1.2.0-rc1/docs/README.md new file mode 100644 index 000000000..f0cf4c6c8 --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/docs/README.md @@ -0,0 +1,3 @@ +# Example readme + +This is a readme. diff --git a/testdata/package/example/1.2.0-rc1/img/icon.png b/testdata/package/example/1.2.0-rc1/img/icon.png new file mode 100644 index 000000000..cdfc45b4a Binary files /dev/null and b/testdata/package/example/1.2.0-rc1/img/icon.png differ diff --git a/testdata/package/example/1.2.0-rc1/img/kibana-envoyproxy.jpg b/testdata/package/example/1.2.0-rc1/img/kibana-envoyproxy.jpg new file mode 100644 index 000000000..ebdee56b9 Binary files /dev/null and b/testdata/package/example/1.2.0-rc1/img/kibana-envoyproxy.jpg differ diff --git a/testdata/package/example/1.2.0-rc1/kibana/dashboard/0c610510-5cbd-11e9-8477-077ec9664dbd.json b/testdata/package/example/1.2.0-rc1/kibana/dashboard/0c610510-5cbd-11e9-8477-077ec9664dbd.json new file mode 100644 index 000000000..649963915 --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/kibana/dashboard/0c610510-5cbd-11e9-8477-077ec9664dbd.json @@ -0,0 +1,49 @@ +{ + "attributes": { + "description": "Filebeat Envoyproxy Overview Dashboard", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"language\":\"kuery\",\"query\":\"\"}}" + }, + "optionsJSON": "{\"hidePanelTitles\":false,\"useMargins\":true}", + "panelsJSON": "[{\"embeddableConfig\":{},\"gridData\":{\"h\":7,\"i\":\"1\",\"w\":22,\"x\":22,\"y\":0},\"panelIndex\":\"1\",\"panelRefName\":\"panel_0\",\"version\":\"8.0.0-SNAPSHOT\"},{\"embeddableConfig\":{},\"gridData\":{\"h\":10,\"i\":\"2\",\"w\":22,\"x\":22,\"y\":7},\"panelIndex\":\"2\",\"panelRefName\":\"panel_1\",\"version\":\"8.0.0-SNAPSHOT\"},{\"embeddableConfig\":{},\"gridData\":{\"h\":10,\"i\":\"3\",\"w\":22,\"x\":0,\"y\":7},\"panelIndex\":\"3\",\"panelRefName\":\"panel_2\",\"version\":\"8.0.0-SNAPSHOT\"},{\"embeddableConfig\":{},\"gridData\":{\"h\":7,\"i\":\"4\",\"w\":22,\"x\":0,\"y\":0},\"panelIndex\":\"4\",\"panelRefName\":\"panel_3\",\"version\":\"8.0.0-SNAPSHOT\"},{\"embeddableConfig\":{},\"gridData\":{\"h\":10,\"i\":\"5\",\"w\":22,\"x\":0,\"y\":17},\"panelIndex\":\"5\",\"panelRefName\":\"panel_4\",\"version\":\"8.0.0-SNAPSHOT\"},{\"embeddableConfig\":{},\"gridData\":{\"h\":10,\"i\":\"6\",\"w\":22,\"x\":22,\"y\":17},\"panelIndex\":\"6\",\"panelRefName\":\"panel_5\",\"version\":\"8.0.0-SNAPSHOT\"}]", + "timeRestore": false, + "title": "Filebeat-Envoyproxy-Overview", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.0.0" + }, + "references": [ + { + "id": "36f872a0-5c03-11e9-85b4-19d0072eb4f2", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "80844540-5c97-11e9-8477-077ec9664dbd", + "name": "panel_1", + "type": "visualization" + }, + { + "id": "38f96190-5c99-11e9-8477-077ec9664dbd", + "name": "panel_2", + "type": "visualization" + }, + { + "id": "7e4084e0-5c99-11e9-8477-077ec9664dbd", + "name": "panel_3", + "type": "visualization" + }, + { + "id": "0a994af0-5c9d-11e9-8477-077ec9664dbd", + "name": "panel_4", + "type": "visualization" + }, + { + "id": "ab48c3f0-5ca6-11e9-8477-077ec9664dbd", + "name": "panel_5", + "type": "visualization" + } + ] +} \ No newline at end of file diff --git a/testdata/package/example/1.2.0-rc1/kibana/visualization/0a994af0-5c9d-11e9-8477-077ec9664dbd.json b/testdata/package/example/1.2.0-rc1/kibana/visualization/0a994af0-5c9d-11e9-8477-077ec9664dbd.json new file mode 100644 index 000000000..65a33907f --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/kibana/visualization/0a994af0-5c9d-11e9-8477-077ec9664dbd.json @@ -0,0 +1,27 @@ +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\",\"key\":\"event.dataset\",\"negate\":false,\"params\":{\"query\":\"envoyproxy.log\"},\"type\":\"phrase\",\"value\":\"envoyproxy.log\"},\"query\":{\"match\":{\"event.dataset\":{\"query\":\"envoyproxy.log\",\"type\":\"phrase\"}}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"query\":{\"language\":\"lucene\",\"query\":\"\"}}" + }, + "title": "Top User Agents [Filebeat Envoyproxy]", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"field\":\"user_agent.name.keyword\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":5},\"schema\":\"segment\",\"type\":\"terms\"}],\"params\":{\"addLegend\":true,\"addTooltip\":true,\"dimensions\":{\"metric\":{\"accessor\":0,\"aggType\":\"count\",\"format\":{\"id\":\"number\"},\"params\":{}}},\"isDonut\":true,\"labels\":{\"last_level\":true,\"show\":false,\"truncate\":100,\"values\":true},\"legendPosition\":\"right\",\"type\":\"pie\"},\"title\":\"Top User Agents [Filebeat Envoyproxy]\",\"type\":\"pie\"}" + }, + "migrationVersion": { + "visualization": "7.1.0" + }, + "references": [ + { + "id": "logs-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ] +} \ No newline at end of file diff --git a/testdata/package/example/1.2.0-rc1/kibana/visualization/36f872a0-5c03-11e9-85b4-19d0072eb4f2.json b/testdata/package/example/1.2.0-rc1/kibana/visualization/36f872a0-5c03-11e9-85b4-19d0072eb4f2.json new file mode 100644 index 000000000..198819e7c --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/kibana/visualization/36f872a0-5c03-11e9-85b4-19d0072eb4f2.json @@ -0,0 +1,27 @@ +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\",\"key\":\"event.dataset\",\"negate\":false,\"params\":{\"query\":\"envoyproxy.log\"},\"type\":\"phrase\",\"value\":\"envoyproxy.log\"},\"query\":{\"match\":{\"event.dataset\":{\"query\":\"envoyproxy.log\",\"type\":\"phrase\"}}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"query\":{\"language\":\"kuery\",\"query\":\"\"}}" + }, + "title": "Top HTTP Response Codes [Filebeat Envoyproxy]", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"field\":\"http.response.status_code\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":5},\"schema\":\"segment\",\"type\":\"terms\"}],\"params\":{\"bucket\":{\"accessor\":0,\"aggType\":\"terms\",\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"number\",\"missingBucketLabel\":\"Missing\",\"otherBucketLabel\":\"Other\"}},\"params\":{}},\"maxFontSize\":72,\"metric\":{\"accessor\":1,\"aggType\":\"count\",\"format\":{\"id\":\"number\"},\"params\":{}},\"minFontSize\":18,\"orientation\":\"single\",\"scale\":\"linear\",\"showLabel\":false},\"title\":\"Top HTTP Response Codes [Filebeat Envoyproxy]\",\"type\":\"tagcloud\"}" + }, + "migrationVersion": { + "visualization": "7.1.0" + }, + "references": [ + { + "id": "logs-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ] +} \ No newline at end of file diff --git a/testdata/package/example/1.2.0-rc1/kibana/visualization/38f96190-5c99-11e9-8477-077ec9664dbd.json b/testdata/package/example/1.2.0-rc1/kibana/visualization/38f96190-5c99-11e9-8477-077ec9664dbd.json new file mode 100644 index 000000000..84ae9d5c0 --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/kibana/visualization/38f96190-5c99-11e9-8477-077ec9664dbd.json @@ -0,0 +1,27 @@ +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\",\"key\":\"event.dataset\",\"negate\":false,\"params\":{\"query\":\"envoyproxy.log\"},\"type\":\"phrase\",\"value\":\"envoyproxy.log\"},\"query\":{\"match\":{\"event.dataset\":{\"query\":\"envoyproxy.log\",\"type\":\"phrase\"}}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"query\":{\"language\":\"kuery\",\"query\":\"\"}}" + }, + "title": "Requests per Source [Filebeat Envoyproxy]", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"field\":\"source.address.keyword\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":5},\"schema\":\"segment\",\"type\":\"terms\"}],\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"dimensions\":{\"x\":null,\"y\":[{\"accessor\":0,\"aggType\":\"count\",\"format\":{\"id\":\"number\"},\"params\":{}}]},\"grid\":{\"categoryLines\":false},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Count\"},\"drawLinesBetweenPoints\":true,\"mode\":\"stacked\",\"show\":\"true\",\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\"}],\"times\":[],\"type\":\"histogram\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Count\"},\"type\":\"value\"}]},\"title\":\"Requests per Source [Filebeat Envoyproxy]\",\"type\":\"histogram\"}" + }, + "migrationVersion": { + "visualization": "7.1.0" + }, + "references": [ + { + "id": "logs-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ] +} \ No newline at end of file diff --git a/testdata/package/example/1.2.0-rc1/kibana/visualization/7e4084e0-5c99-11e9-8477-077ec9664dbd.json b/testdata/package/example/1.2.0-rc1/kibana/visualization/7e4084e0-5c99-11e9-8477-077ec9664dbd.json new file mode 100644 index 000000000..2bfffed4c --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/kibana/visualization/7e4084e0-5c99-11e9-8477-077ec9664dbd.json @@ -0,0 +1,27 @@ +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\",\"key\":\"event.dataset\",\"negate\":false,\"params\":{\"query\":\"envoyproxy.log\"},\"type\":\"phrase\",\"value\":\"envoyproxy.log\"},\"query\":{\"match\":{\"event.dataset\":{\"query\":\"envoyproxy.log\",\"type\":\"phrase\"}}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"query\":{\"language\":\"kuery\",\"query\":\"\"}}" + }, + "title": "Unique Domains [Filebeat Envoyproxy]", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{\"field\":\"url.domain.keyword\"},\"schema\":\"metric\",\"type\":\"cardinality\"}],\"params\":{\"addLegend\":false,\"addTooltip\":true,\"metric\":{\"bucket\":{\"accessor\":0,\"aggType\":\"terms\",\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"missingBucketLabel\":\"Missing\",\"otherBucketLabel\":\"Other\"}},\"params\":{}},\"colorSchema\":\"Green to Red\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"invertColors\":false,\"labels\":{\"show\":false},\"metricColorMode\":\"None\",\"metrics\":[{\"accessor\":0,\"aggType\":\"cardinality\",\"format\":{\"id\":\"number\"},\"params\":{}}],\"percentageMode\":false,\"style\":{\"bgColor\":false,\"bgFill\":\"#000\",\"fontSize\":60,\"labelColor\":false,\"subText\":\"\"},\"useRanges\":false},\"type\":\"metric\"},\"title\":\"Unique Domains [Filebeat Envoyproxy]\",\"type\":\"metric\"}" + }, + "migrationVersion": { + "visualization": "7.1.0" + }, + "references": [ + { + "id": "logs-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ] +} \ No newline at end of file diff --git a/testdata/package/example/1.2.0-rc1/kibana/visualization/80844540-5c97-11e9-8477-077ec9664dbd.json b/testdata/package/example/1.2.0-rc1/kibana/visualization/80844540-5c97-11e9-8477-077ec9664dbd.json new file mode 100644 index 000000000..f4b188338 --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/kibana/visualization/80844540-5c97-11e9-8477-077ec9664dbd.json @@ -0,0 +1,27 @@ +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\",\"key\":\"event.dataset\",\"negate\":false,\"params\":{\"query\":\"envoyproxy.log\"},\"type\":\"phrase\",\"value\":\"envoyproxy.log\"},\"query\":{\"match\":{\"event.dataset\":{\"query\":\"envoyproxy.log\",\"type\":\"phrase\"}}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"query\":{\"language\":\"kuery\",\"query\":\"\"}}" + }, + "title": "Top Domains [Filebeat Envoyproxy]", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"field\":\"url.domain.keyword\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":5},\"schema\":\"segment\",\"type\":\"terms\"}],\"params\":{\"addLegend\":true,\"addTooltip\":true,\"dimensions\":{\"metric\":{\"accessor\":0,\"aggType\":\"count\",\"format\":{\"id\":\"number\"},\"params\":{}}},\"isDonut\":true,\"labels\":{\"last_level\":true,\"show\":false,\"truncate\":100,\"values\":true},\"legendPosition\":\"right\",\"type\":\"pie\"},\"title\":\"Top Domains [Filebeat Envoyproxy]\",\"type\":\"pie\"}" + }, + "migrationVersion": { + "visualization": "7.1.0" + }, + "references": [ + { + "id": "logs-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ] +} \ No newline at end of file diff --git a/testdata/package/example/1.2.0-rc1/kibana/visualization/ab48c3f0-5ca6-11e9-8477-077ec9664dbd.json b/testdata/package/example/1.2.0-rc1/kibana/visualization/ab48c3f0-5ca6-11e9-8477-077ec9664dbd.json new file mode 100644 index 000000000..91291e4ae --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/kibana/visualization/ab48c3f0-5ca6-11e9-8477-077ec9664dbd.json @@ -0,0 +1,27 @@ +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\",\"key\":\"event.dataset\",\"negate\":false,\"params\":{\"query\":\"envoyproxy.log\"},\"type\":\"phrase\",\"value\":\"envoyproxy.log\"},\"query\":{\"match\":{\"event.dataset\":{\"query\":\"envoyproxy.log\",\"type\":\"phrase\"}}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"query\":{\"language\":\"kuery\",\"query\":\"event.dataset:envoyproxy.log\"}}" + }, + "title": "Proxy Request Distribution [Filebeat Envoyproxy] ", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"field\":\"envoyproxy.proxy_type.keyword\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":5},\"schema\":\"segment\",\"type\":\"terms\"}],\"params\":{\"addLegend\":true,\"addTooltip\":true,\"dimensions\":{\"metric\":{\"accessor\":0,\"aggType\":\"count\",\"format\":{\"id\":\"number\"},\"params\":{}}},\"isDonut\":true,\"labels\":{\"last_level\":true,\"show\":false,\"truncate\":100,\"values\":true},\"legendPosition\":\"right\",\"type\":\"pie\"},\"title\":\"Proxy Request Distribution [Filebeat Envoyproxy] \",\"type\":\"pie\"}" + }, + "migrationVersion": { + "visualization": "7.1.0" + }, + "references": [ + { + "id": "logs-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ] +} \ No newline at end of file diff --git a/testdata/package/example/1.2.0-rc1/manifest.yml b/testdata/package/example/1.2.0-rc1/manifest.yml new file mode 100644 index 000000000..3c81bbe97 --- /dev/null +++ b/testdata/package/example/1.2.0-rc1/manifest.yml @@ -0,0 +1,30 @@ +format_version: 1.0.0 + +name: example +description: This is the example integration +version: 1.2.0-rc1 +title: Example Integration +categories: ["crm", "azure", "cloud"] +type: integration +release: ga + +owner.github: "ruflin" + +conditions: + kibana: + version: "^7.16.0 || ^8.0.0" + +screenshots: + - src: /img/kibana-envoyproxy.jpg + title: IP Tables Ubiquity Dashboard + size: 1492x1464 + type: image/png + +policy_templates: + - name: logs + title: Logs datasource + description: Datasource for your log files. + categories: + - datastore + inputs: + - type: foo diff --git a/testdata/package/experimental/0.0.1/manifest.yml b/testdata/package/experimental/0.0.1/manifest.yml deleted file mode 100644 index da4c54d09..000000000 --- a/testdata/package/experimental/0.0.1/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -format_version: 1.0.0 - -name: experimental -description: Experimental package, should be set by default -version: 0.0.1 -title: Experimental -categories: ["aws"] -type: solution - -