bosh-director 1.3026.0 → 1.3029.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed519d29a4572509fe05ebf8fec37d67c1c277d6
4
- data.tar.gz: 7e4fdc1b9b3e3b8e8f5e3387196dc2b8d9eeed9f
3
+ metadata.gz: 4e52d8d9d27d0a46765b40291d556b32a36943d3
4
+ data.tar.gz: 45ba14bb4b7d987a3511c0ae08c4e79c11fa7e37
5
5
  SHA512:
6
- metadata.gz: 8e6d564f23a21437dd2303e357b2600bcebdeb39dbce684e7df225169ed7640615db70c0c6a9ff280d38eed29c76aca3c5b61aa3c426d5307e40abd9286d96e9
7
- data.tar.gz: 9617aafab3a20069229d7963f8b43e99bb709c461e6834f3e6cbc21aa202932364e33c7d5a9a263813697fd8e125312812c84893ffc15849957df3e6c58e7789
6
+ metadata.gz: 4b7e47f11d79e579051e59c393e9a2699817c855603762b9986a5f327ef62693e6f20e96cedc8defb2bc98a33b9adc9056a3f89be4aa247a831326158782ce6c
7
+ data.tar.gz: 3b50663eca89edb836ffd924d17c18bc4cd8477d41d1a3e8384d4b40d36ab091fa7d3fd492ae783638c15d753ba20fbb751ff182dbee618c67456bf8d31fc268
@@ -52,59 +52,68 @@ module Bosh::Director
52
52
  end
53
53
 
54
54
  def method_missing(method_name, *args)
55
- send_message(method_name, *args)
56
- end
57
-
58
- # Define methods on this class to make instance_double more useful
59
- [
60
- :cancel_task,
61
- :get_state,
62
- :get_task,
63
- :list_disk,
64
- :prepare_network_change,
65
- :prepare_configure_networks,
66
- :start,
67
- ].each do |message|
68
- define_method(message) do |*args|
69
- send_message(message, *args)
70
- end
55
+ handle_message_with_retry(method_name, *args)
56
+ end
57
+
58
+ def get_state(*args)
59
+ send_message(:get_state, *args)
60
+ end
61
+
62
+ def cancel_task(*args)
63
+ send_message(:cancel_task, *args)
64
+ end
65
+
66
+ def list_disk(*args)
67
+ send_message(:list_disk, *args)
68
+ end
69
+
70
+ def prepare_configure_networks(*args)
71
+ send_message(:prepare_configure_networks, *args)
72
+ end
73
+
74
+ def prepare_network_change(*args)
75
+ send_message(:prepare_network_change, *args)
76
+ end
77
+
78
+ def start(*args)
79
+ send_message(:start, *args)
71
80
  end
72
81
 
73
82
  def prepare(*args)
74
- send_long_running_message(:prepare, *args)
83
+ send_message(:prepare, *args)
75
84
  end
76
85
 
77
86
  def apply(*args)
78
- send_long_running_message(:apply, *args)
87
+ send_message(:apply, *args)
79
88
  end
80
89
 
81
90
  def compile_package(*args)
82
- send_long_running_message(:compile_package, *args)
91
+ send_message(:compile_package, *args)
83
92
  end
84
93
 
85
94
  def drain(*args)
86
- send_long_running_message(:drain, *args)
95
+ send_message(:drain, *args)
87
96
  end
88
97
 
89
98
  def fetch_logs(*args)
90
- send_long_running_message(:fetch_logs, *args)
99
+ send_message(:fetch_logs, *args)
91
100
  end
92
101
 
93
102
  def migrate_disk(*args)
94
- send_long_running_message(:migrate_disk, *args)
103
+ send_message(:migrate_disk, *args)
95
104
  end
96
105
 
97
106
  def mount_disk(*args)
98
- send_long_running_message(:mount_disk, *args)
107
+ send_message(:mount_disk, *args)
99
108
  end
100
109
 
101
110
  def unmount_disk(*args)
102
- send_long_running_message(:unmount_disk, *args)
111
+ send_message(:unmount_disk, *args)
103
112
  end
104
113
 
105
114
  def update_settings(certs)
106
115
  begin
107
- send_long_running_message(:update_settings, {"trusted_certs" => certs})
116
+ send_message(:update_settings, {"trusted_certs" => certs})
108
117
  rescue RpcRemoteException => e
109
118
  if e.message =~ /unknown message/
110
119
  @logger.warn("Ignoring update_settings 'unknown message' error from the agent: #{e.inspect}")
@@ -115,11 +124,11 @@ module Bosh::Director
115
124
  end
116
125
 
117
126
  def stop(*args)
118
- send_long_running_message(:stop, *args)
127
+ send_message(:stop, *args)
119
128
  end
120
129
 
121
- def start_errand(*args)
122
- start_long_running_task(:run_errand, *args)
130
+ def run_errand(*args)
131
+ start_task(:run_errand, *args)
123
132
  end
124
133
 
125
134
  def wait_for_task(agent_task_id, &blk)
@@ -135,7 +144,7 @@ module Bosh::Director
135
144
  end
136
145
 
137
146
  def configure_networks(*args)
138
- send_long_running_message(:configure_networks, *args)
147
+ send_message(:configure_networks, *args)
139
148
  end
140
149
 
141
150
  def wait_until_ready(deadline = 600)
@@ -196,8 +205,8 @@ module Bosh::Director
196
205
  unless timeout > 0
197
206
  @nats_rpc.cancel_request(request_id)
198
207
  raise RpcTimeout,
199
- "Timed out sending `#{method_name}' to #{@client_id} " +
200
- "after #{@timeout} seconds"
208
+ "Timed out sending `#{method_name}' to #{@client_id} " +
209
+ "after #{@timeout} seconds"
201
210
  end
202
211
  cond.wait(timeout)
203
212
  end
@@ -256,7 +265,7 @@ module Bosh::Director
256
265
  @resource_manager.delete_resource(blob_id)
257
266
  end
258
267
 
259
- def send_message(message_name, *args)
268
+ def handle_message_with_retry(message_name, *args)
260
269
  retries = @retry_methods[message_name] || 0
261
270
  begin
262
271
  handle_method(message_name, args)
@@ -269,13 +278,17 @@ module Bosh::Director
269
278
  end
270
279
  end
271
280
 
272
- def send_long_running_message(method_name, *args, &blk)
273
- task = start_long_running_task(method_name, *args)
274
- wait_for_task(task['agent_task_id'], &blk)
281
+ def send_message(method_name, *args, &blk)
282
+ task = start_task(method_name, *args)
283
+ if task['agent_task_id']
284
+ wait_for_task(task['agent_task_id'], &blk)
285
+ else
286
+ task['value']
287
+ end
275
288
  end
276
289
 
277
- def start_long_running_task(method_name, *args)
278
- AgentMessageConverter.convert_old_message_to_new(send_message(method_name, *args))
290
+ def start_task(method_name, *args)
291
+ AgentMessageConverter.convert_old_message_to_new(handle_message_with_retry(method_name, *args))
279
292
  end
280
293
 
281
294
  def get_task_status(agent_task_id)
@@ -26,8 +26,8 @@ module Bosh::Director
26
26
 
27
27
  begin
28
28
  event_log_stage.advance_and_track("#{@job.name}/#{instance.index}") do
29
- start_errand_result = agent.start_errand
30
- @agent_task_id = start_errand_result['agent_task_id']
29
+ run_errand_result = agent.run_errand
30
+ @agent_task_id = run_errand_result['agent_task_id']
31
31
  agent_task_result = agent.wait_for_task(agent_task_id, &blk)
32
32
  end
33
33
  rescue TaskCancelled => e
@@ -73,6 +73,7 @@ module Bosh::Director
73
73
  ReleaseVersionInUse = err(30008)
74
74
  ReleaseDeleteFailed = err(30009)
75
75
  ReleaseVersionInvalid = err(30010)
76
+ ReleaseNotMatchingManifest = err(30011)
76
77
 
77
78
  ValidationInvalidType = err(40000)
78
79
  ValidationMissingField = err(40001)
@@ -132,12 +132,13 @@ module Bosh::Director
132
132
  "(#{compiled_package.blobstore_id}) " +
133
133
  "#{package.name}/#{package.version} " +
134
134
  "for #{stemcell.name}/#{stemcell.version}")
135
- delete_blobstore_id(compiled_package.blobstore_id) do
135
+
136
+ if delete_blobstore_id(compiled_package.blobstore_id)
136
137
  compiled_package.destroy
137
138
  end
138
139
  end
139
140
 
140
- delete_blobstore_id(package.blobstore_id) do
141
+ if delete_blobstore_id(package.blobstore_id, true)
141
142
  package.remove_all_release_versions
142
143
  package.destroy
143
144
  end
@@ -146,7 +147,7 @@ module Bosh::Director
146
147
  def delete_template(template)
147
148
  logger.info("Deleting template: #{template.name}/#{template.version}")
148
149
 
149
- delete_blobstore_id(template.blobstore_id) do
150
+ if delete_blobstore_id(template.blobstore_id)
150
151
  template.remove_all_release_versions
151
152
  template.destroy
152
153
  end
@@ -201,17 +202,21 @@ module Bosh::Director
201
202
  "/release/#{@name}"
202
203
  end
203
204
 
204
- def delete_blobstore_id(blobstore_id)
205
+ def delete_blobstore_id(blobstore_id, nil_id_allowed = false)
206
+ if blobstore_id.nil? && nil_id_allowed
207
+ return true
208
+ end
209
+
205
210
  deleted = false
206
211
  begin
207
212
  @blobstore.delete(blobstore_id)
208
213
  deleted = true
209
214
  rescue Exception => e
210
- logger.warn("Could not delete from blobstore: #{e}\n " +
211
- e.backtrace.join("\n"))
215
+ logger.warn("Could not delete from blobstore: #{e}\n " + e.backtrace.join("\n"))
212
216
  @errors << e
213
217
  end
214
- yield if deleted || @force
218
+
219
+ return deleted || @force
215
220
  end
216
221
 
217
222
  end
@@ -25,7 +25,24 @@ module Bosh::Director
25
25
  # @return [void]
26
26
  def perform
27
27
  logger.info("Exporting release: #{@release_name}/#{@release_version} for #{@stemcell_os}/#{@stemcell_version}")
28
- validate_and_prepare
28
+
29
+ stemcell_manager = Bosh::Director::Api::StemcellManager.new
30
+ @stemcell = stemcell_manager.find_by_os_and_version(@stemcell_os, @stemcell_version)
31
+
32
+ logger.info "Will compile with stemcell: #{@stemcell.desc}"
33
+
34
+ deployment_manager = Bosh::Director::Api::DeploymentManager.new
35
+ @targeted_deployment = deployment_manager.find_by_name(@deployment_name)
36
+ @deployment_manifest = Psych.load(@targeted_deployment.manifest)
37
+
38
+ release_manager = Bosh::Director::Api::ReleaseManager.new
39
+ release = release_manager.find_by_name(@release_name)
40
+ @release_version_model = release_manager.find_version(release, @release_version)
41
+
42
+ unless deployment_manifest_has_release?
43
+ raise ReleaseNotMatchingManifest, "Release #{@release_name}/#{@release_version} not found in deployment #{@deployment_name} manifest"
44
+ end
45
+
29
46
  lock_timeout = 15 * 60 # 15 minutes
30
47
 
31
48
  with_deployment_lock(@deployment_name, :timeout => lock_timeout) do
@@ -51,27 +68,21 @@ module Bosh::Director
51
68
  "Exported release: #{@release_name}/#{@release_version} for #{@stemcell_os}/#{@stemcell_version}"
52
69
  end
53
70
 
54
- def validate_and_prepare
55
- stemcell_manager = Bosh::Director::Api::StemcellManager.new
56
- @stemcell = stemcell_manager.find_by_os_and_version(@stemcell_os, @stemcell_version)
57
-
58
- logger.info "Will compile with stemcell: #{@stemcell.desc}"
59
-
60
- deployment_manager = Bosh::Director::Api::DeploymentManager.new
61
- @targeted_deployment = deployment_manager.find_by_name(@deployment_name)
62
-
63
- release_manager = Bosh::Director::Api::ReleaseManager.new
64
- release = release_manager.find_by_name(@release_name)
65
- @release_version = release_manager.find_version(release, @release_version)
71
+ def deployment_manifest_has_release?
72
+ @deployment_manifest["releases"].each do |release|
73
+ if (release["name"] == @release_name) && (release["version"] == @release_version)
74
+ return true
75
+ end
76
+ end
77
+ false
66
78
  end
67
79
 
68
80
  def create_planner
69
- modified_deployment_manifest = Psych.load(@targeted_deployment.manifest)
70
81
  cloud_config_model = @targeted_deployment.cloud_config
71
82
 
72
83
  planner_factory = DeploymentPlan::PlannerFactory.create(Config.event_log, Config.logger)
73
84
  planner = planner_factory.planner_without_vm_binding(
74
- modified_deployment_manifest,
85
+ @deployment_manifest,
75
86
  cloud_config_model,
76
87
  {}
77
88
  )
@@ -97,8 +108,8 @@ module Bosh::Director
97
108
 
98
109
  blobstore_client = Bosh::Director::App.instance.blobstores.blobstore
99
110
 
100
- compiled_packages_group = CompiledPackageGroup.new(@release_version, @stemcell)
101
- templates = @release_version.templates.map
111
+ compiled_packages_group = CompiledPackageGroup.new(@release_version_model, @stemcell)
112
+ templates = @release_version_model.templates.map
102
113
 
103
114
  compiled_release_downloader = CompiledReleaseDownloader.new(compiled_packages_group, templates, blobstore_client)
104
115
  download_dir = compiled_release_downloader.download
@@ -128,14 +139,14 @@ module Bosh::Director
128
139
  "release" => @release_name,
129
140
  "instances" => 1,
130
141
  "resource_pool" => fake_resource_pool_manifest['name'],
131
- "templates" => @release_version.templates.map do |template|
142
+ "templates" => @release_version_model.templates.map do |template|
132
143
  { "name" => template.name, "release" => @release_name }
133
144
  end,
134
145
  "networks" => [ "name" => network_name ],
135
146
  }
136
147
 
137
148
  fake_job = DeploymentPlan::Job.parse(planner, fake_job_spec_for_compiling, Config.event_log, Config.logger)
138
- @release_version.packages.each { |package| fake_job.packages[package.name] = package }
149
+ @release_version_model.packages.each { |package| fake_job.packages[package.name] = package }
139
150
  fake_job.resource_pool.stemcell.bind_model
140
151
  fake_job.release.bind_model
141
152
  fake_job.templates.each { |template| template.bind_models }
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Director
3
- VERSION = '1.3026.0'
3
+ VERSION = '1.3029.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.3026.0
4
+ version: 1.3029.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - VMware
@@ -30,126 +30,126 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.3026.0
33
+ version: 1.3029.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.3026.0
40
+ version: 1.3029.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bosh-core
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.3026.0
47
+ version: 1.3029.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.3026.0
54
+ version: 1.3029.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bosh-director-core
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.3026.0
61
+ version: 1.3029.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.3026.0
68
+ version: 1.3029.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bosh_common
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.3026.0
75
+ version: 1.3029.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.3026.0
82
+ version: 1.3029.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: bosh-template
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 1.3026.0
89
+ version: 1.3029.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 1.3026.0
96
+ version: 1.3029.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bosh_cpi
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 1.3026.0
103
+ version: 1.3029.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 1.3026.0
110
+ version: 1.3029.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: bosh_openstack_cpi
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 1.3026.0
117
+ version: 1.3029.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 1.3026.0
124
+ version: 1.3029.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: bosh_aws_cpi
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 1.3026.0
131
+ version: 1.3029.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 1.3026.0
138
+ version: 1.3029.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: bosh_vsphere_cpi
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 1.3026.0
145
+ version: 1.3029.0
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 1.3026.0
152
+ version: 1.3029.0
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: bosh_vcloud_cpi
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -572,7 +572,7 @@ dependencies:
572
572
  version: '0'
573
573
  description: |-
574
574
  BOSH Director
575
- fb9e82
575
+ e6ccd1
576
576
  email: support@cloudfoundry.com
577
577
  executables:
578
578
  - bosh-director