themis-checker-server 2.0.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/themis/checker/server.rb +109 -15
  3. metadata +15 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f81106006a84660b0a4c4de2146921dffb385f96
4
- data.tar.gz: c74978d6bf3d9c1db199958b154248b53abf78ed
3
+ metadata.gz: b96b3d7afa6728eea8f2b6fbb0d52847acea3e53
4
+ data.tar.gz: 6da238ae6f0e1b926c6977a9137e3203e488ad57
5
5
  SHA512:
6
- metadata.gz: e9271965c19aec3aea6781860f968c6e09ab9afd9b3f6f41b1cab171f966917113486577632ae0c23cc2571f86313c97645eda66eef004e497a680fa4950658c
7
- data.tar.gz: 90f2aa21f00f8cbac2a9d09ae3340c5bd22ebf39261867e29b34e62305be26a0f120a2278431f697f76623e2b4f59c9221438bafc840fe1c9dee68feca5e9f9d
6
+ metadata.gz: 03bfdccf9df22ce7320484b091dcd5d74b70ee9f0c923efe96e1ae2abf38855d50f3298c64cf7ae4efacea088d6dd19be647057d90b8fc2782d505c10272bcac
7
+ data.tar.gz: 2f78ed8d1f099a28bbcc05fdfbd5d4b1766287ba0a5b803b24cd229da487e9ccbc8fda9c64af94a4d5f945fcd7ffbcd17e0815acba0dd40ec79a41346cf5d807
@@ -5,6 +5,7 @@ require 'themis/checker/result'
5
5
  require 'base64'
6
6
  require 'date'
7
7
  require 'time_difference'
8
+ require 'raven/base'
8
9
 
9
10
 
10
11
  module Themis
@@ -13,6 +14,21 @@ module Themis
13
14
  def initialize
14
15
  @logger = self.get_logger
15
16
  @beanstalk = nil
17
+
18
+ if self.raven_enabled?
19
+ Raven.configure do |config|
20
+ config.dsn = ENV['SENTRY_DSN']
21
+ config.ssl_verification = false
22
+ config.logger = @logger
23
+ config.async = lambda { |event|
24
+ Thread.new { Raven.send_event(event) }
25
+ }
26
+ end
27
+ end
28
+ end
29
+
30
+ def raven_enabled?
31
+ not ENV['SENTRY_DSN'].nil?
16
32
  end
17
33
 
18
34
  def run
@@ -45,7 +61,10 @@ module Themis
45
61
  adjunct: Base64.encode64(updated_adjunct)
46
62
  }
47
63
 
48
- @logger.info('PUSH flag `%s` /%d to `%s`@`%s` (%s) — status %s, adjunct `%s` [delivery %.2fs, processing %.2fs]' % [
64
+ delivery_time = TimeDifference.between(timestamp_created, timestamp_delivered).in_seconds
65
+ processing_time = TimeDifference.between(timestamp_delivered, timestamp_processed).in_seconds
66
+
67
+ log_message = 'PUSH flag `%s` /%d to `%s`@`%s` (%s) - status %s, adjunct `%s` [delivery %.2fs, processing %.2fs]' % [
49
68
  job_data['flag'],
50
69
  metadata['round'],
51
70
  metadata['service_name'],
@@ -53,9 +72,38 @@ module Themis
53
72
  job_data['endpoint'],
54
73
  Themis::Checker::Result.key(status),
55
74
  job_result[:adjunct],
56
- TimeDifference.between(timestamp_created, timestamp_delivered).in_seconds,
57
- TimeDifference.between(timestamp_delivered, timestamp_processed).in_seconds
58
- ])
75
+ delivery_time,
76
+ processing_time
77
+ ]
78
+
79
+ if self.raven_enabled?
80
+ short_log_message = 'PUSH `%s...` /%d to `%s` - status %s' % [
81
+ job_data['flag'][0..7],
82
+ metadata['round'],
83
+ metadata['team_name'],
84
+ Themis::Checker::Result.key(status)
85
+ ]
86
+
87
+ Raven.capture_message short_log_message, {
88
+ level: 'info',
89
+ tags: {
90
+ tf_operation: 'push',
91
+ tf_status: Themis::Checker::Result.key(status).to_s,
92
+ tf_team: metadata['team_name'],
93
+ tf_service: metadata['service_name'],
94
+ tf_round: metadata['round']
95
+ },
96
+ extra: {
97
+ endpoint: job_data['endpoint'],
98
+ flag: job_data['flag'],
99
+ adjunct: job_result[:adjunct],
100
+ delivery_time: delivery_time,
101
+ processing_time: processing_time
102
+ }
103
+ }
104
+ end
105
+
106
+ @logger.info log_message
59
107
  when 'pull'
60
108
  metadata = job_data['metadata']
61
109
  timestamp_created = DateTime.iso8601 metadata['timestamp']
@@ -76,17 +124,57 @@ module Themis
76
124
  status: status
77
125
  }
78
126
 
79
- @logger.info('PULL flag `%s` /%d from `%s`@`%s` (%s) with adjunct `%s` — status %s [delivery %.2fs, processing %.2fs]' % [
80
- job_data['flag'],
81
- metadata['round'],
82
- metadata['service_name'],
83
- metadata['team_name'],
84
- job_data['endpoint'],
85
- job_data['adjunct'],
86
- Themis::Checker::Result.key(status),
87
- TimeDifference.between(timestamp_created, timestamp_delivered).in_seconds,
88
- TimeDifference.between(timestamp_delivered, timestamp_processed).in_seconds
89
- ])
127
+ delivery_time = TimeDifference.between(timestamp_created, timestamp_delivered).in_seconds
128
+ processing_time = TimeDifference.between(timestamp_delivered, timestamp_processed).in_seconds
129
+
130
+ begin
131
+ log_message = 'PULL flag `%s` /%d from `%s`@`%s` (%s) with adjunct `%s` - status %s [delivery %.2fs, processing %.2fs]' % [
132
+ job_data['flag'],
133
+ metadata['round'],
134
+ metadata['service_name'],
135
+ metadata['team_name'],
136
+ job_data['endpoint'],
137
+ job_data['adjunct'],
138
+ Themis::Checker::Result.key(status),
139
+ delivery_time,
140
+ processing_time
141
+ ]
142
+
143
+ if self.raven_enabled?
144
+ short_log_message = 'PULL `%s...` /%d from `%s` - status %s' % [
145
+ job_data['flag'][0..7],
146
+ metadata['round'],
147
+ metadata['team_name'],
148
+ Themis::Checker::Result.key(status)
149
+ ]
150
+
151
+ Raven.capture_message short_log_message, {
152
+ level: 'info',
153
+ tags: {
154
+ tf_operation: 'pull',
155
+ tf_status: Themis::Checker::Result.key(status).to_s,
156
+ tf_team: metadata['team_name'],
157
+ tf_service: metadata['service_name'],
158
+ tf_round: metadata['round']
159
+ },
160
+ extra: {
161
+ endpoint: job_data['endpoint'],
162
+ flag: job_data['flag'],
163
+ adjunct: job_data['adjunct'],
164
+ delivery_time: delivery_time,
165
+ processing_time: processing_time
166
+ }
167
+ }
168
+ end
169
+ rescue Exception => e
170
+ if self.raven_enabled?
171
+ Raven.capture_exception e
172
+ end
173
+ @logger.error e.message
174
+ e.backtrace.each { |line| @logger.error line }
175
+ end
176
+
177
+ @logger.info log_message
90
178
  else
91
179
  @logger.warn 'Unknown job!'
92
180
  end
@@ -153,6 +241,9 @@ module Themis
153
241
  rescue Interrupt
154
242
  raise
155
243
  rescue Exception => e
244
+ if self.raven_enabled?
245
+ Raven.capture_exception e
246
+ end
156
247
  @logger.error e.message
157
248
  e.backtrace.each { |line| @logger.error line }
158
249
  end
@@ -167,6 +258,9 @@ module Themis
167
258
  rescue Interrupt
168
259
  raise
169
260
  rescue Exception => e
261
+ if self.raven_enabled?
262
+ Raven.capture_exception e
263
+ end
170
264
  @logger.error e.message
171
265
  e.backtrace.each { |line| @logger.error line }
172
266
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: themis-checker-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Pyatkin
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.4.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: sentry-raven
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.0.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.0.0
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement