ubalo 0.28 → 0.29

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.
data/bin/ubalo CHANGED
@@ -199,6 +199,16 @@ command :run do |c|
199
199
  end
200
200
  end
201
201
 
202
+ desc 'SSH into as a task'
203
+ command :ssh do |c|
204
+ c.action do |global_options,options,args|
205
+ task = pod.run(nil, nil)
206
+ task.wait_for_process
207
+ task.container_process.ssh
208
+ task.stop!
209
+ end
210
+ end
211
+
202
212
  desc 'Show information about a pod'
203
213
  command :pod do |c|
204
214
  c.action do |global_options,options,args|
@@ -8,7 +8,7 @@ module Ubalo
8
8
  container_process
9
9
  end
10
10
 
11
- attr_reader :state, :exit_type, :exit_result, :output
11
+ attr_reader :state, :exit_type, :exit_result, :output, :ssh_uri
12
12
 
13
13
  def initialize(account)
14
14
  @account = account
@@ -22,6 +22,15 @@ module Ubalo
22
22
  @exit_type = attributes.fetch('exit_type')
23
23
  @exit_result = attributes.fetch('exit_result')
24
24
  @output = attributes.fetch('output')
25
+ @ssh_uri = attributes.fetch('ssh_uri')
26
+ end
27
+
28
+ def ssh
29
+ unless @ssh_uri
30
+ raise Ubalo::Error, "Unable to ssh: no connection information available"
31
+ end
32
+ uri = URI.parse(@ssh_uri)
33
+ system("ssh", "-o", "StrictHostKeyChecking=no", "-o", "CheckHostIp=no", "-p", uri.port.to_s, "#{uri.user}@#{uri.host}")
25
34
  end
26
35
 
27
36
  def tail(tailer, message)
@@ -38,15 +38,22 @@ module Ubalo
38
38
  end
39
39
 
40
40
  def run(argv, arg)
41
- if argv.empty?
41
+ if argv && argv.empty?
42
42
  raise Ubalo::Error, "Specify the command to run"
43
43
  end
44
44
 
45
- params = {
46
- :arg_content_type => UbaloJSON.content_type,
47
- :arg => UbaloJSON.dump(arg),
48
- :argv => argv,
49
- }
45
+ params = {}
46
+
47
+ if arg
48
+ params.merge!(
49
+ :arg_content_type => UbaloJSON.content_type,
50
+ :arg => UbaloJSON.dump(arg),
51
+ )
52
+ end
53
+
54
+ if argv
55
+ params.merge!(:argv => argv)
56
+ end
50
57
  task = @account.task_from_json(request(:post, "/tasks", :params => params))
51
58
 
52
59
  task
@@ -29,11 +29,7 @@ module Ubalo
29
29
  def tail_process
30
30
  tailer = Ubalo::TimedTailer.new(logger)
31
31
 
32
- logger.poll do
33
- tailer.update("Starting...")
34
- refresh!
35
- container_process
36
- end
32
+ wait_for_process(tailer)
37
33
 
38
34
  container_process.tail(tailer, "Running #{label}...") do
39
35
  refresh!
@@ -43,11 +39,20 @@ module Ubalo
43
39
  tailer.update("Completed #{label}. Exit code: #{container_process.exit_result}.\n")
44
40
  end
45
41
 
42
+ def wait_for_process(tailer = nil)
43
+ logger.poll do
44
+ tailer.update("Starting...") if tailer
45
+ refresh!
46
+ container_process
47
+ end
48
+ end
49
+
46
50
  def stop!
47
51
  tailer = Ubalo::TimedTailer.new(logger)
48
52
 
49
53
  tailer.update("Stopping #{label}...")
50
54
  request(:put, "/stop")
55
+ refresh!
51
56
 
52
57
  logger.poll do
53
58
  tailer.update("Stopping #{label}...")
@@ -70,7 +75,9 @@ module Ubalo
70
75
  s = ""
71
76
  s << " label: #{label}\n"
72
77
  s << " pod: #{pod_name}\n"
73
- s << " argv: #{pretty_argv}\n"
78
+ if argv
79
+ s << " argv: #{pretty_argv}\n"
80
+ end
74
81
  if arg?
75
82
  if @arg_error
76
83
  s << "! Parse error in arg: #{@arg_error.message}"
@@ -1,6 +1,6 @@
1
1
  module Ubalo
2
2
  unless const_defined?('VERSION')
3
- VERSION = "0.28"
3
+ VERSION = "0.29"
4
4
  end
5
5
 
6
6
  def self.version
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ubalo
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.28'
4
+ version: '0.29'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-02 00:00:00.000000000 Z
12
+ date: 2012-07-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gli
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &70223958033980 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,15 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
24
+ version_requirements: *70223958033980
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: highline
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &70223958033560 !ruby/object:Gem::Requirement
33
28
  none: false
34
29
  requirements:
35
30
  - - ! '>='
@@ -37,15 +32,10 @@ dependencies:
37
32
  version: '0'
38
33
  type: :runtime
39
34
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
35
+ version_requirements: *70223958033560
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: json
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &70223958033140 !ruby/object:Gem::Requirement
49
39
  none: false
50
40
  requirements:
51
41
  - - ! '>='
@@ -53,15 +43,10 @@ dependencies:
53
43
  version: '0'
54
44
  type: :runtime
55
45
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
46
+ version_requirements: *70223958033140
62
47
  - !ruby/object:Gem::Dependency
63
48
  name: rest-client
64
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &70223958027240 !ruby/object:Gem::Requirement
65
50
  none: false
66
51
  requirements:
67
52
  - - ~>
@@ -69,15 +54,10 @@ dependencies:
69
54
  version: 1.6.3
70
55
  type: :runtime
71
56
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: 1.6.3
57
+ version_requirements: *70223958027240
78
58
  - !ruby/object:Gem::Dependency
79
59
  name: archive-tar-minitar
80
- requirement: !ruby/object:Gem::Requirement
60
+ requirement: &70223958026680 !ruby/object:Gem::Requirement
81
61
  none: false
82
62
  requirements:
83
63
  - - ! '>='
@@ -85,15 +65,10 @@ dependencies:
85
65
  version: '0'
86
66
  type: :runtime
87
67
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
68
+ version_requirements: *70223958026680
94
69
  - !ruby/object:Gem::Dependency
95
70
  name: launchy
96
- requirement: !ruby/object:Gem::Requirement
71
+ requirement: &70223958026100 !ruby/object:Gem::Requirement
97
72
  none: false
98
73
  requirements:
99
74
  - - ! '>='
@@ -101,12 +76,7 @@ dependencies:
101
76
  version: '0'
102
77
  type: :runtime
103
78
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
79
+ version_requirements: *70223958026100
110
80
  description: CLI and API client for Ubalo
111
81
  email: dev@ubalo.com
112
82
  executables:
@@ -147,8 +117,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
117
  version: '0'
148
118
  requirements: []
149
119
  rubyforge_project:
150
- rubygems_version: 1.8.23
120
+ rubygems_version: 1.8.11
151
121
  signing_key:
152
122
  specification_version: 3
153
123
  summary: CLI and API client for Ubalo
154
124
  test_files: []
125
+ has_rdoc: