nutcracker-web 0.0.14 → 0.0.19
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|