sensu-plugins-microsoft-teams 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3de05ad5a549336d300fee8ff0f251c8e61a7e9d
4
- data.tar.gz: 6e3cdfdb2abdf26faaaff54248e8f29590872ee3
3
+ metadata.gz: f9647ccc1cbdd3efea9691efb8032e87e3635b0a
4
+ data.tar.gz: b92a921ae45a3f9c55503e983da3f701cce45fd1
5
5
  SHA512:
6
- metadata.gz: e316a883a9c8b57a62da03b3d1f9a84a8ad52fdcb61025e2f005b2e14d86a3f383e02216a6687241c20a382cdaf98beb696612b2b47486d8235ddc2d7eff3852
7
- data.tar.gz: 0a1b59fda85b753d191cdbec83c2fe5474e341b6ca2a9cca87b066f12ef23d5c6094c8d7f2735292c892094bfb130528ec06a353220cb7a8665ac3edc965d385
6
+ metadata.gz: 8cc4167707d7cda39cbe48e2571811fb301520bf30b52dee5b8d03e311d50ed6e3b6d5460452d941b51220bb6f1db6b45e9ecbcd8a00ee510259076915b36dce
7
+ data.tar.gz: 2a3b156524a994b137a00ba858327a26a2c38acbdc4fb0458f31c051b6c09af69678cff1c9da3d1e0dfc73279bb03b6244f2401d52d898c1e3287918a0046b86
@@ -0,0 +1,123 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Copyright 2017 Jose Gaspar and contributors.
4
+ #
5
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
6
+ # for details.
7
+ #
8
+ # In order to use this plugin, you must first configure an incoming webhook
9
+ # integration in Microsoft Teams. You can create the required webhook by visiting
10
+ # https://outlook.office.com/connectors/publish
11
+ #
12
+ # After you configure your webhook, you'll need the webhook URL from the connector.
13
+
14
+ require 'sensu-handler'
15
+ require 'json'
16
+
17
+ class SLack < Sendsu::Handler
18
+ option :json_config,
19
+ description: 'Configuration name',
20
+ short: '-j JSONCONFIG',
21
+ long: '--json JSONCONFIG',
22
+ default: 'microsoft-teams'
23
+
24
+ def microsoft_teams_webhook_url
25
+ get_setting('webhook_url')
26
+ end
27
+
28
+ def proxy_address
29
+ get_setting('proxy_address')
30
+ end
31
+
32
+ def proxy_port
33
+ get_setting('proxy_port')
34
+ end
35
+
36
+ def proxy_username
37
+ get_setting('proxy_username')
38
+ end
39
+
40
+ def proxy_password
41
+ get_setting('proxy_password')
42
+ end
43
+
44
+ def dashboard_uri
45
+ get_setting('dashboard')
46
+ end
47
+
48
+ def incident_key
49
+ if dashboard_uri.nil?
50
+ @event['client']['name'] + '/' + @event['check']['name']
51
+ else
52
+ "<#{dashboard_uri}#{@event['client']['name']}?check=#{@event['check']['name']}|#{@event['client']['name']}/#{@event['check']['name']}>"
53
+ end
54
+ end
55
+
56
+ def get_setting(name)
57
+ settings[config[:json_config]][name]
58
+ end
59
+
60
+ def handle
61
+ description = @event['check']['notification']
62
+ post_data("#{incident_key}: #{description}")
63
+ end
64
+
65
+ def post_data(body)
66
+ uri = URI(microsoft_teams_webhook_url)
67
+ http = if proxy_address.nil?
68
+ Net::HTTP.new(uri.host, uri.port)
69
+ else
70
+ Net::HTTP::Proxy(proxy.address, proxy_port, proxy_username, proxy_password).new(uri.host, uri.port)
71
+ end
72
+ http.use_ssl = true
73
+
74
+ req = Net::HTTP::Post.new("#{uri.path}?#{uri.query}", 'Content-Type' => 'application/json')
75
+
76
+ payload = {
77
+ "@type" => "MessageCard",
78
+ "@context" => "http://schema.org/extensions",
79
+ "themeColor" => color,
80
+ "title" => "#{@event['client']['address']} - #{translate_status}",
81
+ "summary" => "#{@event['client']['address']} - #{translate_status}",
82
+ "sections" => [ { "text" => "Hello World" } ]
83
+ }
84
+
85
+ req.body = payload.to_json
86
+
87
+ response = http.request(req)
88
+ verify_response(response)
89
+ end
90
+
91
+ def verify_response(response)
92
+ case response
93
+ when Net::HTTPSuccess
94
+ true
95
+ else
96
+ raise response.error!
97
+ end
98
+ end
99
+
100
+ def color
101
+ color = {
102
+ 0 => '#36a64f',
103
+ 1 => '#FFCC00',
104
+ 2 => '#FF0000',
105
+ 3 => '#6600CC'
106
+ }
107
+ color.fetch(check_status.to_i)
108
+ end
109
+
110
+ def check_status
111
+ @event['check']['status']
112
+ end
113
+
114
+ def translate_status
115
+ status = {
116
+ 0 => :OK,
117
+ 1 => :WARNING,
118
+ 2 => :CRITICAL,
119
+ 3 => :UNKNOWN
120
+ }
121
+ status[check_status.to_i]
122
+ end
123
+ end
@@ -2,7 +2,7 @@ module SensuPluginsMicrosoftTeams
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- PATCH = 1
5
+ PATCH = 2
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-microsoft-teams
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
@@ -138,13 +138,15 @@ dependencies:
138
138
  version: '0.8'
139
139
  description: Sensu plugins for interfacing with Microsoft Teams
140
140
  email: "<sensu-users@googlegroups.com>"
141
- executables: []
141
+ executables:
142
+ - handler-microsoft-teams.rb
142
143
  extensions: []
143
144
  extra_rdoc_files: []
144
145
  files:
145
146
  - CHANGELOG.md
146
147
  - LICENSE
147
148
  - README.md
149
+ - bin/handler-microsoft-teams.rb
148
150
  - lib/sensu-plugins-microsoft-teams.rb
149
151
  - lib/sensu-plugins-microsoft-teams/version.rb
150
152
  homepage: https://github.com/sensu-plugins/sensu-plugins-microsoft-teams