Webhooks

Aurora has an optional feature which allows operator to specify a file to configure a HTTP webhook to receive task state change events. It can be enabled with a scheduler flag eg -webhook_config=/path/to/webhook.json. At this point, webhooks are still considered experimental.

Below is a sample configuration:

{
  "headers": {
    "Content-Type": "application/vnd.kafka.json.v1+json",
    "Producer-Type": "reliable"
  },
  "targetURL": "http://localhost:5000/",
  "timeoutMsec": 5
}

And an example of a response that you will get back: json { "task": { "cachedHashCode":0, "assignedTask": { "cachedHashCode":0, "taskId":"vagrant-test-http_example-8-a6cf7ec5-d793-49c7-b10f-0e14ab80bfff", "task": { "cachedHashCode":-1819348376, "job": { "cachedHashCode":803049425, "role":"vagrant", "environment":"test", "name":"http_example" }, "owner": { "cachedHashCode":226895216, "user":"vagrant" }, "isService":true, "numCpus":0.1, "ramMb":16, "diskMb":8, "priority":0, "maxTaskFailures":1, "production":false, "resources":[ {"cachedHashCode":729800451,"setField":"NUM_CPUS","value":0.1}, {"cachedHashCode":552899914,"setField":"RAM_MB","value":16}, {"cachedHashCode":-1547868317,"setField":"DISK_MB","value":8}, {"cachedHashCode":1957328227,"setField":"NAMED_PORT","value":"http"}, {"cachedHashCode":1954229436,"setField":"NAMED_PORT","value":"tcp"} ], "constraints":[], "requestedPorts":["http","tcp"], "taskLinks":{"http":"http://%host%:%port:http%"}, "contactEmail":"vagrant@localhost", "executorConfig": { "cachedHashCode":-1194797325, "name":"AuroraExecutor", "data": "{\"environment\": \"test\", \"health_check_config\": {\"initial_interval_secs\": 5.0, \"health_checker\": { \"http\": {\"expected_response_code\": 0, \"endpoint\": \"/health\", \"expected_response\": \"ok\"}}, \"max_consecutive_failures\": 0, \"timeout_secs\": 1.0, \"interval_secs\": 1.0}, \"name\": \"http_example\", \"service\": true, \"max_task_failures\": 1, \"cron_collision_policy\": \"KILL_EXISTING\", \"enable_hooks\": false, \"cluster\": \"devcluster\", \"task\": {\"processes\": [{\"daemon\": false, \"name\": \"echo_ports\", \"ephemeral\": false, \"max_failures\": 1, \"min_duration\": 5, \"cmdline\": \"echo \\\"tcp port: {{thermos.ports[tcp]}}; http port: {{thermos.ports[http]}}; alias: {{thermos.ports[alias]}}\\\"\", \"final\": false}, {\"daemon\": false, \"name\": \"stage_server\", \"ephemeral\": false, \"max_failures\": 1, \"min_duration\": 5, \"cmdline\": \"cp /vagrant/src/test/sh/org/apache/aurora/e2e/http_example.py .\", \"final\": false}, {\"daemon\": false, \"name\": \"run_server\", \"ephemeral\": false, \"max_failures\": 1, \"min_duration\": 5, \"cmdline\": \"python http_example.py {{thermos.ports[http]}}\", \"final\": false}], \"name\": \"http_example\", \"finalization_wait\": 30, \"max_failures\": 1, \"max_concurrency\": 0, \"resources\": {\"disk\": 8388608, \"ram\": 16777216, \"cpu\": 0.1}, \"constraints\": [{\"order\": [\"echo_ports\", \"stage_server\", \"run_server\"]}]}, \"production\": false, \"role\": \"vagrant\", \"contact\": \"vagrant@localhost\", \"announce\": {\"primary_port\": \"http\", \"portmap\": {\"alias\": \"http\"}}, \"lifecycle\": {\"http\": {\"graceful_shutdown_endpoint\": \"/quitquitquit\", \"port\": \"health\", \"shutdown_endpoint\": \"/abortabortabort\"}}, \"priority\": 0}"}, "metadata":[], "container":{ "cachedHashCode":-1955376216, "setField":"MESOS", "value":{"cachedHashCode":31}} }, "assignedPorts":{}, "instanceId":8 }, "status":"PENDING", "failureCount":0, "taskEvents":[ {"cachedHashCode":0,"timestamp":1464992060258,"status":"PENDING","scheduler":"aurora"}] }, "oldState":{}}