-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Initial definition of content pack[age]s #777
Changes from 7 commits
c6687d6
161844d
671f798
8e8d598
7f71346
7287c08
36218c8
f772e49
45e37b0
874fbc3
9cd4e3e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
spec: | ||
additionalContents: false | ||
contents: | ||
- description: Folder containing Kibana dashboard assets | ||
type: folder | ||
name: dashboard | ||
required: false | ||
contents: | ||
- description: A dashboard asset file | ||
type: file | ||
contentMediaType: "application/json" | ||
pattern: '^{PACKAGE_NAME}-.+\.json$' | ||
forbiddenPatterns: | ||
- '^.+-(ecs|ECS)\.json$' # ECS suffix is forbidden | ||
- description: File containing saved object tag definitions for assets | ||
type: file | ||
contentMediaType: "application/x-yaml" | ||
name: "tags.yml" | ||
required: false | ||
$ref: "./tags.spec.yml" | ||
- description: Folder containing Kibana SLO assets | ||
type: folder | ||
name: slo | ||
required: false | ||
contents: | ||
- description: An SLO asset file | ||
type: file | ||
contentMediaType: "application/json" | ||
pattern: '^{PACKAGE_NAME}-.+\.json$' | ||
forbiddenPatterns: | ||
- '^.+-(ecs|ECS)\.json$' # ECS suffix is forbidden |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
## | ||
## Describes the specification for a routing rules yml file | ||
## | ||
spec: | ||
# Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability | ||
type: array | ||
description: Tags automatically added to saved object assets. | ||
items: | ||
type: object | ||
additionalProperties: false | ||
properties: | ||
text: | ||
description: Tag name. | ||
type: string | ||
asset_types: | ||
description: > | ||
This tag will be added to all the assets of these types included in the package. | ||
If two or more pacakges define the same tag, there will be just one tag created in Kibana and | ||
all the assets will be using the same tag. | ||
type: array | ||
items: | ||
type: string | ||
enum: # added the same types that are allowed under kibana folder | ||
- dashboard | ||
- visualization | ||
- search | ||
- map | ||
- lens | ||
- index_pattern | ||
- security_rule | ||
- csp_rule_template | ||
- ml_module | ||
- osquery_pack_asset | ||
- osquery_saved_query | ||
asset_ids: | ||
description: > | ||
Asset IDs where this tag is going to be added. | ||
If two or more pacakges define the same tag, there will be just one tag created in Kibana and | ||
all the assets will be using the same tag. | ||
type: array | ||
items: | ||
type: string | ||
oneOf: | ||
- required: | ||
- text | ||
- asset_types | ||
- required: | ||
- text | ||
- asset_ids |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
## | ||
## Describes the specification for the content package's main manifest.yml file | ||
## | ||
spec: | ||
# Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability | ||
type: object | ||
additionalProperties: false | ||
definitions: | ||
discovery: | ||
description: > | ||
Description of the data this package can be used with. It can be used to discover | ||
the package from elements in the existing data. | ||
type: object | ||
additionalProperties: false | ||
properties: | ||
fields: | ||
description: Description of the fields this package can be used with. | ||
type: array | ||
items: | ||
type: object | ||
properties: | ||
name: | ||
description: Name of the field. | ||
type: string | ||
properties: | ||
format_version: | ||
description: The version of the package specification format used by this package. | ||
$ref: "../integration/manifest.spec.yml#/definitions/version" | ||
name: | ||
description: The name of the package. | ||
type: string | ||
pattern: '^[a-z0-9_]+$' | ||
examples: | ||
- apache | ||
title: | ||
$ref: "../integration/manifest.spec.yml#/definitions/title" | ||
description: | ||
$ref: "../integration/manifest.spec.yml#/definitions/description" | ||
version: | ||
description: The version of the package. | ||
$ref: "../integration/manifest.spec.yml#/definitions/version" | ||
source: | ||
$ref: "../integration/manifest.spec.yml#/definitions/source" | ||
type: | ||
description: The type of package. | ||
type: string | ||
enum: | ||
- content | ||
examples: | ||
- content | ||
categories: | ||
$ref: "../integration/manifest.spec.yml#/definitions/categories" | ||
conditions: | ||
$ref: "../integration/manifest.spec.yml#/definitions/conditions" | ||
discovery: | ||
$ref: "#/definitions/discovery" | ||
icons: | ||
$ref: "../integration/manifest.spec.yml#/definitions/icons" | ||
screenshots: | ||
$ref: "../integration/manifest.spec.yml#/definitions/screenshots" | ||
owner: | ||
$ref: "../integration/manifest.spec.yml#/definitions/owner" | ||
required: | ||
- format_version | ||
- name | ||
- title | ||
- description | ||
- version | ||
- type | ||
- owner |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
## | ||
## Entrypoint of "content packages" specification. | ||
## The specification is considered "beta" at the moment, so it may change until we release it as GA. | ||
## | ||
## Describes the folders and files that make up a package. | ||
## | ||
spec: | ||
additionalContents: false | ||
totalContentsLimit: 65535 | ||
totalSizeLimit: 50MB | ||
sizeLimit: 30MB | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are these limits related to the whole package ? As these are going to be mainly assets, probably we could set the same limits as the totalSizeLimit: 250MB
sizeLimit: 150MB There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok, in any case we will revisit this, as content packages are intended to support bigger sizes than other packages. |
||
configurationSizeLimit: 5MB | ||
relativePathSizeLimit: 3MB | ||
fieldsPerDataStreamLimit: 2048 | ||
mrodm marked this conversation as resolved.
Show resolved
Hide resolved
|
||
release: beta | ||
contents: | ||
- description: The main package manifest file | ||
type: file | ||
contentMediaType: "application/x-yaml" | ||
sizeLimit: 5MB | ||
name: "manifest.yml" | ||
required: true | ||
$ref: "./manifest.spec.yml" | ||
- description: The package's CHANGELOG file | ||
type: file | ||
contentMediaType: "application/x-yaml" | ||
name: "changelog.yml" | ||
required: true | ||
$ref: "../integration/changelog.spec.yml" | ||
- description: The package's license file | ||
type: file | ||
contentMediaType: "text/plain" | ||
name: "LICENSE.txt" | ||
required: false | ||
- description: Folder containing documentation for the package | ||
type: folder | ||
name: docs | ||
required: true | ||
$ref: "../integration/docs/spec.yml" | ||
- description: Folder containing images for the package | ||
type: folder | ||
name: img | ||
required: false | ||
$ref: "../integration/img/spec.yml" | ||
- description: Folder containing Kibana assets provided by the package | ||
type: folder | ||
name: kibana | ||
required: false | ||
$ref: "./kibana/spec.yml" | ||
- description: Configuration file to process the results returned from the package validation. This file is just for package validation and it should be ignored when installing or using the package. | ||
type: file | ||
contentMediaType: "application/x-yaml" | ||
name: "validation.yml" | ||
required: false | ||
$ref: "../integration/validation.spec.yml" | ||
|
||
versions: | ||
- before: 3.4.0 | ||
patch: | ||
- op: remove | ||
path: "/contents" # Package type not available before this version. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,13 @@ | ||
spec: | ||
additionalContents: false | ||
contents: | ||
- description: Main README file | ||
type: file | ||
contentMediaType: "text/markdown" | ||
name: "README.md" | ||
required: true | ||
- description: Other README files (can be used by policy templates) | ||
type: file | ||
contentMediaType: "text/markdown" | ||
pattern: '^.+.md' | ||
required: false | ||
spec: | ||
additionalContents: false | ||
contents: | ||
- description: Main README file | ||
type: file | ||
contentMediaType: "text/markdown" | ||
name: "README.md" | ||
required: true | ||
- description: Other README files (can be used by policy templates) | ||
type: file | ||
contentMediaType: "text/markdown" | ||
pattern: '^.+.md' | ||
required: false |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
spec: | ||
additionalContents: true # TODO: Add definition for this dir? | ||
mrodm marked this conversation as resolved.
Show resolved
Hide resolved
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
- version: 0.1.0 | ||
changes: | ||
- description: Initial release | ||
type: enhancement | ||
link: https://github.com/elastic/package-spec/pull/777 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# Reference package of content type |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added detection of unused rules, used by now only on tests, we could warn in the future about this.