bosh_agent 1.2063.0 → 1.2068.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,53 @@
1
+ require 'open3'
2
+
3
+ module Bosh::Agent
4
+ module Message
5
+ class RunErrand
6
+ def self.process(args)
7
+ self.new(args).start
8
+ end
9
+
10
+ def self.long_running?
11
+ true
12
+ end
13
+
14
+ def initialize(args)
15
+ @base_dir = Bosh::Agent::Config.base_dir
16
+ @logger = Bosh::Agent::Config.logger
17
+ end
18
+
19
+ def start
20
+ state = Bosh::Agent::Config.state.to_hash
21
+
22
+ job_templates = state.fetch('job', {}).fetch('templates', [])
23
+ if job_templates.empty?
24
+ raise Bosh::Agent::MessageHandlerError,
25
+ "At least one job template is required to run an errand"
26
+ end
27
+
28
+ job_template_name = job_templates.first.fetch('name')
29
+
30
+ env = { 'PATH' => '/usr/sbin:/usr/bin:/sbin:/bin' }
31
+ cmd = "#{@base_dir}/jobs/#{job_template_name}/bin/run"
32
+ opts = { :unsetenv_others => true }
33
+
34
+ unless File.executable?(cmd)
35
+ raise Bosh::Agent::MessageHandlerError,
36
+ "Job template #{job_template_name} does not have executable bin/run"
37
+ end
38
+
39
+ begin
40
+ stdout, stderr, status = Open3.capture3(env, cmd, opts)
41
+ {
42
+ 'exit_code' => status.exitstatus,
43
+ 'stdout' => stdout,
44
+ 'stderr' => stderr,
45
+ }
46
+ rescue Exception => e
47
+ @logger.warn("%s\n%s" % [e.inspect, e.backtrace.join("\n")])
48
+ raise Bosh::Agent::MessageHandlerError, e.inspect
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Bosh
4
4
  module Agent
5
- VERSION = '1.2063.0'
5
+ VERSION = '1.2068.0'
6
6
  BOSH_PROTOCOL = "1"
7
7
  end
8
8
  end
data/lib/bosh_agent.rb CHANGED
@@ -87,6 +87,7 @@ require 'bosh_agent/message/apply'
87
87
  require 'bosh_agent/message/compile_package'
88
88
  require 'bosh_agent/message/logs'
89
89
  require 'bosh_agent/message/ssh'
90
+ require 'bosh_agent/message/run_errand'
90
91
 
91
92
  require 'bosh_agent/handler'
92
93
  require 'bosh_agent/runner'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh_agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2063.0
4
+ version: 1.2068.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-25 00:00:00.000000000 Z
12
+ date: 2014-02-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: netaddr
@@ -162,7 +162,7 @@ dependencies:
162
162
  requirements:
163
163
  - - ~>
164
164
  - !ruby/object:Gem::Version
165
- version: 1.2063.0
165
+ version: 1.2068.0
166
166
  type: :runtime
167
167
  prerelease: false
168
168
  version_requirements: !ruby/object:Gem::Requirement
@@ -170,7 +170,7 @@ dependencies:
170
170
  requirements:
171
171
  - - ~>
172
172
  - !ruby/object:Gem::Version
173
- version: 1.2063.0
173
+ version: 1.2068.0
174
174
  - !ruby/object:Gem::Dependency
175
175
  name: bosh_common
176
176
  requirement: !ruby/object:Gem::Requirement
@@ -178,7 +178,7 @@ dependencies:
178
178
  requirements:
179
179
  - - ~>
180
180
  - !ruby/object:Gem::Version
181
- version: 1.2063.0
181
+ version: 1.2068.0
182
182
  type: :runtime
183
183
  prerelease: false
184
184
  version_requirements: !ruby/object:Gem::Requirement
@@ -186,7 +186,7 @@ dependencies:
186
186
  requirements:
187
187
  - - ~>
188
188
  - !ruby/object:Gem::Version
189
- version: 1.2063.0
189
+ version: 1.2068.0
190
190
  - !ruby/object:Gem::Dependency
191
191
  name: blobstore_client
192
192
  requirement: !ruby/object:Gem::Requirement
@@ -194,7 +194,7 @@ dependencies:
194
194
  requirements:
195
195
  - - ~>
196
196
  - !ruby/object:Gem::Version
197
- version: 1.2063.0
197
+ version: 1.2068.0
198
198
  type: :runtime
199
199
  prerelease: false
200
200
  version_requirements: !ruby/object:Gem::Requirement
@@ -202,7 +202,7 @@ dependencies:
202
202
  requirements:
203
203
  - - ~>
204
204
  - !ruby/object:Gem::Version
205
- version: 1.2063.0
205
+ version: 1.2068.0
206
206
  - !ruby/object:Gem::Dependency
207
207
  name: rspec
208
208
  requirement: !ruby/object:Gem::Requirement
@@ -238,7 +238,7 @@ dependencies:
238
238
  description: ! 'This agent listens for instructions from the bosh director on each
239
239
  server that bosh manages.
240
240
 
241
- 941741'
241
+ 5f63a5'
242
242
  email: support@cloudfoundry.com
243
243
  executables:
244
244
  - bosh_agent
@@ -283,6 +283,7 @@ files:
283
283
  - lib/bosh_agent/message/migrate_disk.rb
284
284
  - lib/bosh_agent/message/mount_disk.rb
285
285
  - lib/bosh_agent/message/prepare.rb
286
+ - lib/bosh_agent/message/run_errand.rb
286
287
  - lib/bosh_agent/message/ssh.rb
287
288
  - lib/bosh_agent/message/state.rb
288
289
  - lib/bosh_agent/message/unmount_disk.rb
@@ -342,7 +343,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
342
343
  version: '0'
343
344
  segments:
344
345
  - 0
345
- hash: 3334952087498420223
346
+ hash: -694221398839130638
346
347
  requirements: []
347
348
  rubyforge_project:
348
349
  rubygems_version: 1.8.23