Project: Chaos Toolkit (Observability and Analysis / Chaos Engineering)
File: CHANGELOG.md

Bumped Github actions to build and publish container images Building container images for amd64 and arm64 architectures Make the entrypoint of the default container image to NOT be an absolute path to be more adaptable from the Kubernetes operator [POTENTIALLY BREAKING] Removed the `logzero` dependency as the package is now not maintained any longer. As all the Chaos Toolkit extensions directly import their loggers as `from logzero import loggger` the chaos toolkit now manages that logger and inject a fake `logzero` module into `sys.path` to replace the logger with the chaostoolkit one. Its behavior is the same with the same color scheme and file support. But at least we won't have to import that package any longer. Gradually, I will remove the dependency from all extensions. Meanwhile, you can now directly access the Chaos Toolkit logger as: ```python import logging logger = logging.getLogger("chaostoolkit") ``` Refactored the cli module into sub-packages to help readability of each command. This will be the basis for future work on making some of the commands cleaner and more modern, it will also help when adding new commands Bumped `chaostoolkit-lib` to 1.42.0 Moved the logging configuration function to `chaostoolkit-lib` (requires chaostoolkit-lib 1.42.0) Upgraded various GH actions so that we upgrade to nodejs 20 Script path name Don't upload assets to GH release, leave them on Pypi only Bump dependencies Upgrade container images to latest baseline version Switched to pdm to build containers to better pin dependencies Ensure Pypy package uses the tag version Switched to to manage the package Dropped support for Python 3.7 as it has been EOL for a while now. We will also drop support for Python 3.8 in 2024. Always send deviated notication when status is indeed deviated Switched to ruff to lint code Switched to direct Slack invite link Make sure to use latest importlib-metadata package even on Python 3.7 As we now depend on recent versions of `importlib_metadata` we need to abide by its breaking compability changes. Specially at the bottom of the section . Fixes Support to define the runtime strategies for hypothesis and rollbacks from within the experiment itself. Usng the following block: ```json { "runtime": { "hypoethesis": { "strategy": "after-method-only" }, "rollbacks": { "strategy": "always" } } } ``` Only one of the two may be set. In all cases, these can be overriden by the CLI corresponding flags. Addressed issue# 272 - removed vulnerabilities on container image built using Dockerfile-full Addressed issue# 272 - removed vulnerabilities on container image built using Dockerfile-basic Add support for control-file arguments to the the `chaos run` command Updated dependencies Upgraded GitHub actions Full and basic container images abased of Debians bullseye `--log-file-level`: a new root level flag to set the log level of the `chaostoolkit.log` file Bump to Python 3.7 as a baseline since Python 3.6 is EOL Add Python 3.10 support Upgraded to python-json-logger 2.0+ Fixed json logger format as per Updated to chaostoolkit-lib

to support new `dry` flag Updated release workflow to remove duplicate `needs` properties Added `.github/workflows/check_pr.yaml` which checks if a PR has modified the CHANGELOG.md and if it changed/added tests Moved `pip install --upgrade pip setuptools wheel` step from `install-dev` to `install` in the Makefile Updated `.github/workflows/check_pr.yaml` to check that both `CHANGELOG.md` and `chaostoolkit/init.py` get updated in line with a new version Updated `Makefile` to specify `python3` instead of `python` Added dry run options: `--dry=activities` runs all activities as dry run. (same as the old flag) `--dry=actions` runs all actions as dry run. `--dry=probes` runs all probes as dry run. `--dry=pause` runs all activities with no pausing. Actually update the version of the lib on release Fixed version extracting in `setup.py` Bump version of `chaostoolkit-lib` to `~=1.21` Switched from pycodestyle/pylama to `black`, `flake8`, `isort` Update CI builds to build, lint, and test Applied `black`, `flake8`, and `isort` across the codebase Ran `pyupgrade --py36-plus` Fixed typo in `chaos init` prompt from `reognised` to `recognised` Changed `--hypothesis-strategy` method `continously` to `continuously` Changed `Schedule` parameter from `continoushypothesisfrequency` to `continuoushypothesisfrequency` Changed other minor typos Add `.github/workflows/closestaleissues.yaml` to mark Issues stale after `365` days Also closes them after `7` days of being `Stale` Dockerfile now requires `--build-arg ctkversion=<version>` when building `.github/workflows/release.yaml` now uses a retry step for Docker builds to ensure we don't lose a race condition between PyPi and our build step Fixed `--var` and `--var-file` arguments parsing by addition of missing return into `validate_vars` function Remove Python 3.5 support. at least now until end of 2021 when . LAST VERSION SUPPORTING PYTHON 3.5 Updated build scripts to support latest setuptools to build package properly Updated pyyaml to due to CVE-2020-14343 Pinning Chaos Toolkit lib to strictly less than 1.19.0 as it'll be the last one supporting Python 3.5 Moved to setup.cfg to manage build Pass extra variables down to the runner for substitution Add the `--hypothesis-strategy` flag to the `run` command. It defines how the steady-state hypothesis is applied. One of: `default` is the classic mode where the hypothesis is run before and after the method `before-method-only` runs the hypothesis once only before the method `after-method-only` runs the hypothesis once only after the method. This is useful when you know your environment is not in the appropriate state before the conditions are applied `during-method-only` runs the hypothesis repeatedly during the method but not before nor after `continously` runs the hypothesis repeatedly during the method as well as before and after as usual Add the `--hypothesis-frequency` flag to the `run` command. This flag is only meaningful with `--hypothesis-strategy=during-method-only|continously`. It takes a floating number indicating how many seconds to wait between two executions of the hypothesis Add the `--fail-fast` flag to the `run` command. This flag is only meaningful with `--hypothesis-strategy=during-method-only|continously`. If set, this indicates the experiment should be marked as deviating immediately. When not provided, the hypothesis runs until the end of the method without terminating the experiment Bump dependency on chaostoolkit-lib to

to support the steady state strategy The `--var` and `--var-file` flags to override values in the configuration, and secrets for var files, blocks of the experiments. They take precedence for inlined values and allow to have data files managed externally to the experiment itself when environment variables are not an option for example. Commands to get/set/remove an entry from the settings as well as show the settings file entirely Rollbacs runtime strategy flag Backwars compatible default strategy to run the rollbacks. This will run unless of a failed probe in the hypothesis or when a control interrupted the experiment (not passing the flag is equivalent to this): ``` $ chaos run --rollback-strategy=default experiment.json ``` Always run the rollbacks: ``` $ chaos run --rollback-strategy=always experiment.json ``` Never run the rollbacks: ``` $ chaos run --rollback-strategy=never experiment.json ``` Run the rollbacks only when deviated: ``` $ chaos run --rollback-strategy=deviated experiment.json ``` New flag `--no-verify-tls` to `chaos run` and `chaos validate`commands; it disables TLS certificate verification when source is downloaded over a self-signed certificate endpoint. Migrates CI/CD from TravisCI to Github Actions [Potentially breaking] Build the Docker image with a non-root user by default (rootless container). This is a potentially breaking change if you created your own docker image using the chaostoolkit/chaostoolkit as a base image. Allow validating experiments downloaded from URL: `chaos validate http://...` Added build for Python 3.8 Fixed `importlib_metadata` different naming between Python 3.8 and earlier Add critical level color to the logger Add chaos init exports experiment also in yaml format ``` chaos init --experiment-path prod-experiment.yaml ``` Fixed Dockerfile so the right dependencies are installed at build time Replaced pkgresource usage with python 3.8 backport importlibmetadata Bump chaostoolkit-lib dependency to 1.8.0 Load global controls before we even read the experiments so we can apply them before and after loading the experiment. Support for structured logging Moved loading global controls back into `run_experiment` itself Bump to Chaos Toolkit library 1.2.0 Allow to declare and load controls from settings so they are globally applied to all your runs In your settings file, at `~/.chaostoolkit-lib/settings.yaml` add, for instance: ```yaml controls: my-own-control: provider: module: mypackage.mycontrole_module type: python ``` This will load `mypackage/mycontrole_module.py` from your `PYTHONPATH` and use it as a . Remove MacOSX build. Way too long for any benefits. Build against stable Python 3.7 Ensure exit code is set in all cases Cleaned up package metadata Ensure requirements-dev.txt is bundled with the package Bumped chaostoolkit-lib to 1.0.0 Ensure we don't create installation problem by forcing a specific version Bump to chaostoolkit-lib 1.0.0rc3 Bump to chaostoolkit-lib 1.0.0rc2 Enable MacOSX travis build to ensure Chaos Toolkit does build there Handle RC versioning when building release Pin dependency versions Remove `NoReturn` import as it is not available prior Python 3.6.5 add `info` command to display basic information such as version of the toolkit core library or installed

Display also the current settings strip command name before sending it to check newer version as sometimes we get a tabulation character in there swap `logger.warn` for `logger.warning` as the former is obsolete send a `RunFlowEvent.RunDeviated` event in addition to other events when the steady state deviated after the experimental method a new global flag `chaos --settings <path>` to explicitely specify the location of the Chaos Toolkit settings file experiments can now also be loaded from a HTTP(s) resource (with or without auth) as per by default, the run command will now set the exit code to 1 when the experiment is not successful (interrupted, aborted or failed). This can be bypassed by plugins so they have the opportunity to process the journal as well. In that case, they must set the exit code themselves to play nicely. Do not notify of experiment validation when running it (too noisy) Encode date, datetime, decimal and UUID to JSON explicitely Publish events for each step of the flow New `chaos init` wizard instructions Returning journal and experiment from run and validate commands for downstream applications Better guidance on init Create an empty experiment when no discovery was run beforehand Returns the generated experiment to external callers Name of the journal output from the run command is now `journal.json` rather than `chaos-report.json` Renamed the debug log from `experiment.log` to `chaostoolkit.log` because it is used for any commands, even when the experiment is not required The debug log is now appending The command being run is logged into the debug log You can bypass argument in the init command via empty string Allow to create steady-state hypothesis from init command Allow to set rollbacks from init command Pass command executed to checker for compatability Better logging of failed discovery Depending now on chaostoolkit-lib 0.14.0 Steady state hypothesis is not mandatory when exploring weaknesses New init feature New discovery feature Version check is now done server-side to remove semver dependency Log to file by default and added a flag to disable it Updated to chaostoolkit-lib 0.8.0 Added log-file flag to log the run (at DEBUG level) to a file Bumped to chaostoolkit-lib 0.7.0 Proper contact email address Ensuring latest spec version support from chaostoolkit-lib 0.6.0 Minor improvements of the version check Triggering the documentation build on new releases so the doc is updated with the latest tag information Checking for newer release of the toolkit at runtime Enable CLI extensions Provide a change directory argument when using the CLI Proper verbose log level Not a universal wheel distribution Removed old dependencies Package up extra files when installed from source Core code now lives in a dedicated project . chaostoolkit is now just the CLI of running experiments Documentation has moved to its own project Ensure CNAME is set for the docs to be resolved via chaostoolkit.org Installing dependencies along with the command Using a regular user to run from a Docker container Switched to an alpine based Docker image for smaller footprint Better installation docs Initial release