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.
- data/lib/bosh_agent/message/run_errand.rb +53 -0
- data/lib/bosh_agent/version.rb +1 -1
- data/lib/bosh_agent.rb +1 -0
- metadata +11 -10
@@ -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
|
data/lib/bosh_agent/version.rb
CHANGED
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|
-
|
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:
|
346
|
+
hash: -694221398839130638
|
346
347
|
requirements: []
|
347
348
|
rubyforge_project:
|
348
349
|
rubygems_version: 1.8.23
|