Extending Chaos Toolkit with Python¶
Create your new Chaos Toolkit extension project¶
All Chaos Toolkit extensions follow the same structure and you can benefit from a project generator such as cookiecutter. This will drive you through a set of basic questions for metadata and will create a local project you can then start put your code into.
Let’s use the community-driven template project:
$ pip install -U cookiecutter $ cookiecutter https://github.com/dastergon/cookiecutter-chaostoolkit.git
Where to put your code¶
There are two extension points for a Chaos Toolkit Python extension, and they are captured in two files:
It is conventional to use the
actions.py module as the place where you expose the actions that you would like to conduct as part of your Chaos Toolkit experimental method against the environment you want to inject failure into.
It’s also conventional to use the
probes.py module as the place where you can integrate with your system’s existing observability so that those values can be used either for an experiment’s Steady State Hypothesis, or as simple additional data-gathering probes that can be declared throughout an experiment’s method.
Discover on a New Extension¶
Chaos Toolkit extensions often implement functionality that assists in discovering what a system, and the extension against that system, supports. This is executed using the
chaos discover command.
When writing your own implementation of discovery you will often want to test the new functionality locally. To do this you should first execute from your extension workspace:
$ python setup.py develop
Then you can exercise your discovery functionality using the
--no-install flag on the
chaos discover command, for example:
chaos discover --no-install ext-name
Log From Your Extension¶
You can write to the Chaos Toolkit log by using the logzero package.
from logzero import logger logger.info("Hello!")
Make sure to add
logzero as an entry of the
requirements.txt file of your extension.