Package content
Packages contain the following fundamental components:
- A manifest file describing the content of a package and its dependencies.
- Deployment Components
- Runtime Context
- Static Context
- An initialization script defining the file/files to be loaded when a package is loaded.
- Arbitrary code written in Python/q which can be used when loaded by a package.
Package Structure
Packages consists of a folder with a set of files and sub-folders which each represent components that control some behavior of the overall package.
The files and sub-folders for a newly created package will look like the listing below:
$ kxi package init test-package
$ tree test-package
test-package
├── init.q
└── manifest.yaml
You can extend this to contain additional components. The following more complex package contains a database, a pipeline and arbitrary code:
└──pkg-a
├── databases
│ └── mydb
│ ├── shards
│ │ └── mydb-shard.yaml
│ └── tables
├── init.q
├── manifest.yaml
├── pipelines
│ └── pipe1.yaml
└── src
├── init.q
└── pipe1.q
Manifest File
The manifest.yaml
file can be regarded as the index of the packages and is centrally important to the use of a package. Without a defined manifest.yaml
file, a package cannot be used by kdb Insights Enterprise.
Editing the manifest file directly is not recommended.
The manifest is designed to reflect what is in the package. You should manipulate the manifest file through the kxi package
tool where possible. If you change a pipeline name in the manifest and then run the kxi package refresh
command, the manifest file changes the name back to the original name again.
On creation of a package the manifest.yaml
file will contain the following structure:
kxi package -q init test-package --force && cat test-package/manifest.yaml
# yaml-language-server: $schema=https://code.kx.com/insights/enterprise/packaging/schemas/package.json#/$defs/Manifest
uuid: 251c01eb-d16c-40b1-a9ef-b026675becc9
name: test-package
version: 0.0.1
metadata:
description: ''
authors:
- {}
entrypoints:
default: init.q
Any keys defined as part of the creation of a package must not be deleted
The following table provides a brief description of each configurable section within the manifest.yaml
and whether the definition of its content is required.
section | description | required |
---|---|---|
uuid |
The unique identifier for the package. | yes |
name |
The name associated with the package by default when building it. | yes |
version |
The version number associated with the package by default when building it. | yes |
dependencies |
Any explicit dependencies on additional packages. For more information, refer to Package dependencies. | no |
metadata |
Information about the package contents and the users who have contributed to it. | no |
entrypoints |
The set of possible q/Python files used as the initialization script for a package. For more information, refer to Package entrypoints. | no |
build |
Build, clean, and extra commands for a package. | |
system |
Information about the system conditions under which the package was generated, including the version of the CLI which was used to create the package. | no |
license |
The relative path to the license file under which the defined package is intended to be released. | no |
tables |
Tables linked to databases to deploy on kdb Insights Enterprise. | no |
databases |
The databases to deploy on kdb Insights Enterprise. | no |
pipelines |
Any Stream Processor pipeline definitions to deploy on kdb Insights Enterprise. | no |
routers |
Any Routers to deploy on kdb Insights Enterprise. | no |
reports |
Any Reports to deploy on kdb Insights Enterprise. | no |
deployment_config |
Path to deployment_config to deploy on kdb Insights Enterprise. | no |
udf_namespaces |
This denotes the tagged names which are searched when parsing the package text for user-defined functions. | no |
patches |
Patches to apply to this package. | no |
On initialization of a package you are presented with a manifest.yaml
file with the following structure:
uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
version: 0.0.1
metadata:
description: ''
authors:
- {}
entrypoints:
default: init.q