bosh-director 1.2129.0 → 1.2131.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.
@@ -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