-
Notifications
You must be signed in to change notification settings - Fork 120
feature: webhooks #385
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
feature: webhooks #385
Changes from 4 commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
742f548
feature: webhooks
shwstppr 7fac505
changes
shwstppr e9745f3
changes
shwstppr 9e19afe
changes
shwstppr 2ff9552
Update source/adminguide/events/webhooks.rst
shwstppr c3eda7b
note regarding duplicate event deliveries
shwstppr 873a1c3
note on self-signed https payload url
shwstppr File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -366,3 +366,9 @@ Procedure | |
| date. | ||
|
|
||
| #. Click OK. | ||
|
|
||
|
|
||
| Webhooks | ||
| -------- | ||
|
|
||
| .. include:: events/webhooks.rst | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,167 @@ | ||
| .. Licensed to the Apache Software Foundation (ASF) under one | ||
| or more contributor license agreements. See the NOTICE file | ||
| distributed with this work for additional information# | ||
| regarding copyright ownership. The ASF licenses this file | ||
| to you under the Apache License, Version 2.0 (the | ||
| "License"); you may not use this file except in compliance | ||
| with the License. You may obtain a copy of the License at | ||
| http://www.apache.org/licenses/LICENSE-2.0 | ||
| Unless required by applicable law or agreed to in writing, | ||
| software distributed under the License is distributed on an | ||
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
| KIND, either express or implied. See the License for the | ||
| specific language governing permissions and limitations | ||
| under the License. | ||
|
|
||
|
|
||
| Webhooks allow external services to be notified when certain events happen. | ||
| CloudStack allows provisioning webhooks for all account roles and for various | ||
| scopes. | ||
| This allows users to consume event notifications without any external services | ||
| such as an event streaming platforms. | ||
|
|
||
| Webhooks can be managed using both API and UI. CloudStack provides following | ||
| APIs for webhhoks: | ||
|
|
||
| .. cssclass:: table-striped table-bordered table-hover | ||
|
|
||
| ====================== =========================== | ||
| API Description | ||
| ====================== =========================== | ||
| createWebhook Creates a Webhook | ||
| listWebhooks Lists Webhooks | ||
| updateWebhook Updates a Webhook | ||
| deleteWebhook Deletes a Webhook | ||
| listWebhookDeliveries Lists Webhook deliveries | ||
| deleteWebhookDelivery Deletes Webhook delivery(s) | ||
| executeWebhookDelivery Executes a Webhook delivery | ||
| ====================== =========================== | ||
|
|
||
| In the UI, webhooks can be managed under *Tools > Webhhooks* menu. | ||
|
|
||
| |webhooks.png| | ||
|
|
||
|
|
||
| Creating a webhook | ||
| ~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| Any CloudStack user having createWebhook API access can create a new webhook | ||
| for the event notifications. | ||
|
|
||
| To create a webhook: | ||
|
|
||
| #. Log in to the CloudStack UI. | ||
|
|
||
| #. In the left navigation bar, click Tools and choose Webhooks. | ||
|
|
||
| #. Click Create Webhook. | ||
|
|
||
| #. In the dialog, make the following choices: | ||
|
|
||
| - **Name**. Any desired name for the webhook. | ||
|
|
||
| - **Description**. A short description of the webhook. | ||
|
|
||
| - **Scope**. (Available only for ROOT admins or domain admins). Scope | ||
| of the webhook. The value can be Local, Domain or Global. | ||
| Local - only events associated with the owner account will be notified. | ||
| Domain - events associated with domain will be notified. | ||
| Global - all events will be notified. This is available only for ROOT | ||
| admin account. | ||
| For a normal user account, webhooks can be created with Local scope | ||
| only. | ||
|
|
||
| - **Domain**. An optional domain for the Webhook. If the account parameter | ||
| is used, domain must also be used. | ||
|
|
||
| - **Account**. An optional account for the webhook. Must be used with | ||
| domain. | ||
|
|
||
| - **Payload URL**. The payload URL of the Webhook. All events for the | ||
| webhook will posted on this URL. | ||
|
|
||
| - **SSL Verification**. An otional parameter to specify whether the HTTP | ||
| POST requests for event notications must be sent with strict SSL | ||
| verification request when a HTTPS payload URL is used. | ||
|
|
||
| - **Secret Key**. An option secret key parameter which can be used to sign | ||
| the HTTP POST requests for event notifications with HMAC. | ||
|
|
||
| - **Enabled**. To specify whether the webhook be created with enabled or | ||
| disabled state | ||
|
|
||
| |create-webhooks.png| | ||
|
|
||
|
|
||
| Working with webhook deliveries | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| CloudStack attempts webhook deliveries using a thread pool with given retries. | ||
| The following global configuration can be used to configure thread pool size | ||
| for deliveries: | ||
|
|
||
| - **webhook.delivery.thread.pool.size**: Size of the thread pool for webhook | ||
| deliveries. | ||
|
|
||
|
|
||
| Also, the number attempts for a particular event notification and the timeout | ||
| for one particular attempt can be configured using the following domain-level | ||
| configurations: | ||
|
|
||
| - **webhook.delivery.retries**: Number of tries to be made for a webhook | ||
| delivery. | ||
|
|
||
| - **webhook.delivery.timeout**: Wait timeout (in seconds) for a webhook | ||
| delivery attempt. | ||
|
|
||
|
|
||
| CloudStack allows retrieving recent deliveries for a webhook with details such | ||
| as event, headers, payload, respose, success, duration, etc. | ||
| In the UI, these can be accessed under Recent deliveries tab in the Webhook | ||
| detail view. | ||
| The user can redeliver an existing delivery. To check the working of the | ||
| webhook consumer test deliveries can made. Test deliveries are not recorded | ||
| by CloudStack. | ||
|
|
||
| |webhook-deliveries.png| | ||
|
|
||
| The administrator can configure storage of webhook deliveries using the | ||
| following global configurations: | ||
|
|
||
| - **webhook.deliveries.limit**: Limit for number of deliveries to keep | ||
| in DB per webhook. Default value is 10. | ||
|
|
||
| - **webhook.deliveries.cleanup.interval**: Interval (in seconds) for | ||
| cleaning up webhook deliveries. Default value is 3600 or 1 hour. | ||
|
|
||
| Based on the above configurations CloudStack will purge older deliveries in | ||
| the database using a repeatedly running task. | ||
|
|
||
| For a webhook delivery, CloudStack sends a HTTP POST request with event data | ||
| as the payload. The following custom headers are sent with the request: | ||
|
|
||
| - **X-CS-Event-ID**. Event ID for which the webhook delivery is made. | ||
|
|
||
| - **X-CS-Event**. Event for for which the webhook delivery is made. | ||
|
|
||
| - **User-Agent**. In the format - *CS-Hookshot/<ACCOUNT_ID>*. Here | ||
| ACCOUNT_ID is the ID of the account which trigerred the event. | ||
|
|
||
| - **X-CS-Signature**. HMAC SHA256 signature created using the webhook | ||
| secret key and the delivery payload. It is sent only when secret key | ||
| is specified for the webhook. | ||
|
|
||
|
|
||
|
|
||
| .. Images | ||
|
|
||
|
|
||
| .. |webhooks.png| image:: /_static/images/webhooks.png | ||
| .. |create-webhook.png| image:: /_static/images/create-webhook.png | ||
| .. |webhook-deliveries.png| image:: /_static/images/webhook-deliveries.png | ||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.