bosh_agent 1.2063.0 → 1.2068.0

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