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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/statscloud/cluster_client.rb +16 -0
- data/lib/statscloud/helpers/statscloud_helper.rb +6 -0
- data/lib/statscloud/jobs/register_connection_job.rb +63 -0
- data/lib/statscloud/statscloud_client.rb +6 -7
- data/lib/statscloud/statsmeter_client.rb +3 -2
- data/lib/statscloud/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 131f703c1a4738bf040d10cecd4cb39f939dec43f222651decedd3966672626f
|
4
|
+
data.tar.gz: 3f047f70dce35bd512ac71d8a9847e0d59429b4bdaef30e048f78ff3ccbe1f27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8dcd23509e05431dac53e1b1b014d769deb55f8b4c27d9b2070cabc10ab55d0c7405c2b513bbdfde1c4554d8da4da76dcbc14af08ce92afc493f7b4a61e61106
|
7
|
+
data.tar.gz: d0850c60c47b328df3a8b298c66e7823782c28eadf727628c2d7d40c24072888e144c3b005f5cdd6d845a481d4a718d2edaa6d3ef28216fe83dc1bc3ee6de69e
|
data/Gemfile.lock
CHANGED
@@ -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
|
72
|
+
flush_events_loop
|
73
|
+
register_connection_job.start
|
73
74
|
end
|
74
75
|
end
|
75
76
|
|
data/lib/statscloud/version.rb
CHANGED
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.
|
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-
|
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
|