bosh_vsphere_cpi 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -347,6 +347,40 @@ module VSphereCloud
347
347
  end
348
348
  end
349
349
 
350
+ def set_vm_metadata(vm_cid, metadata)
351
+ with_thread_name("set_vm_metadata(#{vm_cid}, ...)") do
352
+ begin
353
+ fields_manager = client.service_content.custom_fields_manager
354
+ custom_fields = fields_manager.field
355
+ name_to_key_id = {}
356
+
357
+ metadata.each_key do |name|
358
+ field = custom_fields.find { |field| field.name == name.to_s &&
359
+ field.managed_object_type == Vim::VirtualMachine }
360
+ unless field
361
+ field = fields_manager.add_field_definition(
362
+ name.to_s, Vim::VirtualMachine, nil, nil)
363
+ end
364
+ name_to_key_id[name] = field.key
365
+ end
366
+
367
+ vm = get_vm_by_cid(vm_cid)
368
+
369
+ metadata.each do |name, value|
370
+ value = "" if value.nil? # value is required
371
+ fields_manager.set_field(vm, name_to_key_id[name], value)
372
+ end
373
+ rescue SoapException => e
374
+ if e.fault.kind_of?(Vim::Fault::NoPermission)
375
+ @logger.warn("Can't set custom fields due to lack of " +
376
+ "permission: #{e.message}")
377
+ else
378
+ raise e
379
+ end
380
+ end
381
+ end
382
+ end
383
+
350
384
  def configure_networks(vm_cid, networks)
351
385
  with_thread_name("configure_networks(#{vm_cid}, ...)") do
352
386
  vm = get_vm_by_cid(vm_cid)
@@ -1,7 +1,7 @@
1
1
  module Bosh
2
2
  module Clouds
3
3
  class VSphere
4
- VERSION = "0.5.0"
4
+ VERSION = "0.5.1"
5
5
  end
6
6
  end
7
7
  end
data/lib/cloud/vsphere.rb CHANGED
@@ -13,6 +13,7 @@ module Bosh
13
13
  def_delegators :@delegate,
14
14
  :create_stemcell, :delete_stemcell,
15
15
  :create_vm, :delete_vm, :reboot_vm,
16
+ :set_vm_metadata,
16
17
  :configure_networks,
17
18
  :create_disk, :delete_disk,
18
19
  :attach_disk, :detach_disk,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh_vsphere_cpi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
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: 2012-10-17 00:00:00.000000000 Z
12
+ date: 2012-11-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bosh_common
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: 0.4.4
37
+ version: 0.5.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: 0.4.4
45
+ version: 0.5.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: membrane
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ! '>='
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
69
+ version: 0.0.3
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: '0'
77
+ version: 0.0.3
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: sequel
80
80
  requirement: !ruby/object:Gem::Requirement