Source code for chaosmonkey.api.attacks_blueprint

"""
**Base path**: /api/1/attacks

Attacks are python modules (located in /attacks folder) that are executed to perform actual attacks.

Each attack has three main properties represented in the API:

1. **example**: a JSON example for the attack. Use it as a template to call /plans endpoints
2. **ref**: its unique identifier. module_name:AttackClass
3. **schema**: json schema that validates the json representation for the attack

"""
from flask import Blueprint
from chaosmonkey.api.hal import Document
from chaosmonkey.engine.cme_manager import manager

attacks = Blueprint("attacks", __name__)


@attacks.route("/", methods=["GET"])
[docs]def list_attacks(): """ Return a list with the available attacks and its configuration. Example:: { "attacks": [ { "example": { "args": { "filters": { "tag:Name": "playground-asg" }, "region": "eu-west-1" }, "ref": "terminate_ec2_instance:TerminateEC2Instance" }, "ref": "terminate_ec2_instance:TerminateEC2Instance", "schema": { "type": "object", "properties": { "args": { "type": "object", "properties": { "filters": { "type": "object", "properties": { "tag:Name": { "type": "string" } }, "required": [ "tag:Name" ] }, "region": { "optional": true, "type": "string" } }, "required": [ "region", "filters" ] }, "ref": { "type": "string" } } } } ], "_links": { "self": { "href": "/api/1/attacks/" } } } :return: :meth:`chaosmonkey.api.hal.document` """ attack_list = manager.get_attack_list() return Document(data={"attacks": attack_list})