emptyd 0.0.2 → 0.0.3
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/bin/emptyd +9 -1
- data/lib/emptyd/version.rb +1 -1
- data/lib/emptyd.rb +16 -6
- metadata +14 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32566e139b257acf527f779fd480c9fec01e4960
|
4
|
+
data.tar.gz: 81f6f5a86813270382e4c56a9ccc1294a53c377c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cbcd1d4083dfa2f247319607760d5f7fe7293e742319ee2bdd8464d4e614d5567032a4146bf9cb179544b481d9c5191fd5f5b45ae759152259d725489b148acf
|
7
|
+
data.tar.gz: 0e9b62a83582dc85de24904cfe22fe51b1843b477a2a875bac2227b03fbedaf28941d3cce298211c810959d331f4e8e19e64c1997f7dd96554d00186b56d66b0
|
data/bin/emptyd
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# vim: ai:ts=2:sw=2:et:syntax=ruby
|
3
3
|
|
4
|
-
lp = File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
|
4
|
+
lp = File.expand_path(File.join(File.dirname(File.realpath(__FILE__)), "..", "lib"))
|
5
5
|
|
6
6
|
unless $LOAD_PATH.include?(lp)
|
7
7
|
$LOAD_PATH.unshift(lp)
|
@@ -34,6 +34,8 @@ class MyHttpServer < EM::Connection
|
|
34
34
|
|
35
35
|
begin
|
36
36
|
case @http_path_info
|
37
|
+
when %r{/ping}
|
38
|
+
# nop
|
37
39
|
when %r{/session/new}
|
38
40
|
session = Emptyd::Session.new JSON.parse(@http_post_content, :symbolize_names => true).merge(:logger => @logger)
|
39
41
|
response.content = JSON.dump({id: session.uuid})
|
@@ -50,6 +52,9 @@ class MyHttpServer < EM::Connection
|
|
50
52
|
response.send_response
|
51
53
|
end
|
52
54
|
end
|
55
|
+
when %r{/session/(.*)/write/(.*)}
|
56
|
+
session = Emptyd::Session[$1]
|
57
|
+
session.write $2, @http_post_content
|
53
58
|
when %r{/session/(.*)/write}
|
54
59
|
session = Emptyd::Session[$1]
|
55
60
|
session << @http_post_content
|
@@ -91,6 +96,9 @@ CONFIG = {
|
|
91
96
|
end
|
92
97
|
end
|
93
98
|
|
99
|
+
# XXX: We need a shared environment for Session and Connection
|
100
|
+
$PASSWORD = CONFIG[:password]
|
101
|
+
|
94
102
|
EM.run do
|
95
103
|
$0 = "emptyd"
|
96
104
|
logger = Logger.new(STDOUT)
|
data/lib/emptyd/version.rb
CHANGED
data/lib/emptyd.rb
CHANGED
@@ -83,7 +83,9 @@ module Emptyd
|
|
83
83
|
else
|
84
84
|
@@count[self.key] = self
|
85
85
|
@logger.debug "Created new conn: #{key}, quota = #{@@count.size}"
|
86
|
-
|
86
|
+
options = { :user_known_hosts_file => [] }
|
87
|
+
options[:password] = $PASSWORD if $PASSWORD
|
88
|
+
EM::Ssh.start(@host, @user, options) do |conn|
|
87
89
|
conn.errback { |err| errback err }
|
88
90
|
conn.on(:closed) { errback "closed" }
|
89
91
|
conn.callback do |ssh|
|
@@ -133,11 +135,11 @@ module Emptyd
|
|
133
135
|
@connecting = false
|
134
136
|
if had_valid_conn
|
135
137
|
@sessions.each do |session|
|
136
|
-
session.queue.push [self, :error,
|
138
|
+
session.queue.push [self, :error, @error]
|
137
139
|
end
|
138
140
|
else
|
139
141
|
@run_queue.each do |cmd,session,callback|
|
140
|
-
callback.call self, :error
|
142
|
+
callback.call self, :error, @error
|
141
143
|
end
|
142
144
|
end
|
143
145
|
end
|
@@ -186,7 +188,6 @@ module Emptyd
|
|
186
188
|
|
187
189
|
ch.on_close do
|
188
190
|
@updated_at = Time.now
|
189
|
-
p "closed"
|
190
191
|
callback.call self, :close
|
191
192
|
end
|
192
193
|
|
@@ -264,10 +265,10 @@ module Emptyd
|
|
264
265
|
|
265
266
|
def destroy
|
266
267
|
@logger.debug "Destroying session #{@uuid}"
|
267
|
-
|
268
|
+
@logger.debug @running.map{|h,v| [h, v.class.name]}
|
268
269
|
@running.each do |h,v|
|
269
270
|
if v.respond_to? :close
|
270
|
-
|
271
|
+
@logger.debug "Closing channel for #{h}"
|
271
272
|
v.close
|
272
273
|
end
|
273
274
|
end
|
@@ -294,6 +295,7 @@ module Emptyd
|
|
294
295
|
dead = @connections.values.select(&:dead?)
|
295
296
|
alive = @connections.values.reject(&:dead?)
|
296
297
|
@queue.push [nil,:dead,dead.map(&:key)]
|
298
|
+
@queue.push [nil,:done,nil] if alive.empty?
|
297
299
|
alive.each { |h| @running[h.key] = true }
|
298
300
|
alive.each do |h|
|
299
301
|
h.run(cmd, self) { |h,e,c| callback h,e,c }
|
@@ -313,6 +315,14 @@ module Emptyd
|
|
313
315
|
}
|
314
316
|
end
|
315
317
|
|
318
|
+
def write key, data
|
319
|
+
v = @running[key]
|
320
|
+
raise KeyError unless @keys.include?(key)
|
321
|
+
if v.respond_to? :send_data
|
322
|
+
v.send_data data
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
316
326
|
def << data
|
317
327
|
@running.each do |k,v|
|
318
328
|
if v.respond_to? :send_data
|
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emptyd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kmeaw
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: em-ssh
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
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
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: eventmachine_httpserver
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
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
68
|
version: '0'
|
69
69
|
description: An HTTP interface to run a single command on a cluster.
|
@@ -74,7 +74,7 @@ executables:
|
|
74
74
|
extensions: []
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
|
-
-
|
77
|
+
- .gitignore
|
78
78
|
- Gemfile
|
79
79
|
- LICENSE.txt
|
80
80
|
- README.md
|
@@ -93,17 +93,17 @@ require_paths:
|
|
93
93
|
- lib
|
94
94
|
required_ruby_version: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- -
|
96
|
+
- - '>='
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - '>='
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
requirements: []
|
105
105
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.1.9
|
107
107
|
signing_key:
|
108
108
|
specification_version: 4
|
109
109
|
summary: Run commands on multiple hosts over SSH
|