bosh-director 1.2129.0 → 1.2131.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -40,6 +40,10 @@ module Bosh::Director
40
40
  send_message(method_name, *args)
41
41
  end
42
42
 
43
+ def get_state(*args)
44
+ send_message(:get_state, *args)
45
+ end
46
+
43
47
  def prepare(*args)
44
48
  send_long_running_message(:prepare, *args)
45
49
  end
@@ -5,6 +5,41 @@ module Bosh::Director
5
5
  class RunErrand < BaseJob
6
6
  @queue = :normal
7
7
 
8
+ class ErrandResult
9
+ attr_reader :exit_code
10
+
11
+ AGENT_TASK_RESULT_SCHEMA = ::Membrane::SchemaParser.parse do
12
+ {
13
+ 'exit_code' => Integer,
14
+ 'stdout' => String,
15
+ 'stderr' => String,
16
+ }
17
+ end
18
+
19
+ # Explicitly write out schema of the director task result
20
+ # to avoid accidently leaking agent task result extra fields.
21
+ def self.from_agent_task_result(agent_task_result)
22
+ AGENT_TASK_RESULT_SCHEMA.validate(agent_task_result)
23
+ new(*agent_task_result.values_at('exit_code', 'stdout', 'stderr'))
24
+ rescue Membrane::SchemaValidationError => e
25
+ raise AgentInvalidTaskResult, e.message
26
+ end
27
+
28
+ def initialize(exit_code, stdout, stderr)
29
+ @exit_code = exit_code
30
+ @stdout = stdout
31
+ @stderr = stderr
32
+ end
33
+
34
+ def to_hash
35
+ {
36
+ 'exit_code' => @exit_code,
37
+ 'stdout' => @stdout,
38
+ 'stderr' => @stderr,
39
+ }
40
+ end
41
+ end
42
+
8
43
  def self.job_type
9
44
  :run_errand
10
45
  end
@@ -21,30 +56,17 @@ module Bosh::Director
21
56
  agent = @instance_manager.agent_client_for(instance)
22
57
  agent_task_result = agent.run_errand
23
58
 
24
- director_task_result = extract_director_task_result(agent_task_result)
25
- result_file.write(JSON.dump(director_task_result) + "\n")
26
- end
27
-
28
- private
59
+ errand_result = ErrandResult.from_agent_task_result(agent_task_result)
60
+ result_file.write(JSON.dump(errand_result.to_hash) + "\n")
29
61
 
30
- AGENT_TASK_RESULT_SCHEMA = ::Membrane::SchemaParser.parse do
31
- { 'exit_code' => Integer,
32
- 'stdout' => String,
33
- 'stderr' => String,
34
- }
35
- end
62
+ title_prefix = "Errand `#{@errand_name}' completed"
63
+ exit_code_suffix = "(exit code #{errand_result.exit_code})"
36
64
 
37
- # Explicitly write out schema of the director task result
38
- # to avoid accidently leaking agent task result extra fields.
39
- def extract_director_task_result(agent_task_result)
40
- AGENT_TASK_RESULT_SCHEMA.validate(agent_task_result)
41
- {
42
- 'exit_code' => agent_task_result['exit_code'],
43
- 'stdout' => agent_task_result['stdout'],
44
- 'stderr' => agent_task_result['stderr'],
45
- }
46
- rescue Membrane::SchemaValidationError => e
47
- raise AgentInvalidTaskResult, e.message
65
+ if errand_result.exit_code == 0
66
+ "#{title_prefix} successfully #{exit_code_suffix}"
67
+ else
68
+ "#{title_prefix} with error #{exit_code_suffix}"
69
+ end
48
70
  end
49
71
  end
50
72
  end
@@ -41,7 +41,7 @@ module Bosh::Director
41
41
  job_state = nil
42
42
  resource_pool = nil
43
43
  job_vitals = nil
44
- index = nil
44
+ job_index = nil
45
45
 
46
46
  begin
47
47
  agent = AgentClient.with_defaults(vm.agent_id, :timeout => TIMEOUT)
@@ -50,7 +50,7 @@ module Bosh::Director
50
50
  ips << network["ip"]
51
51
  end
52
52
 
53
- index = get_index(agent_state)
53
+ job_index = get_index(agent_state)
54
54
 
55
55
  job_name = agent_state["job"]["name"] if agent_state["job"]
56
56
  job_state = agent_state["job_state"]
@@ -64,8 +64,6 @@ module Bosh::Director
64
64
  job_state = "unresponsive agent"
65
65
  end
66
66
 
67
- instance = Models::Instance.find(deployment_id: @deployment_id, job: job_name, index: index)
68
-
69
67
  if @domain
70
68
  ips.each do |ip|
71
69
  records = Models::Dns::Record.filter(domain_id: @domain.id, type: "A", content: ip)
@@ -79,11 +77,11 @@ module Bosh::Director
79
77
  :dns => dns_records.flatten,
80
78
  :agent_id => vm.agent_id,
81
79
  :job_name => job_name,
82
- :index => index,
80
+ :index => job_index,
83
81
  :job_state => job_state,
84
82
  :resource_pool => resource_pool,
85
83
  :vitals => job_vitals,
86
- :resurrection_paused => instance ? instance.resurrection_paused : nil,
84
+ :resurrection_paused => vm.instance ? vm.instance.resurrection_paused : nil,
87
85
  }
88
86
  end
89
87
 
@@ -91,6 +89,7 @@ module Bosh::Director
91
89
 
92
90
  def get_index(agent_state)
93
91
  index = agent_state["index"]
92
+
94
93
  # Postgres cannot coerce an empty string to integer, and fails on Models::Instance.find
95
94
  index = nil if index.is_a?(String) && index.empty?
96
95
 
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Director
3
- VERSION = '1.2129.0'
3
+ VERSION = '1.2131.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh-director
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2129.0
4
+ version: 1.2131.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-03-05 00:00:00.000000000 Z
12
+ date: 2014-03-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bcrypt-ruby
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 1.2129.0
37
+ version: 1.2131.0
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 1.2129.0
45
+ version: 1.2131.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: bosh-core
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 1.2129.0
53
+ version: 1.2131.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 1.2129.0
61
+ version: 1.2131.0
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: bosh-director-core
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: 1.2129.0
69
+ version: 1.2131.0
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: 1.2129.0
77
+ version: 1.2131.0
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: bosh_common
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +82,7 @@ dependencies:
82
82
  requirements:
83
83
  - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: 1.2129.0
85
+ version: 1.2131.0
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +90,7 @@ dependencies:
90
90
  requirements:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: 1.2129.0
93
+ version: 1.2131.0
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: bosh_cpi
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -98,7 +98,7 @@ dependencies:
98
98
  requirements:
99
99
  - - ~>
100
100
  - !ruby/object:Gem::Version
101
- version: 1.2129.0
101
+ version: 1.2131.0
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -106,7 +106,7 @@ dependencies:
106
106
  requirements:
107
107
  - - ~>
108
108
  - !ruby/object:Gem::Version
109
- version: 1.2129.0
109
+ version: 1.2131.0
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: bosh_openstack_cpi
112
112
  requirement: !ruby/object:Gem::Requirement
@@ -114,7 +114,7 @@ dependencies:
114
114
  requirements:
115
115
  - - ~>
116
116
  - !ruby/object:Gem::Version
117
- version: 1.2129.0
117
+ version: 1.2131.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
@@ -122,7 +122,7 @@ dependencies:
122
122
  requirements:
123
123
  - - ~>
124
124
  - !ruby/object:Gem::Version
125
- version: 1.2129.0
125
+ version: 1.2131.0
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: bosh_aws_cpi
128
128
  requirement: !ruby/object:Gem::Requirement
@@ -130,7 +130,7 @@ dependencies:
130
130
  requirements:
131
131
  - - ~>
132
132
  - !ruby/object:Gem::Version
133
- version: 1.2129.0
133
+ version: 1.2131.0
134
134
  type: :runtime
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
@@ -138,7 +138,7 @@ dependencies:
138
138
  requirements:
139
139
  - - ~>
140
140
  - !ruby/object:Gem::Version
141
- version: 1.2129.0
141
+ version: 1.2131.0
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: bosh_vsphere_cpi
144
144
  requirement: !ruby/object:Gem::Requirement
@@ -146,7 +146,7 @@ dependencies:
146
146
  requirements:
147
147
  - - ~>
148
148
  - !ruby/object:Gem::Version
149
- version: 1.2129.0
149
+ version: 1.2131.0
150
150
  type: :runtime
151
151
  prerelease: false
152
152
  version_requirements: !ruby/object:Gem::Requirement
@@ -154,7 +154,7 @@ dependencies:
154
154
  requirements:
155
155
  - - ~>
156
156
  - !ruby/object:Gem::Version
157
- version: 1.2129.0
157
+ version: 1.2131.0
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: bosh_vcloud_cpi
160
160
  requirement: !ruby/object:Gem::Requirement
@@ -493,7 +493,7 @@ dependencies:
493
493
  version: '1.0'
494
494
  description: ! 'BOSH Director
495
495
 
496
- 5e7120'
496
+ bee75e'
497
497
  email: support@cloudfoundry.com
498
498
  executables:
499
499
  - bosh-director
@@ -740,7 +740,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
740
740
  version: '0'
741
741
  segments:
742
742
  - 0
743
- hash: -928664600753026482
743
+ hash: 470950328678415738
744
744
  requirements: []
745
745
  rubyforge_project:
746
746
  rubygems_version: 1.8.23