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 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