The titan Package Manager
The titan Package Manager is in charge of storing and providing brick configurations. It can be reached via a REST API that serves under the port number HOST:8087 (per default).

Building/ running
To run the service simply navigate to the root of flowengine-go and use go run ./cmd/packagemanager
or to create an executable file go build ./cmd/packagemanager.
The command line interface features following arguments;
| Name | Options (default) | Purpose |
|---|---|---|
| port | (8087) | Port on which the Package Manager serves |
| log-level | info/debug/warning/error (info) | Log level |
| log-to-kafka | (false) | Flag: use kafka hook for logging |
| kafka | (10.14.0.23:9092) | host:port of kafka broker |
| service-topic | (titan.servicelogs) | kafka topic for logs |
| config-file | (internal/app/packagemanager/config.yaml) | Configuration file |
The default configuration file contains the following items:
| Name | Type | Doc (default value) | Constraints |
|---|---|---|---|
| database | string | URL of the Database (127.0.0.1:27017) | |
| user-manager | string | URL of the User Service (http://127.0.0.1:9000) | |
| allowed-origins | list | List of allowed origins for CORS request | [not null] |
| ignore-package-content | list | List ignored brick package folder content *1 | [not null] |
| package-folder | string | Local folder where brick packages are stored (./brickPackages) | |
| python | string | Absolute path to the installation of python3.7 (/usr/bin/python3.7) | |
| service-ids | list of string | list of ids of services allowed to access the PackageManager |
*1 this list is added to a default list of ignored content which contains: .git, .gitignore, .markdownlintrc.yml, .gitlab-ci.yml, README.md, doc
Generally, all settings listed above can be done also via environment variables, whereby the variables are composed of a prefix (TITAN_PM) and the argument using snake case:
TITAN_PM_ARGUMENT, e.g. TITAN_PM_LOG_LEVEL
Usage
Get available bricks
API function:
endpoint: /packagemanager/bricks/ Type: GET
Request data: optional list of packageIDs
Response data: List of Available Bricks in json format
Get meta data of packages
API function:
endpoint: /packagemanager/packages/ Type: GET
Request data: optional list of packageIDs
Response data: List of Package Metadata in json format
Uploading a brick package
API function:
endpoint: /packagemanager/packages/ Type: POST
Request data: A brick package as multipart form data with the key "package"
Response data: List of Available Bricks in json format
Users with upload rights can post brick packages.
Installing a brick package
API function:
endpoint: /packagemanager/packages/<packageId string> Type: POST
Request data: No data
Response data: List of Available Bricks in json format
Get a packages bricks
API function:
endpoint: /packagemanager/packages/<packageId string>/bricks Type: GET
Request data: No data
Response data: List of Available Bricks in json format Only available to titan services
Delete Package
API function:
endpoint: /packagemanager/packages/<packageId string> Type: DELETE
Only available to titan services.
Get brick code
API function:
endpoint: /packagemanager/source/<string:BrickId>>.zip Type: GET
Request data: No data needs to be send
Response data: content of the compressed brick code
Get time when brick code was last modified
API function:
endpoint: /packagemanager/bricks/<string:BrickId>>/lastmodified Type: GET
Request data: No data needs to be send
Response data: Time when brick code was last modified in unix format
A brick package
Brick packages can be send in the form of zip, tar, tar.gz archives.
Installation of new Bricks to the Titan platform
Register a ControlPeer
API function:
/packagemanager/controlpeers/ Type: POST
Request data: ControlPeer Address string.
Response data: No data is returned.
Deregister a ControlPeer
API function:
/packagemanager/controlpeers/ Type: DELETE
Request data: ControlPeer Address string.
Response data: No data is returned.