##### ISSUE TYPE
<!--- Pick one below and delete the rest: -->
- Feature Pull Request
##### SUMMARY
<!--- Describe the change, including rationale and design decisions -->
Elasticsearch Indices will be created with timestamp suffix
<!---
If you are fixing an existing issue, please include "Fixes #nnn" in your
PR comment; and describe briefly what the change does.
-->
<!--- Please list dependencies added with your change also -->
#### ISSUE TYPE
<!--- Pick one below and delete the rest: -->
- Feature Pull Request
##### SUMMARY
<!--- Describe the change, including rationale and design decisions -->
**Add support for Discord:**
This PR,
- adds discord bot
- adds discord notifier
- adds required discord configurations into comm_config.yaml
- adds discordgo module into go.mod
- adds discord configs into all yaml files
<!---
If you are fixing an existing issue, please include "Fixes #nnn" in your
PR comment; and describe briefly what the change does.
-->
<!--- Please list dependencies added with your change also -->
Fixes#97
### Steps For Creation and Integration:
1. Reach https://discordapp.com/developers/applications
2. Create New Application named Botkube and add a bot named **Botkube** into the Application
3. Copy the Application **CLIENT ID** and place it under _Dischord.botid_ in comm-config.yaml
4. Copy Bot **TOKEN** and place it under _Dischord.token_ in comm-config.yaml
5. Generate the URL with suitable permissions using the OAuth2 URL Generator available under OAuth2 section to the add bot to your Discord server
```
https://discordapp.com/oauth2/authorize?&client_id=<YOUR_CLIENT_ID>&scope=bot&permissions=<SET_OF_PERMISSIONS>
```
6. Paste the generated URL in a new tab, select the discord sever to which you want to add the bot and Authorise Bot addition.
7. Create a new channel and/or copy the **CHANNEL ID** of an existing one that you want to use and place it under _Dischord.channel_
```yaml
# Settings for Discord
discord:
enabled: true
token: 'DISCORD_TOKEN' # BotKube Bot Token
botid: 'DISCORD_BOT_ID' # BotKube Application Client ID
channel: 'DISCORD_CHANNEL_ID' # Discord Channel id for receiving BotKube alerts
notiftype: short # Change notification type short/long you want to receive. notiftype is optional and Default notification type is short (if not specified)
```
#### Note: Follow the first 4 mins of this [Video Tutorial](https://youtu.be/8o25pRbXdFw) to understand the process visually.
### Preview:
![ping](https://user-images.githubusercontent.com/30741615/80600577-3931cf00-8a4a-11ea-9215-a725a0b17256.png)
![pod-create-short](https://user-images.githubusercontent.com/30741615/80600638-55357080-8a4a-11ea-976f-b91e823c93bd.png)
![pod-error-long](https://user-images.githubusercontent.com/30741615/80600803-8dd54a00-8a4a-11ea-90e4-a205e93aba5f.png)
![file-attachment](https://user-images.githubusercontent.com/30741615/80600724-75fdc600-8a4a-11ea-9b10-1b5ac0e79548.png)
This Commit,
- Fixes build failure due to e2e tests
##### ISSUE TYPE
<!--- Pick one below and delete the rest: -->
- Bug fix Pull Request
##### SUMMARY
<!--- Describe the change, including rationale and design decisions -->
<!---
If you are fixing an existing issue, please include "Fixes #nnn" in your
PR comment; and describe briefly what the change does.
-->
<!--- Please list dependencies added with your change also -->
Fixes#384
##### ISSUE TYPE
<!--- Pick one below and delete the rest: -->
- Feature Pull Request
##### SUMMARY
- Add support for Microsoft Teams
- Multicluster support not available yet for Teams
Integration tests will be addressed with a separate issue. Blocked by https://github.com/infracloudio/msbotbuilder-go/issues/46Fixes#60
##### ISSUE TYPE
- Feature Pull Request
##### SUMMARY
In the notifier, we send events by creating a new connection to the communication medium on every new event. We can reduce the number of connections by sending messages via the Bot interface.
Fixes#270
##### ISSUE TYPE
<!--- Pick one below and delete the rest: -->
- Feature Pull Request
##### SUMMARY
<!--- Describe the change, including rationale and design decisions -->
Allow using AWS role or EC2 Instance role to generate session tokens for AWS credentials.
<!---
If you are fixing an existing issue, please include "Fixes #nnn" in your
PR comment; and describe briefly what the change does.
-->
<!--- Please list dependencies added with your change also -->
##### ISSUE TYPE
<!--- Pick one below and delete the rest: -->
- Feature Pull Request
##### SUMMARY
<!--- Describe the change, including rationale and design decisions -->
Allows user to specify if Elasticsearch is hosted on AWS
- configuration fields have been added to specify if Elasticsearch is hosted on AWS
<!---
If you are fixing an existing issue, please include "Fixes #nnn" in your
PR comment; and describe briefly what the change does.
-->
Includes feature which would allow botkube to send Kubernetes events to Elasticsearch hosted on AWS
* Uses AWS V4 signature to sign the http request
* Uses environment variables to pick AWS configurations
Secondly creates new index per day with index name suffixed as -DD-MM-YYYY
<!--- Please list dependencies added with your change also -->
Fixes#299Fixes#283
##### ISSUE TYPE
- Refactor Pull Request (#262)
##### SUMMARY
Refactor logging package to make log statements simpler. Current format logging.Logger.Info() doesn't look good. We can embed Logrus into pkg/log to import and use it as log.Info()
Fixes #
- Embed Logrus into pkg/log
- Update the reference to new log package
- Change the reference everywhere form
`logging.Logger.Function() --> log.Function()`
##### ISSUE TYPE
<!--- Pick one below and delete the rest: -->
- Feature Pull Request
##### SUMMARY
Refactor notifier and bot to pass config
Simplify ElasticSearch client creation
This commit,
- Adds support for event notifications through `Wehbook`
- updates configs in all yaml files
- updated helm charts
- adds unit tests for webhook notifier
- adds integration test webhook notifier
- adds test/webhook package to enable integration testing.
Add CommandRunner interface and fake_executor to mock kubectl command execution
Add warnings field to the Event struct
Update filter recommendation message format
Signed-off-by: Prasad Ghangal <prasad.ghangal@gmail.com>
* Add Object Annotation filter
This commit,
- enables filtering of events based on annotations present in objects at run time.
- annotation `botkube.io/disable: true` disables event notifications for the annotated object
- annotation `botkube.io/channel: <channel_name>` sends events notifications of the annotated object to the mentioned channel.
- adds func `ExtractAnnotations()`. It extract annotations from Event.InvolvedObject and adds them to event.Metadata.Annotations
- implements individual actions using internal functions.
- adds unit tests for internal functions.
- replaces Init() with InitialiseKubeClient() to decouple config.yaml and KubeClinet dependencies from unit testing
* Add build completion message
This commit,
- enables sending short/long event notifications to channels
- adds a optional filed "notiftype" under channel config to change between short (default) and long notif types
- adds Message() method to event object for creating brief messages (to use across handlers)
- BugFix: enable/disable recommendations through config file
Removed CreateChannel support from Mattermost.
Formatted postMessage output.
Updated README for adding channel in Mattermost.
Removed Fatal log calls in Controller
Modified log messages to print additional error information
Added comments for Mattermost config parameters.