bosh_vcloud_cpi 0.7.9 → 0.7.10
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.
- checksums.yaml +4 -4
- data/lib/cloud/vcloud/cloud.rb +37 -25
- data/lib/cloud/vcloud/vcd_client.rb +2 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb7cda14ebdb11a1c818ce26c463bc7fd9605bd3
|
4
|
+
data.tar.gz: 7a6e5455d43ccd766749289d04592e9d61c630cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d644a6ecb8f31d59a23e18c11bd479233a1bd48420b449816d751c5f8d1bbf01836d8dbd12c630da58a383f75fd0af3dab8f2be2dfbb4da70365bacb9adc6998
|
7
|
+
data.tar.gz: e5f5d04c699e5f7e56068be8f7c54c2add73396e8e12e77fbaffa4b1c45f446a7770b5f0c3c873345840c42730e27bb9b30472684e765e44ef4378645998bf4e
|
data/lib/cloud/vcloud/cloud.rb
CHANGED
@@ -38,16 +38,27 @@ module VCloudCloud
|
|
38
38
|
|
39
39
|
def delete_stemcell(catalog_vapp_id)
|
40
40
|
steps "delete_stemcell(#{catalog_vapp_id})" do |s|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
41
|
+
begin
|
42
|
+
catalog_vapp = client.resolve_entity catalog_vapp_id
|
43
|
+
if catalog_vapp.nil?
|
44
|
+
@logger.warn "Catalog vApp #{catalog_vapp_id} not found, skip the error"
|
45
|
+
return
|
46
|
+
end
|
47
|
+
|
48
|
+
vapp = client.resolve_link catalog_vapp.entity
|
49
|
+
client.wait_entity vapp, true
|
50
|
+
client.invoke :delete, vapp.remove_link
|
51
|
+
client.invoke :delete, catalog_vapp.href
|
52
|
+
rescue RestClient::Forbidden, ObjectNotFoundError => e
|
53
|
+
@logger.warn "get #{e.message} error while deleting Catalog vApp #{catalog_vapp_id} in #delete_stemcell, skip the error"
|
54
|
+
return
|
55
|
+
end
|
47
56
|
end
|
48
57
|
end
|
49
58
|
|
50
|
-
def cpi_call_wait_time
|
59
|
+
def cpi_call_wait_time
|
60
|
+
2
|
61
|
+
end
|
51
62
|
|
52
63
|
def create_vm(agent_id, catalog_vapp_id, resource_pool, networks, disk_locality = nil, environment = nil)
|
53
64
|
(steps "create_vm(#{agent_id}, #{catalog_vapp_id}, #{resource_pool}, ...)" do |s|
|
@@ -65,7 +76,7 @@ module VCloudCloud
|
|
65
76
|
|
66
77
|
|
67
78
|
s.next Steps::Instantiate, catalog_vapp_id, vapp_name, description, disk_locality, storage_profile
|
68
|
-
client.flush_cache
|
79
|
+
client.flush_cache # flush cached vdc which contains vapp list
|
69
80
|
vapp = s.state[:vapp]
|
70
81
|
vm = s.state[:vm] = vapp.vms[0]
|
71
82
|
|
@@ -195,7 +206,7 @@ module VCloudCloud
|
|
195
206
|
def has_vm?(vm_id)
|
196
207
|
vm = client.resolve_entity vm_id
|
197
208
|
vm.type == VCloudSdk::Xml::MEDIA_TYPE[:VM]
|
198
|
-
rescue RestClient::Exception
|
209
|
+
rescue RestClient::Exception # invalid ID will get 403
|
199
210
|
false
|
200
211
|
rescue ObjectNotFoundError
|
201
212
|
false
|
@@ -203,11 +214,9 @@ module VCloudCloud
|
|
203
214
|
|
204
215
|
def delete_vm(vm_id)
|
205
216
|
steps "delete_vm(#{vm_id})" do |s|
|
206
|
-
|
217
|
+
begin
|
218
|
+
vm = s.state[:vm] = client.resolve_entity vm_id
|
207
219
|
|
208
|
-
errors = [RuntimeError]
|
209
|
-
Bosh::Common.retryable(sleep: cpi_call_wait_time, tries: 20, on: errors) do
|
210
|
-
begin
|
211
220
|
# poweroff vm before we are able to delete it
|
212
221
|
s.next Steps::PowerOff, :vm, true
|
213
222
|
|
@@ -222,14 +231,12 @@ module VCloudCloud
|
|
222
231
|
s.next Steps::Undeploy, :vm
|
223
232
|
s.next Steps::Delete, s.state[:vm], true
|
224
233
|
end
|
225
|
-
rescue Exception => e
|
226
|
-
@logger.warn "Caught an exception during delete_vm Exception #{e}, Type #{e.class} Message #{e.message}"
|
227
|
-
@logger.warn "Exception trace #{e.backtrace.join('\n')}"
|
228
|
-
raise "re raising exception #{e.message} in delete_vm"
|
229
|
-
end
|
230
|
-
end
|
231
234
|
|
232
|
-
|
235
|
+
s.next Steps::DeleteCatalogMedia, vm.name
|
236
|
+
rescue RestClient::Forbidden, ObjectNotFoundError => e
|
237
|
+
@logger.warn "get #{e.message} error while deleting vm #{vm_id} likely due to non-existence, skip the error"
|
238
|
+
return
|
239
|
+
end
|
233
240
|
end
|
234
241
|
end
|
235
242
|
|
@@ -254,7 +261,7 @@ module VCloudCloud
|
|
254
261
|
# vm.hardware_section will change, save current state of disks
|
255
262
|
previous_disks_list = Array.new(vm.hardware_section.hard_disks)
|
256
263
|
|
257
|
-
s.state[:disk]
|
264
|
+
s.state[:disk] = client.resolve_entity disk_id
|
258
265
|
|
259
266
|
errors = [RuntimeError]
|
260
267
|
Bosh::Common.retryable(sleep: cpi_call_wait_time, tries: 20, on: errors) do
|
@@ -266,7 +273,7 @@ module VCloudCloud
|
|
266
273
|
s.next Steps::LoadAgentEnv
|
267
274
|
|
268
275
|
vm = s.state[:vm] = client.reload vm
|
269
|
-
Steps::CreateOrUpdateAgentEnv.update_persistent_disk s.state[:env], vm, disk_id
|
276
|
+
Steps::CreateOrUpdateAgentEnv.update_persistent_disk s.state[:env], vm, disk_id, previous_disks_list
|
270
277
|
|
271
278
|
save_agent_env s
|
272
279
|
rescue Exception => e
|
@@ -313,8 +320,13 @@ module VCloudCloud
|
|
313
320
|
|
314
321
|
def delete_disk(disk_id)
|
315
322
|
steps "delete_disk(#{disk_id})" do |s|
|
316
|
-
|
317
|
-
|
323
|
+
begin
|
324
|
+
disk = client.resolve_entity disk_id
|
325
|
+
s.next Steps::Delete, disk, true
|
326
|
+
rescue RestClient::Forbidden, ObjectNotFoundError => e
|
327
|
+
@logger.warn "got #{e.message} error while deleting disk #{disk_id}, skip the error"
|
328
|
+
return
|
329
|
+
end
|
318
330
|
end
|
319
331
|
end
|
320
332
|
|
@@ -348,7 +360,7 @@ module VCloudCloud
|
|
348
360
|
end
|
349
361
|
|
350
362
|
def network_names(networks)
|
351
|
-
networks.map { |k,v| v['cloud_properties']['name'] }.uniq
|
363
|
+
networks.map { |k, v| v['cloud_properties']['name'] }.uniq
|
352
364
|
end
|
353
365
|
|
354
366
|
def reconfigure_vm(s, name, description, resource_pool, networks)
|
@@ -168,7 +168,8 @@ module VCloudCloud
|
|
168
168
|
failed_tasks = entity.tasks.find_all { |task| task.status.downcase != VCloudSdk::Xml::TASK_STATUS[:SUCCESS] }
|
169
169
|
unless failed_tasks.empty?
|
170
170
|
@logger.error "Failed tasks: #{failed_tasks}"
|
171
|
-
|
171
|
+
failed_tasks_info = failed_tasks.map {|t| "Task #{t.urn} #{t.operation}"}
|
172
|
+
raise "Some tasks failed: #{failed_tasks_info.join('; ')}"
|
172
173
|
end
|
173
174
|
end
|
174
175
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh_vcloud_cpi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VMware
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bosh_common
|
@@ -124,7 +124,7 @@ dependencies:
|
|
124
124
|
version: '0'
|
125
125
|
description: |-
|
126
126
|
BOSH vCloud CPI
|
127
|
-
|
127
|
+
dc1c42
|
128
128
|
email: support@cloudfoundry.com
|
129
129
|
executables: []
|
130
130
|
extensions: []
|