statscloud 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71d82d6becb4a48006bf0eed5eca4a1d99f9ea643b9d29d2d6f067e69ad85f80
4
- data.tar.gz: 46516bb9c8bf1abb58ec5432c90737d0938f660c89088e00c01a432cfe682a64
3
+ metadata.gz: 131f703c1a4738bf040d10cecd4cb39f939dec43f222651decedd3966672626f
4
+ data.tar.gz: 3f047f70dce35bd512ac71d8a9847e0d59429b4bdaef30e048f78ff3ccbe1f27
5
5
  SHA512:
6
- metadata.gz: 8cb1317f0a0d53d8bbf5ab8a4ab6ec27b4ebb6a94e6cba5d413baaf4bc2e40ffcf7a7bbc06743c8f1b89d5855a9b0ffc26bd2283e1f0d4365b4085a95d08d994
7
- data.tar.gz: be1ccc9c5ac51dc08befc6361e45ee52c8e6cc9e91dcdb1a2b04860131bbbd1656f6597e269ceb4c5aaab206b41d69f872a166f2defc82e9b95ac3077cfc9562
6
+ metadata.gz: 8dcd23509e05431dac53e1b1b014d769deb55f8b4c27d9b2070cabc10ab55d0c7405c2b513bbdfde1c4554d8da4da76dcbc14af08ce92afc493f7b4a61e61106
7
+ data.tar.gz: d0850c60c47b328df3a8b298c66e7823782c28eadf727628c2d7d40c24072888e144c3b005f5cdd6d845a481d4a718d2edaa6d3ef28216fe83dc1bc3ee6de69e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- statscloud (1.0.5)
4
+ statscloud (1.0.7)
5
5
  activesupport (~> 5.2)
6
6
  crc32 (~> 1.0.1)
7
7
  eventmachine (~> 1.2)
@@ -73,6 +73,22 @@ module StatsCloud
73
73
  logger.error error
74
74
  end
75
75
 
76
+ # Register statscloud client connection.
77
+ # @param [+String+] token
78
+ # authorization token
79
+ # @param [+String+] app
80
+ # cluster name
81
+ # @param [+Array+] tags
82
+ # statscloud client tags
83
+ def register_statscloud_connection(token, app, tags)
84
+ url = "#{host}/users/current/clusters/#{app}/#{environment}/register-statscloud-connection"
85
+ body = { tags: tags }.to_json
86
+ response = http_client.post(url, body, headers(token))
87
+ get_parsed_response(response)
88
+ rescue StandardError => error
89
+ logger.error error
90
+ end
91
+
76
92
  private
77
93
 
78
94
  attr_reader :host, :environment
@@ -9,6 +9,12 @@ module StatsCloud
9
9
  module StatsCloudHelper
10
10
  private
11
11
 
12
+ def config_values
13
+ @config["sourceMaps"] = source_mappings
14
+ config_token
15
+ validate_configuration
16
+ end
17
+
12
18
  def validate_configuration
13
19
  @app = @config["application"]
14
20
  raise error(app_name_missing_error_message) if @app.blank?
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "eventmachine"
4
+ require_relative "../helpers/logger_helper"
5
+
6
+ module StatsCloud
7
+ # Registers StatsCloud connection.
8
+ class RegisterConnectionJob
9
+ include LoggerHelper
10
+
11
+ ERROR_CODES = [400, 401, 404, 500].freeze
12
+
13
+ def initialize(cluster_client, token, app, tags)
14
+ @cluster_client = cluster_client
15
+ @token = token
16
+ @app = app
17
+ @tags = tags
18
+ @job_running = false
19
+ end
20
+
21
+ def start
22
+ Thread.new do
23
+ event_machine.run do
24
+ event_machine.add_periodic_timer(3600) { run_job }
25
+ end
26
+ end.join
27
+ end
28
+
29
+ private
30
+
31
+ attr_reader :cluster_client, :token, :app, :tags
32
+
33
+ def run_job
34
+ return if @job_running
35
+
36
+ start_running
37
+ connection_response = cluster_client.register_statscloud_connection(token, app, tags)
38
+ return stop_running if connection_response.code == 204
39
+
40
+ check_for_errors(connection_response)
41
+ end
42
+
43
+ def start_running
44
+ @job_running = true
45
+ end
46
+
47
+ def stop_running
48
+ @job_running = false
49
+ end
50
+
51
+ def check_for_errors(response)
52
+ log_register_connection_error(response.body) if ERROR_CODES.include?(response.code)
53
+ end
54
+
55
+ def log_register_connection_error(response_body)
56
+ logger.error response_body[:message]
57
+ end
58
+
59
+ def event_machine
60
+ EventMachine
61
+ end
62
+ end
63
+ end
@@ -11,6 +11,7 @@ require_relative "cluster_client"
11
11
  require_relative "helpers/assets_helper"
12
12
  require_relative "helpers/logger_helper"
13
13
  require_relative "helpers/statscloud_helper"
14
+ require_relative "jobs/register_connection_job"
14
15
 
15
16
  module StatsCloud
16
17
  # Module which implements StatsCloud framework support.
@@ -144,12 +145,6 @@ module StatsCloud
144
145
  end
145
146
  end
146
147
 
147
- def config_values
148
- @config["sourceMaps"] = source_mappings
149
- config_token
150
- validate_configuration
151
- end
152
-
153
148
  def clear_data
154
149
  @config.delete("propagateErrors")
155
150
  @config.delete("token")
@@ -174,13 +169,17 @@ module StatsCloud
174
169
 
175
170
  def connect_to_cluster
176
171
  @statsmeter_client = create_statsmeter_client(@cluster, @token, @plugins, tags)
177
- @statsmeter_client.connect
172
+ @statsmeter_client.connect(register_connection_job)
178
173
  end
179
174
 
180
175
  def create_cluster_client
181
176
  StatsCloud::ClusterClient.new(env)
182
177
  end
183
178
 
179
+ def register_connection_job
180
+ StatsCloud::RegisterConnectionJob.new(@cluster_client, @token, @app, tags)
181
+ end
182
+
184
183
  def create_statsmeter_client(cluster, token, plugins, tags)
185
184
  host = cluster[:statsmeterUrl]
186
185
  StatsCloud::StatsmeterClient.new(host, token, plugins, tags)
@@ -65,11 +65,12 @@ module StatsCloud
65
65
  end
66
66
 
67
67
  # Connects to the server and starts periodic sending events.
68
- def connect
68
+ def connect(register_connection_job)
69
69
  Thread.new do
70
70
  connect_client
71
71
  start_plugins
72
- flush_events_loop.join
72
+ flush_events_loop
73
+ register_connection_job.start
73
74
  end
74
75
  end
75
76
 
@@ -4,5 +4,5 @@ module StatsCloud
4
4
  # version of statscloud-ruby-client.
5
5
  #
6
6
  # Type: *String*
7
- VERSION = "1.0.6"
7
+ VERSION = "1.0.7"
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statscloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Ovcharov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-06 00:00:00.000000000 Z
11
+ date: 2018-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -193,6 +193,7 @@ files:
193
193
  - lib/statscloud/helpers/socketio_helper.rb
194
194
  - lib/statscloud/helpers/statscloud_helper.rb
195
195
  - lib/statscloud/helpers/statsmeter_helper.rb
196
+ - lib/statscloud/jobs/register_connection_job.rb
196
197
  - lib/statscloud/statscloud_client.rb
197
198
  - lib/statscloud/statsmeter_client.rb
198
199
  - lib/statscloud/version.rb