...
This page documents the planning and analysis of StackStorm for this story.
Findings
These are just my feelings after doing the prototyping work in this sprint.
Surprises
The polling sensor code is run on the polling interval, whether or not there are triggers configured.
Many different kinds of state in a sensor: sensor configuration, trigger configuration, persistent state, object state.
Pros
StackStorm was very easy to get running using Docker. It does more-or-less what you expect it to do, in more-or-less the way you expect it to.
The sensors and actions are run in separate processes. This protects the system from misbehaving code in the packs. It shouldn't be possible to induce a complete failure of the StackStorm system by putting broken code into it.
While Sensors need to be written in Python to inject events into the system, Actions can be written in a variety of systems, including simply being HTTP endpoints or bash scripts. This adds a lot of flexibility to the integration platform.
StackStorm offers a comprehensive UI. While not the most polished thing in the world, it's very very good.
Cons
First, I found that developing a sensor was not straightforward. Each time I changed the sensor code, I had to reinstall the pack. There may be a more efficient way to do this but it wasn't made clear in the documentation I saw.
Second, there are a lot of ways to fail at making a sensor. It wasn't obvious how to debug it. I wound up tailing the logs. Several times I got into a situation or state where the web service backing the UI was returning a 500—such as when a sensor changed its API significantly. These were resolved by using the command line tool st2
.
Third, the developer documentation—while extensive—still failed to include Python API documentation. I wound up reading the source code to existing sensors to discover what the right way to use the APIs was.
StackStorm terminology
Amygdala is a little shy on terminology. It essentially has one major interface, which is Loader
and whose role is basically to sit on a certain channel of an AMQP connection and do something with the events that come in.
...