nutcracker-web 0.0.15 → 0.0.20

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
- SHA1:
3
- metadata.gz: 910e83e65e835e4cdadd52ea4832d333e72cb40a
4
- data.tar.gz: 1352fcebf6c527e6c6ec9501d4abca83bf2e5173
2
+ SHA256:
3
+ metadata.gz: f791f65c1eef5010bfe7e68837a32bd2c94af02f05ef47db3a898994e2c3d06c
4
+ data.tar.gz: 2e027d627de86005825a92ac848ab23d6cc156b7596e0bcfb53f4fc4e2cf2288
5
5
  SHA512:
6
- metadata.gz: 7bfb242dd4d8f41a15f590b3d6c5473eac69d040f2b0747791bec31a4377340d1dba695b47d28843e03ed4daf73ffb4a1c5c570d73297e19a85940119ff2d76e
7
- data.tar.gz: 6d2f347ba71ccb9beb24fa6ad580fe876cd9ba49a6ecff3da4794875d83abe21842b344c037bcc0acb0acebb1571fc5f4be1feb7dd1fbbe5cc57f7da73494927
6
+ metadata.gz: f5d1d232ca769d9fade62e6a726fbefadb25b0ad1d1c4d6b8c7ff4ee0ee1d35417c949e55666d7023e976c5a9aa0c4af935c51db54a2445e5e8ec0fcbd1e566c
7
+ data.tar.gz: 96400c59ae25624bee9d33a2fb7bb54a86c4de65275a5181870c7e2b9864c806dc63ec6c3424a0426b19a20482c9bcd0fcc4b05628261a12864a0defe1c0c616
data/Gemfile CHANGED
@@ -8,4 +8,6 @@ gem 'coffee-script'
8
8
  gem 'eco'
9
9
  gem 'uglifier'
10
10
  gem 'nutcracker', ">=0.4.1.20"
11
- gem 'rack', ">= 2.0.6"
11
+ gem "rack", ">= 2.0.8"
12
+ gem 'rake'
13
+ gem 'gem-release'
data/Gemfile.lock CHANGED
@@ -6,7 +6,7 @@ GEM
6
6
  execjs
7
7
  coffee-script-source (1.12.2)
8
8
  concurrent-ruby (1.0.5)
9
- daemons (1.2.6)
9
+ daemons (1.4.1)
10
10
  eco (1.0.0)
11
11
  coffee-script
12
12
  eco-source
@@ -14,15 +14,17 @@ GEM
14
14
  eco-source (1.1.0.rc.1)
15
15
  eventmachine (1.2.7)
16
16
  execjs (2.7.0)
17
+ gem-release (2.2.2)
17
18
  haml (5.0.4)
18
19
  temple (>= 0.8.0)
19
20
  tilt
20
21
  mustermann (1.0.3)
21
22
  nutcracker (0.4.1.22)
22
23
  redis
23
- rack (2.0.6)
24
+ rack (2.2.3)
24
25
  rack-protection (2.0.4)
25
26
  rack
27
+ rake (13.0.1)
26
28
  redis (4.0.2)
27
29
  sinatra (2.0.4)
28
30
  mustermann (~> 1.0)
@@ -33,7 +35,7 @@ GEM
33
35
  concurrent-ruby (~> 1.0)
34
36
  rack (> 1, < 3)
35
37
  temple (0.8.0)
36
- thin (1.7.2)
38
+ thin (1.8.1)
37
39
  daemons (~> 1.0, >= 1.0.9)
38
40
  eventmachine (~> 1.0, >= 1.0.4)
39
41
  rack (>= 1, < 3)
@@ -47,13 +49,15 @@ PLATFORMS
47
49
  DEPENDENCIES
48
50
  coffee-script
49
51
  eco
52
+ gem-release
50
53
  haml
51
54
  nutcracker (>= 0.4.1.20)
52
- rack (>= 2.0.6)
55
+ rack (>= 2.0.8)
56
+ rake
53
57
  sinatra
54
58
  sprockets
55
59
  thin
56
60
  uglifier
57
61
 
58
62
  BUNDLED WITH
59
- 1.16.1
63
+ 1.17.3
@@ -4,6 +4,9 @@ require 'tilt/haml'
4
4
  require 'haml'
5
5
  require 'sinatra'
6
6
  require 'json'
7
+ require 'thread'
8
+ require 'socket'
9
+
7
10
 
8
11
  module Nutcracker
9
12
  module Web
@@ -21,11 +24,34 @@ module Nutcracker
21
24
  haml :index
22
25
  end
23
26
 
27
+ get '/status.json' do
28
+ content_type :json
29
+ # return array of maps each map is {instance_ip => [unresposive_node_ports],instance_ip => [unresposive_node_ports]}
30
+ # exaple: [{"127.0.0.1"=>["6370", "6371", "6372", "6373"]}, {"192.168.1.114"=>["6370"]}]
31
+ # return status 500 if there are unresposive_node in the list, if empty return 200
32
+
33
+ @nutcracker.
34
+ config.
35
+ values.
36
+ map { |x| x["servers"] + [x["listen"]] }.
37
+ flatten.
38
+ map { |x| x.split(":") }.
39
+ map { |host, port| Thread.new { { host: host, port: port, ok: (TCPSocket.new(host,port).close.nil? rescue false) } } }.
40
+ map(&:value).
41
+ flatten.
42
+ reject { |node_health| node_health[:ok]}. #cleare all healthy nodes from the nodes array
43
+ tap { |unhealthy_nodes| status(500) unless unhealthy_nodes.empty? }.
44
+ group_by{|k| k[:host]}.
45
+ map {|k,v| [k=>v.map { |v| v[:port] }] }.
46
+ flatten.
47
+ to_json
48
+ end
49
+
24
50
  get '/overview.json' do
25
51
  content_type :json
26
52
  overview.to_json
27
53
  end
28
-
54
+
29
55
  def self.assets
30
56
  require 'sprockets'
31
57
  Sprockets::Environment.new { |env|
@@ -34,26 +60,26 @@ module Nutcracker
34
60
  }
35
61
  }
36
62
  end
37
-
63
+
38
64
  private
39
-
65
+
40
66
  def overview
41
67
  JSON.parse(@nutcracker.overview.to_json).tap do |internal|
42
68
  internal["clusters"] += overview_from_external_servers["clusters"]
43
69
  end
44
70
  end
45
-
71
+
46
72
  def overview_from_external_servers
47
73
  {"clusters" => []}.tap do |data|
48
- Queue.new.tap do |q|
74
+ Queue.new.tap do |q|
49
75
  @external_servers.map do |server|
50
- Thread.new { q.push JSON.parse(open("http://#{server}/overview.json").read) }
76
+ Thread.new { q.push JSON.parse(open("http://#{server}/overview.json").read) rescue nil }
51
77
  end.each(&:join)
52
78
  data["clusters"] += q.pop["clusters"] while not q.empty?
53
79
  end # queue
54
80
  end # data
55
81
  end # def
56
-
82
+
57
83
  end
58
84
  end
59
85
  end
@@ -1,5 +1,5 @@
1
1
  module Nutcracker
2
2
  module Web
3
- VERSION="0.0.15"
3
+ VERSION="0.0.20"
4
4
  end
5
5
  end
@@ -6,7 +6,7 @@ module Nutcracker
6
6
  @thread = Thread.new do
7
7
  Thread.current.abort_on_exception=true
8
8
 
9
- app = Rack::URLMap.new(o.fetch(:context,"/") =>
9
+ app = Rack::URLMap.new(o.fetch(:context,"/") =>
10
10
  App.new(nutcracker, o.fetch(:external_servers,[])))
11
11
 
12
12
  Rack::Server.start(
@@ -22,11 +22,11 @@ module Nutcracker
22
22
  end
23
23
  self
24
24
  end
25
-
25
+
26
26
  def self.join
27
27
  @thread.join
28
28
  end
29
-
29
+
30
30
  def self.stop
31
31
  @thread.kill
32
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nutcracker-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eran Barak Levi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-03 00:00:00.000000000 Z
11
+ date: 2021-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 2.0.6
61
+ version: 2.0.8
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 2.0.6
68
+ version: 2.0.8
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: haml
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -123,12 +123,10 @@ files:
123
123
  - lib/nutcracker/web.rb
124
124
  - lib/nutcracker/web/app.rb
125
125
  - lib/nutcracker/web/version.rb
126
- - public/assets/application.css
127
- - public/assets/application.js
128
126
  homepage: http://www.kontera.com
129
127
  licenses: []
130
128
  metadata: {}
131
- post_install_message:
129
+ post_install_message:
132
130
  rdoc_options: []
133
131
  require_paths:
134
132
  - lib
@@ -143,9 +141,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
141
  - !ruby/object:Gem::Version
144
142
  version: '0'
145
143
  requirements: []
146
- rubyforge_project: ruby-nutcracker-web
147
- rubygems_version: 2.6.12
148
- signing_key:
144
+ rubygems_version: 3.0.9
145
+ signing_key:
149
146
  specification_version: 4
150
147
  summary: Nutcracker Web Interface
151
148
  test_files: []