statscloud 1.0.6 → 1.0.7

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