Daemon catalog

Daemon catalog

There are 2 subtypes of Daemon catalogs.

SubType : cronJob

 

soa.json for type=daemon
{ "type": "daemon", "subType": "cronJob", "name": "kubernetes", "group": "damongroup", "description": "This is the description of your cronJob daemon", "tab": { "main": "kubernetes_cronjob", "sub": "Subtype_Daemon" }, "port": 4100, "version": "1", "documentation": { "readme": "/doc/markupfile", "release": "/doc/markupfile" }, //Search criteria "tags": ["tag1", "tag2"], "attributes": { "att1": ["att1.1", "att1.2"], "att2": ["att2.1", "att2.2"] }, "program": ["soajs"], //Configuration "maintenance": { "port": { "type": "inherit" }, "readiness": "/heartbeat" }, "prerequisites": { "cpu": " ", "memory": " " }, //Custom profile "profile": { //free to add whatever you want } }

Variable

Required

description

example

Default

Variable

Required

description

example

Default

UI meta data

type

Yes

The following type is supported: static, service, daemon, multi, custom (anything else)

if not set the default type will be custom.

custom

subtype

 

 

 

daemons

tab

 

 

 

-

name

Yes

The name of the daemon has to be unique and not been used by other daemons at the API catalog.

If the repoName is : xx.pay.merchant-daemon 
Then your daemon name should be: "merchant-daemon"

 

group

Yes

The group of the daemon, make sure you set the right group to properly display the daemon under the right group at the daemon catalog.

The daemon Group should reflect the system the service belongs to "Payment"

 

description

No

The daemon description to appear in the daemon catalog UI

"This is a string"

-

Search meta data

tags

No

 

 

-

attributes

No

 

 

-

program

No

 

 

-

Documentation meta data

documentation

No

 

 

-

Type meta data

swaggerFilename

No

The location of the service swagger file from the repository root. if not set soajs will look for swagger.yml or swagger.json at the root folder.

"/doc/swagger.yml"

swagger.json

port

No

The port of the daemon. make sure it is unique and not being used by any other daemon at the API catalog. 

4100

 

version

Yes

The version of the daemon. make sure it has the following syntax: a string of /[0-9]+(.[0-9]+)?/

"1" or "1.1"

"1"

maintenance

No

The heartbeat route to probe the health status of the service. 

example
{ "port": { "type": "inherit" }, "readiness": "/heartbeat", "commands": [ {"label": "reload", "path": "/reload", "icon": "provision"} ] }

 

prerequisites

No

 

 

 

Maintenance Icon
For maintenance SOAJS is using font awesome, check out the available icons at https://fontawesome.com/icons?d=gallery 

For example, if you choose the wrench icon as follows :

example
{ "port": { "type": "inherit" }, "readiness": "/heartbeat", "commands": [ {"label": "My Command", "path": "/mypath", "icon": "wrench"} ] }
example
{ "port": { "type": "inherit" }, "readiness": "/heartbeat", "commands": [ {"label": "My Command", "path": "/mypath", "icon": "wrench"} ] }

 


subType : daemon

The SOAJS daemon has extra parameters where the user can add specifically for this subType.

 

soa.json for type=daemon
{ "type": "daemon", "subType": "daemon", "name": "damonss", "group": "damongroup", "description": "This is the description of your daemon of type soajs", "tags": ["tag1", "tag2"], "attributes": { "att1": ["att1.1", "att1.2"], "att2": ["att2.1", "att2.2"] }, "program": ["soajs"], "tab": { "main": "kubernetes cronjob", "sub": "Subtype Daemon" }, "documentation": { "readme": "/doc/markupfile", "release": "/doc/markupfile" }, "port": 4100, "version": "1", "extKeyRequired": true, "oauth": true, "urac": true, "urac_Profile": true, "urac_ACL": false, "tenant_Profile": false, "provision_ACL": false, "requestTimeout": 30, "requestTimeoutRenewal": 5, "maintenance": { "port": { "type": "inherit" }, "readiness": "/heartbeat" }, "prerequisites": { "cpu": " ", "memory": " " } }

Soajs Specific Variables

Required

description

example

Default

Soajs Specific Variables

Required

description

example

Default

extKeyRequired

No

To turn on multi tenancy you need to have extKeyRequired set to true

 

true

oauth

No

To turn on oauth security for this daemon. 

soajs supports 2 types of oAuth

  • oAuth0 aka JWT or webToken

  • oAuth 2.0

soajs empowers you to turn on oAuth at many different levels

  1. At the service level by adding it to soa.json
    Adding it to soa.json means you want oauth to be on for this service by default

  2. At the service > environment level from the console under: develop tab → API catalog → service settings
    Adding it at the service settings gives you the flexibility to turn it on and off per service per environment, 
    Please note that this will overwrite soa.json  

  3. At the tenant level from the console under: manage tab → multi-tenancy
    Adding it at the tenant level gives you the flexibility to turn on or off oauth per tenant.
    Please note that this will overwrite the above 2 points
    Also, you can specify the type of oauth you want (oauth0 or oauth2)

false

urac

No

To add to the request header the logged in user information 

This is super useful when soajs gateway proxy the request to your service and you need to know who is the logged-in user.

 

false

urac_Profile

No

To add to the request header the logged in user profile information 

 

false

urac_ACL

No

To add to the request header the logged in user ACL information 

 

false

tenant_profile

No

 

 

false

provision_ACL

No

To add to the request header the tenant ACL information 

 

false

requestTimeout

No

The request lifetime

 

30

requestTimeoutRenewal

No

How many times to renew the request lifetime

 

5