nutcracker-web 0.0.14 → 0.0.19
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 +5 -5
- data/Gemfile +3 -1
- data/Gemfile.lock +31 -23
- data/lib/nutcracker/web/app.rb +28 -7
- data/lib/nutcracker/web/version.rb +1 -1
- data/lib/nutcracker/web.rb +3 -3
- metadata +12 -15
- data/public/assets/application.css +0 -7294
- data/public/assets/application.js +0 -263
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2e70d2a5e6a87730d2ad90905a8da57cf3269475dc85be6666306283fe5296df
|
4
|
+
data.tar.gz: a9f60bf120fa16a5ce1413d0c465044e75f9b1fcb157e932a1b6f7ec3b36c47e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8498dfc5396afc100f27b84ff3fe9a47d4384b0c60388bf8d85b2ae89fcc7719ca9a2b390813f4a1dc2294a032ac23d39dd18f21a4ac9e64d7926b5287585e3b
|
7
|
+
data.tar.gz: cfa689fb43a17c8de1b277beb4b3bf40881916257e5f6652cd1a38f6707ef39424a1827d906d26151959bef4074b569383183fa9a7d2c49ca138cbc2726e5295
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -4,38 +4,44 @@ GEM
|
|
4
4
|
coffee-script (2.4.1)
|
5
5
|
coffee-script-source
|
6
6
|
execjs
|
7
|
-
coffee-script-source (1.
|
8
|
-
|
7
|
+
coffee-script-source (1.12.2)
|
8
|
+
concurrent-ruby (1.0.5)
|
9
|
+
daemons (1.4.1)
|
9
10
|
eco (1.0.0)
|
10
11
|
coffee-script
|
11
12
|
eco-source
|
12
13
|
execjs
|
13
14
|
eco-source (1.1.0.rc.1)
|
14
|
-
eventmachine (1.
|
15
|
-
execjs (2.
|
16
|
-
|
15
|
+
eventmachine (1.2.7)
|
16
|
+
execjs (2.7.0)
|
17
|
+
gem-release (2.2.2)
|
18
|
+
haml (5.0.4)
|
19
|
+
temple (>= 0.8.0)
|
17
20
|
tilt
|
18
|
-
|
19
|
-
nutcracker (0.4.1.
|
21
|
+
mustermann (1.0.3)
|
22
|
+
nutcracker (0.4.1.22)
|
20
23
|
redis
|
21
|
-
rack (
|
22
|
-
rack-protection (
|
24
|
+
rack (2.2.3)
|
25
|
+
rack-protection (2.0.4)
|
23
26
|
rack
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
rake (13.0.1)
|
28
|
+
redis (4.0.2)
|
29
|
+
sinatra (2.0.4)
|
30
|
+
mustermann (~> 1.0)
|
31
|
+
rack (~> 2.0)
|
32
|
+
rack-protection (= 2.0.4)
|
33
|
+
tilt (~> 2.0)
|
34
|
+
sprockets (3.7.2)
|
35
|
+
concurrent-ruby (~> 1.0)
|
30
36
|
rack (> 1, < 3)
|
31
|
-
|
37
|
+
temple (0.8.0)
|
38
|
+
thin (1.8.1)
|
32
39
|
daemons (~> 1.0, >= 1.0.9)
|
33
40
|
eventmachine (~> 1.0, >= 1.0.4)
|
34
|
-
rack (
|
35
|
-
tilt (2.0.
|
36
|
-
uglifier (
|
37
|
-
execjs (>= 0.3.0)
|
38
|
-
json (>= 1.8.0)
|
41
|
+
rack (>= 1, < 3)
|
42
|
+
tilt (2.0.8)
|
43
|
+
uglifier (4.1.19)
|
44
|
+
execjs (>= 0.3.0, < 3)
|
39
45
|
|
40
46
|
PLATFORMS
|
41
47
|
ruby
|
@@ -43,13 +49,15 @@ PLATFORMS
|
|
43
49
|
DEPENDENCIES
|
44
50
|
coffee-script
|
45
51
|
eco
|
52
|
+
gem-release
|
46
53
|
haml
|
47
|
-
json
|
48
54
|
nutcracker (>= 0.4.1.20)
|
55
|
+
rack (>= 2.0.8)
|
56
|
+
rake
|
49
57
|
sinatra
|
50
58
|
sprockets
|
51
59
|
thin
|
52
60
|
uglifier
|
53
61
|
|
54
62
|
BUNDLED WITH
|
55
|
-
1.
|
63
|
+
1.17.3
|
data/lib/nutcracker/web/app.rb
CHANGED
@@ -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,29 @@ module Nutcracker
|
|
21
24
|
haml :index
|
22
25
|
end
|
23
26
|
|
27
|
+
get '/status' do
|
28
|
+
# return array of maps each map is {instance_ip => [unresposive_node_ports],instance_ip => [unresposive_node_ports]}
|
29
|
+
# exaple: [{"127.0.0.1"=>["6370", "6371", "6372", "6373"]}, {"192.168.1.114"=>["6370"]}]
|
30
|
+
unresponsive_ndoes = @nutcracker.
|
31
|
+
config.
|
32
|
+
values.
|
33
|
+
map {|x| x["servers"] + [x["listen"]]}.
|
34
|
+
flatten.
|
35
|
+
map {|x| x.split(":")}.
|
36
|
+
map {|host, port| Thread.new {TCPSocket.new(host,port).close.nil? rescue {:host=>host,:port=>port} } }.
|
37
|
+
map(&:value).
|
38
|
+
group_by{|k| k[:host]}.
|
39
|
+
map {|k,v| [k=>v.map { |v| v[:port] }] }.
|
40
|
+
flatten
|
41
|
+
#if there are unresposive_node in the list return status 401, if empty return 200
|
42
|
+
status = unresponsive_ndoes.empty?.tap {|x| status(x ? 200 : 401)}
|
43
|
+
end
|
44
|
+
|
24
45
|
get '/overview.json' do
|
25
46
|
content_type :json
|
26
47
|
overview.to_json
|
27
48
|
end
|
28
|
-
|
49
|
+
|
29
50
|
def self.assets
|
30
51
|
require 'sprockets'
|
31
52
|
Sprockets::Environment.new { |env|
|
@@ -34,26 +55,26 @@ module Nutcracker
|
|
34
55
|
}
|
35
56
|
}
|
36
57
|
end
|
37
|
-
|
58
|
+
|
38
59
|
private
|
39
|
-
|
60
|
+
|
40
61
|
def overview
|
41
62
|
JSON.parse(@nutcracker.overview.to_json).tap do |internal|
|
42
63
|
internal["clusters"] += overview_from_external_servers["clusters"]
|
43
64
|
end
|
44
65
|
end
|
45
|
-
|
66
|
+
|
46
67
|
def overview_from_external_servers
|
47
68
|
{"clusters" => []}.tap do |data|
|
48
|
-
Queue.new.tap do |q|
|
69
|
+
Queue.new.tap do |q|
|
49
70
|
@external_servers.map do |server|
|
50
|
-
Thread.new { q.push JSON.parse(open("http://#{server}/overview.json").read) }
|
71
|
+
Thread.new { q.push JSON.parse(open("http://#{server}/overview.json").read) rescue nil }
|
51
72
|
end.each(&:join)
|
52
73
|
data["clusters"] += q.pop["clusters"] while not q.empty?
|
53
74
|
end # queue
|
54
75
|
end # data
|
55
76
|
end # def
|
56
|
-
|
77
|
+
|
57
78
|
end
|
58
79
|
end
|
59
80
|
end
|
data/lib/nutcracker/web.rb
CHANGED
@@ -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.
|
4
|
+
version: 0.0.19
|
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:
|
11
|
+
date: 2021-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -42,30 +42,30 @@ dependencies:
|
|
42
42
|
name: nutcracker
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.4.1.
|
47
|
+
version: 0.4.1.23
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.4.1.
|
54
|
+
version: 0.4.1.23
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rack
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
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:
|
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
|
-
|
147
|
-
|
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: []
|