themis-checker-server 2.0.0 → 3.0.0

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.
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