emptyd 0.0.2 → 0.0.3

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
  SHA1:
3
- metadata.gz: 3fda361182421082855d749acd1a551aa6e91945
4
- data.tar.gz: 8241b5977d1abedae42f7ca337a2a97edef3b23c
3
+ metadata.gz: 32566e139b257acf527f779fd480c9fec01e4960
4
+ data.tar.gz: 81f6f5a86813270382e4c56a9ccc1294a53c377c
5
5
  SHA512:
6
- metadata.gz: 3069fa9c80e7c57db53f45a3fa5a4831caab1ac53af6030fce57c7b1338aa976a1771f41388ddd51bfcbfaacaeb36829728df186c7a7597b7b186c92d1f82ff6
7
- data.tar.gz: 418666a78701ae6ce58a443f8d0b8f9a3cac7acec237ea5d81b31254bf7e6b360aee176830fd3fd042e2c02f6c2cabb3a2207439901433370d3470ac5f09a5f6
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)
@@ -1,3 +1,3 @@
1
1
  module Emptyd
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
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
- EM::Ssh.start(@host, @user, user_known_hosts_file: []) do |conn|
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, nil]
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
- p @running.map{|h,v| [h, v.class.name]}
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
- p "Closing channel for #{h}"
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.2
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-18 00:00:00.000000000 Z
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
- - ".gitignore"
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.0.14
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