Code structure
You might be tempted to contribute to StackStorm by this point. Let us walk you through the code a bit.
StackStorm/st2 Repo
StackStorm is made up of individual services: st2auth
, st2api
, st2rulesengine
,
st2sensorcontainer
, st2actionrunner
, st2notifier
.
StackStorm also has a CLI and client library. Code for all these services and components are laid out in different folders in the repo root.
st2common
Common code that contains DB and API data models, utility functions and common service code
that all of StackStorm needs. Each service package (deb/rpm) has a dependency on the st2common
package. So if you want common code that should be shared amongst components written, you’d add
them here.
st2api
This folder contains code for API controllers in StackStorm. APIs are versioned and so are controllers.
Experimental controllers are added to exp
folder inside st2api
and when they mature, they are
moved to folders containing versioned controllers.
st2auth
Contains code for st2auth
endpoint. Since this endpoint needs to deployed separately than
st2api
, it is available as a separate app.
st2actions
Contains code for action runners. A new runner written for StackStorm would be added to
st2actions/st2actions/runners
. Also, this folder contains the code for worker node that scans
RabbitMQ for incoming executions.
Notifier and results tracker are also part of this code base. Notifier is the component that sends notification triggers and action triggers at the end of action execution. Results tracker is an advanced async results querier for certain kind of runners like 3rd party integrations, where execution of an action is kicked off and you have to poll the integrations APIs to collect results.
st2client
Contains code for both StackStorm client library and StackStorm CLI bundled into one folder. We will eventually split them.
st2debug
If you are familiar with st2-submit-debug-info
tool, the code for that is present in this folder.
This tool provides a way to share logs and other info with a StackStorm engineer for troubleshooting.
st2reactor
Contains code for both sensor container and rules engine.
st2tests
Shared code containing fixtures and test utilities that helps in unit and integration testing for all StackStorm components.