neetodeploy-autoscale 1.0.2 → 1.0.4

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: 88c6a65097e56575c537111e75e258a63188ef083f2d74d6740500dfddf4773e
4
- data.tar.gz: 9618e20c8160daa2bac24b0b24bc403c7a2b37aabfd82564819456a3a878222c
3
+ metadata.gz: 6f0190f5084eb35624b7794eee1edbaf90336fb9933e14ac1e341eb7f01d9702
4
+ data.tar.gz: b0fed28441c978afd8e92d2b9d1dbb6e76a3d83b8072277f0e98c67cab08e541
5
5
  SHA512:
6
- metadata.gz: fcd203d8d354bf9b351bbb181f9354cf93dd7de364acb82306ab4b77fece0928a1d073314d71fb9cf9a54c09f8a06d6fb9eb163ab10b5885c8206e4f6df28d0d
7
- data.tar.gz: 55f6958229b675f26c0c86364783540cc232fee5fc044754e9d482e1e3717fe9a50d3dce0ed498d614993edddc629e711ef481367bb6b642866549e3b4bc8ad0
6
+ metadata.gz: 70f9f059a6262ec11c1b0cfea4f09de2cc923d896a0f268fba3f5d464f95e86128732013d838ea333b21bc5ef573c6e1bc334022ece7b144b173e3d1a9d37f2b
7
+ data.tar.gz: 44771bb2959cb361bc66112aef8e74ea23e90a8f51bbe12f985b7d91c3796ef13c0a0f01851761c0d8ee5c6f80038164e9addb68e0560543b34a061337eb55d8
@@ -2,31 +2,24 @@
2
2
 
3
3
  require "net/http"
4
4
  require "time"
5
+ require "neetodeploy/autoscale/worker"
5
6
 
6
7
  module Neetodeploy
7
8
  class Middleware
9
+ attr_reader :worker
10
+
8
11
  def initialize(app)
9
12
  @app = app
13
+ init_worker
10
14
  end
11
15
 
12
16
  def call(env)
13
- url = URI.parse("https://nd-queue-time-exporter.neetodeployapp.com/metrics")
14
-
15
- query_params = URI.encode_www_form(app_name: ENV.to_h["NEETODEPLOY_APP_NAME"], process_type: "web", queue_time: queue_time(env))
16
-
17
- url.query = query_params
18
-
19
- post = Net::HTTP::Post.new(url)
20
- post["AuthToken"] = "K0An3O3MSyEEMTCnRd1IHgGjdGQkzy"
21
-
22
- begin
23
- Net::HTTP.start(url.host, url.port, use_ssl: true) do |http|
24
- http.request(post)
25
- end
26
- rescue => e
27
- puts "Exception in sending post request to exporter from Rails process: #{e.message}"
28
- end
29
-
17
+ payload = URI.encode_www_form(
18
+ app_name: ENV.to_h["NEETODEPLOY_APP_NAME"],
19
+ process_type: "web",
20
+ queue_time: queue_time(env)
21
+ )
22
+ worker.push(payload)
30
23
  @app.call(env)
31
24
  end
32
25
 
@@ -50,5 +43,11 @@ module Neetodeploy
50
43
 
51
44
  queue_time.positive? ? queue_time : 0
52
45
  end
46
+
47
+ def init_worker
48
+ return if @worker
49
+
50
+ @worker = Neetodeploy::Worker.new
51
+ end
53
52
  end
54
53
  end
@@ -6,7 +6,7 @@ require "time"
6
6
  module Neetodeploy
7
7
  class SidekiqMiddleware
8
8
  def call(worker, job, queue)
9
- url = URI.parse("https://nd-queue-time-exporter.neetodeployapp.com/metrics")
9
+ url = URI.parse("http://nd-queue-time-exporter-web-deployment:3000/metrics")
10
10
 
11
11
  queues_by_name = ::Sidekiq::Queue.all.each_with_object({}) do |queue_name, obj|
12
12
  obj[queue_name.name] = queue_name
@@ -23,7 +23,7 @@ module Neetodeploy
23
23
  post["AuthToken"] = "K0An3O3MSyEEMTCnRd1IHgGjdGQkzy"
24
24
 
25
25
  begin
26
- Net::HTTP.start(url.host, url.port, use_ssl: true) do |http|
26
+ Net::HTTP.start(url.host, url.port, use_ssl: false) do |http|
27
27
  http.request(post)
28
28
  end
29
29
  rescue => e
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Neetodeploy
4
4
  module Autoscale
5
- VERSION = "1.0.2"
5
+ VERSION = "1.0.4"
6
6
  end
7
7
  end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "net/http"
4
+ require "time"
5
+
6
+ module Neetodeploy
7
+ class Worker
8
+ attr_reader :mutex, :queue, :thread
9
+
10
+ def initialize
11
+ @mutex = Mutex.new
12
+ @queue = Queue.new
13
+
14
+ end
15
+
16
+ def push(msg)
17
+ start && queue.push(msg)
18
+ end
19
+
20
+ def start
21
+ mutex.synchronize do
22
+ return true if thread&.alive?
23
+
24
+ @thread = Thread.new { run }
25
+ end
26
+ true
27
+ end
28
+
29
+ private
30
+
31
+ def run
32
+ puts "neetodeploy-autoscale: reporter worker started"
33
+ until queue.empty?
34
+ queue_time = queue.pop
35
+ work(queue_time)
36
+ end
37
+ puts "neetodeploy-autoscale: reporter stopping worker"
38
+ end
39
+
40
+ def work(payload)
41
+ url = URI.parse("http://nd-queue-time-exporter-web-deployment:3000/metrics")
42
+ url.query = payload
43
+ post = Net::HTTP::Post.new(url)
44
+ post["AuthToken"] = "K0An3O3MSyEEMTCnRd1IHgGjdGQkzy"
45
+
46
+ begin
47
+ Net::HTTP.start(url.host, url.port, use_ssl: false) do |http|
48
+ response = http.request(post)
49
+ end
50
+ rescue StandardError => e
51
+ puts "Exception in sending post request to exporter from Rails process: #{e.message}"
52
+ end
53
+ end
54
+ end
55
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neetodeploy-autoscale
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sreeram Venkitesh
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-05 00:00:00.000000000 Z
11
+ date: 2024-08-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: For automatically scaling your Rails application based on network metrics
14
14
  email:
@@ -27,6 +27,7 @@ files:
27
27
  - lib/neetodeploy/autoscale/railtie.rb
28
28
  - lib/neetodeploy/autoscale/sidekiq_middleware.rb
29
29
  - lib/neetodeploy/autoscale/version.rb
30
+ - lib/neetodeploy/autoscale/worker.rb
30
31
  homepage: https://neetodeploy.com
31
32
  licenses: []
32
33
  metadata:
@@ -48,7 +49,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
48
49
  - !ruby/object:Gem::Version
49
50
  version: '0'
50
51
  requirements: []
51
- rubygems_version: 3.3.26
52
+ rubygems_version: 3.1.6
52
53
  signing_key:
53
54
  specification_version: 4
54
55
  summary: neetoDeploy autoscaler gem