bosh_vsphere_cpi 1.2881.0 → 1.2889.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: 709f8ea4d8fdcbce3a60c83d718666dfcb5b0405
4
- data.tar.gz: f2b312d3746cce0b6c08d7d9e973abc23553b653
3
+ metadata.gz: 2f732cb263b84c1859b030decb85a5137ae77c25
4
+ data.tar.gz: 4f218c7207396752c0bf42e8766f09ba9facfa15
5
5
  SHA512:
6
- metadata.gz: 1fbc8f30dc769f5727ad279240b59aacd9ca3b2370ff0be575cfc2fe6edd34fb049e0909e18895486903c9ff9e2ee02273bf1582e38e133f3895deb1f00dc71f
7
- data.tar.gz: f1fbc214c332fc82e17633becfd900aee187530667a87e6a1dae2886e6ecb6ee30738e798e2fdf294589db71752c01e6ee834aed96664296ccdd7896c6e4e3d1
6
+ metadata.gz: 2d594e71275ddfdc3c073ebb452a45cfd815e570460e06202eec291fd0075633672a7e36e9008f90cabd01ebcc56e2d0d97f10e226c0ecd98ae525846f32ca0e
7
+ data.tar.gz: 3670ab84febbdf7983edbc7995bbea1eefaf29ec4db04cf7c16627bb8edcad0848c9e2ed3bd396f5ee781ebadad52d4a14318416fe3a6d0c45db679b973853c4
@@ -1,7 +1,3 @@
1
- require 'ruby_vim_sdk'
2
- require 'cloud/vsphere/cloud_searcher'
3
- require 'cloud/vsphere/soap_stub'
4
-
5
1
  module VSphereCloud
6
2
 
7
3
  class Client
@@ -19,7 +15,7 @@ module VSphereCloud
19
15
 
20
16
  @metrics_cache = {}
21
17
  @lock = Mutex.new
22
- @logger = Bosh::Clouds::Config.logger
18
+ @logger = options.fetch(:logger) { Bosh::Clouds::Config.logger }
23
19
 
24
20
  @cloud_searcher = CloudSearcher.new(service_content, @logger)
25
21
  end
@@ -99,6 +95,7 @@ module VSphereCloud
99
95
  end
100
96
 
101
97
  def move_disk(source_datacenter, source_path, dest_datacenter, dest_path)
98
+ create_parent_folder(dest_datacenter, dest_path)
102
99
  tasks = []
103
100
  base_source_path = source_path.chomp(File.extname(source_path))
104
101
  base_dest_path = source_path.chomp(File.extname(dest_path))
@@ -218,8 +215,33 @@ module VSphereCloud
218
215
  disk_size_in_mb.nil? ? nil : Resources::Disk.new(disk_cid, disk_size_in_mb, datastore, disk_path)
219
216
  end
220
217
 
218
+ def create_disk(datacenter, datastore, disk_cid, disk_folder, disk_size_in_mb)
219
+ disk_path = "[#{datastore.name}] #{disk_folder}/#{disk_cid}.vmdk"
220
+
221
+ create_parent_folder(datacenter, disk_path)
222
+
223
+ disk_spec = VimSdk::Vim::VirtualDiskManager::FileBackedVirtualDiskSpec.new
224
+ disk_spec.disk_type = 'preallocated'
225
+ disk_spec.capacity_kb = disk_size_in_mb * 1024
226
+ disk_spec.adapter_type = 'lsiLogic'
227
+
228
+ task = service_content.virtual_disk_manager.create_virtual_disk(
229
+ disk_path,
230
+ datacenter.mob,
231
+ disk_spec
232
+ )
233
+ wait_for_task(task)
234
+
235
+ Resources::Disk.new(disk_cid, disk_size_in_mb, datastore, disk_path)
236
+ end
237
+
221
238
  private
222
239
 
240
+ def create_parent_folder(datacenter, disk_path)
241
+ destination_folder = File.dirname(disk_path)
242
+ create_datastore_folder(destination_folder, datacenter.mob)
243
+ end
244
+
223
245
  def find_disk_size_using_browser(datastore, disk_cid, disk_folder)
224
246
  search_spec_details = VimSdk::Vim::Host::DatastoreBrowser::FileInfo::Details.new
225
247
  search_spec_details.file_type = true # actually return VmDiskInfos not FileInfos
@@ -1,28 +1,6 @@
1
1
  require 'json'
2
2
  require 'membrane'
3
- require 'ruby_vim_sdk'
4
3
  require 'cloud'
5
- require 'cloud/vsphere/retry_block'
6
- require 'cloud/vsphere/client'
7
- require 'cloud/vsphere/config'
8
- require 'cloud/vsphere/file_provider'
9
- require 'cloud/vsphere/agent_env'
10
- require 'cloud/vsphere/lease_obtainer'
11
- require 'cloud/vsphere/lease_updater'
12
- require 'cloud/vsphere/resources'
13
- require 'cloud/vsphere/resources/cluster'
14
- require 'cloud/vsphere/resources/datacenter'
15
- require 'cloud/vsphere/resources/datastore'
16
- require 'cloud/vsphere/resources/folder'
17
- require 'cloud/vsphere/resources/vm'
18
- require 'cloud/vsphere/resources/resource_pool'
19
- require 'cloud/vsphere/resources/scorer'
20
- require 'cloud/vsphere/resources/util'
21
- require 'cloud/vsphere/path_finder'
22
- require 'cloud/vsphere/vm_creator_builder'
23
- require 'cloud/vsphere/disk_provider'
24
- require 'cloud/vsphere/vm_provider'
25
- require 'cloud/vsphere/fixed_cluster_placer'
26
4
 
27
5
  module VSphereCloud
28
6
  class Cloud < Bosh::Cloud
@@ -39,7 +17,19 @@ module VSphereCloud
39
17
  @logger = config.logger
40
18
  @client = config.client
41
19
  @cloud_searcher = CloudSearcher.new(@client.service_content, @logger)
42
- @datacenter = Resources::Datacenter.new(config)
20
+ @datacenter = Resources::Datacenter.new({
21
+ client: @client,
22
+ use_sub_folder: @config.datacenter_use_sub_folder,
23
+ vm_folder: @config.datacenter_vm_folder,
24
+ template_folder: @config.datacenter_template_folder,
25
+ name: @config.datacenter_name,
26
+ disk_path: @config.datacenter_disk_path,
27
+ ephemeral_pattern: @config.datacenter_datastore_pattern,
28
+ persistent_pattern: @config.datacenter_persistent_datastore_pattern,
29
+ clusters: @config.datacenter_clusters,
30
+ logger: @config.logger,
31
+ mem_overcommit: @config.mem_overcommit
32
+ })
43
33
 
44
34
  @resources = Resources.new(@datacenter, config)
45
35
  @file_provider = FileProvider.new(config.rest_client, config.vcenter_host)
@@ -1,6 +1,3 @@
1
- require 'ruby_vim_sdk'
2
- require 'cloud/vsphere/cluster_config'
3
-
4
1
  module VSphereCloud
5
2
  class Config
6
3
  def self.build(config_hash)
@@ -17,22 +17,7 @@ module VSphereCloud
17
17
  disk_cid = "disk-#{SecureRandom.uuid}"
18
18
  @logger.debug("Creating disk '#{disk_cid}' in datastore '#{datastore.name}'")
19
19
 
20
- disk_spec = VimSdk::Vim::VirtualDiskManager::FileBackedVirtualDiskSpec.new
21
- disk_spec.disk_type = 'preallocated'
22
- disk_spec.capacity_kb = disk_size_in_mb * 1024
23
- disk_spec.adapter_type = 'lsiLogic'
24
-
25
- disk_path = path(datastore, disk_cid)
26
- create_parent_folder(disk_path)
27
-
28
- task = @virtual_disk_manager.create_virtual_disk(
29
- disk_path,
30
- @datacenter.mob,
31
- disk_spec
32
- )
33
- @client.wait_for_task(task)
34
-
35
- Resources::Disk.new(disk_cid, disk_size_in_mb, datastore, disk_path)
20
+ @client.create_disk(@datacenter, datastore, disk_cid, @disk_path, disk_size_in_mb)
36
21
  end
37
22
 
38
23
  def find_and_move(disk_cid, cluster, datacenter_name, accessible_datastores)
@@ -51,7 +36,6 @@ module VSphereCloud
51
36
 
52
37
  destination_path = path(destination_datastore, disk_cid)
53
38
  @logger.info("Moving #{disk.path} to #{destination_path}")
54
- create_parent_folder(destination_path)
55
39
  @client.move_disk(datacenter_name, disk.path, datacenter_name, destination_path) #TODO: return the new disk
56
40
  @logger.info('Moved disk successfully')
57
41
  Resources::Disk.new(disk_cid, disk.size_in_mb, destination_datastore, destination_path)
@@ -82,10 +66,5 @@ module VSphereCloud
82
66
 
83
67
  datastore
84
68
  end
85
-
86
- def create_parent_folder(disk_path)
87
- destination_folder = File.dirname(disk_path)
88
- @client.create_datastore_folder(destination_folder, @datacenter.mob)
89
- end
90
69
  end
91
70
  end
@@ -1,5 +1,3 @@
1
- require 'cloud/vsphere/retry_block'
2
-
3
1
  module VSphereCloud
4
2
  class DrsLock
5
3
  include RetryBlock
@@ -1,7 +1,3 @@
1
- require 'ruby_vim_sdk'
2
- require 'cloud/vsphere/drs_rules/drs_lock'
3
- require 'cloud/vsphere/drs_rules/vm_attribute_manager'
4
-
5
1
  module VSphereCloud
6
2
  class DrsRule
7
3
  CUSTOM_ATTRIBUTE_NAME = 'drs_rule'
@@ -1,5 +1,3 @@
1
- require 'ruby_vim_sdk'
2
-
3
1
  module VSphereCloud
4
2
  class VMAttributeManager
5
3
  def initialize(custom_fields_manager, logger)
@@ -1,5 +1,3 @@
1
- require 'cloud/vsphere/retry_block'
2
-
3
1
  module VSphereCloud
4
2
  class FileProvider
5
3
  include VSphereCloud::RetryBlock
@@ -1,5 +1,3 @@
1
- require 'ruby_vim_sdk'
2
-
3
1
  module VSphereCloud
4
2
  class LeaseObtainer
5
3
  include VimSdk
@@ -1,3 +1,5 @@
1
+ require 'cloud/vsphere/resources/resource_pool'
2
+
1
3
  module VSphereCloud
2
4
  class Resources
3
5
  class Cluster
@@ -30,17 +32,18 @@ module VSphereCloud
30
32
  # @param [ClusterConfig] config cluster configuration as specified by the
31
33
  # operator.
32
34
  # @param [Hash] properties prefetched vSphere properties for the cluster.
33
- def initialize(datacenter, cloud_config, cluster_config, properties)
35
+ def initialize(datacenter, datacenter_datastore_pattern, datacenter_persistent_datastore_pattern, mem_overcommit, cluster_config, properties, logger, client)
34
36
  @datacenter = datacenter
35
- @logger = cloud_config.logger
36
- @client = cloud_config.client
37
+ @logger = logger
38
+ @client = client
37
39
  @properties = properties
38
40
 
39
41
  @config = cluster_config
40
- @cloud_config = cloud_config
41
42
  @mob = properties[:obj]
42
- @resource_pool = ResourcePool.new(cloud_config, cluster_config, properties["resourcePool"])
43
-
43
+ @resource_pool = ResourcePool.new(@client, @logger, cluster_config, properties["resourcePool"])
44
+ @datacenter_datastore_pattern = datacenter_datastore_pattern
45
+ @datacenter_persistent_datastore_pattern = datacenter_persistent_datastore_pattern
46
+ @mem_overcommit = mem_overcommit
44
47
  @allocated_after_sync = 0
45
48
  end
46
49
 
@@ -56,7 +59,7 @@ module VSphereCloud
56
59
  # @return [Integer] amount of free memory in the cluster
57
60
  def free_memory
58
61
  synced_free_memory -
59
- (@allocated_after_sync * cloud_config.mem_overcommit).to_i
62
+ (@allocated_after_sync * @mem_overcommit).to_i
60
63
  end
61
64
 
62
65
  def total_free_ephemeral_disk_in_mb
@@ -104,16 +107,16 @@ module VSphereCloud
104
107
  end
105
108
 
106
109
  def ephemeral_datastores
107
- @ephemeral_datastores ||= select_datastores(cloud_config.datacenter_datastore_pattern)
110
+ @ephemeral_datastores ||= select_datastores(@datacenter_datastore_pattern)
108
111
  end
109
112
 
110
113
  def persistent_datastores
111
- @persistent_datastores ||= select_datastores(cloud_config.datacenter_persistent_datastore_pattern)
114
+ @persistent_datastores ||= select_datastores(@datacenter_persistent_datastore_pattern)
112
115
  end
113
116
 
114
117
  private
115
118
 
116
- attr_reader :cloud_config, :config, :client, :properties, :logger
119
+ attr_reader :config, :client, :properties, :logger
117
120
 
118
121
  def select_datastores(pattern)
119
122
  @datastores ||= Datastore.build_from_client(@client, properties['datastore'])
@@ -1,3 +1,5 @@
1
+ require 'cloud/vsphere/resources/cluster'
2
+
1
3
  module VSphereCloud
2
4
  class Resources
3
5
  class Datacenter
@@ -5,21 +7,32 @@ module VSphereCloud
5
7
 
6
8
  attr_accessor :config
7
9
 
8
- def initialize(config)
9
- @config = config
10
- @client = config.client
10
+ def initialize(attrs)
11
+ @client = attrs.fetch(:client)
12
+ @use_sub_folder = attrs.fetch(:use_sub_folder)
13
+ @vm_folder = attrs.fetch(:vm_folder)
14
+ @template_folder = attrs.fetch(:template_folder)
15
+ @name = attrs.fetch(:name)
16
+ @disk_path = attrs.fetch(:disk_path)
17
+ @ephemeral_pattern = attrs.fetch(:ephemeral_pattern)
18
+ @persistent_pattern = attrs.fetch(:persistent_pattern)
19
+ @clusters = attrs.fetch(:clusters)
20
+ @logger = attrs.fetch(:logger)
21
+ @mem_overcommit = attrs.fetch(:mem_overcommit)
11
22
  end
12
23
 
24
+ attr_reader :name, :disk_path, :ephemeral_pattern, :persistent_pattern
25
+
13
26
  def mob
14
- mob = @config.client.find_by_inventory_path(name)
27
+ mob = @client.find_by_inventory_path(name)
15
28
  raise "Datacenter: #{name} not found" if mob.nil?
16
29
  mob
17
30
  end
18
31
 
19
32
  def vm_folder
20
- if @config.datacenter_use_sub_folder
21
- folder_path = [@config.datacenter_vm_folder, Bosh::Clouds::Config.uuid].join('/')
22
- Folder.new(folder_path, @config)
33
+ if @use_sub_folder
34
+ folder_path = [@vm_folder, Bosh::Clouds::Config.uuid].join('/')
35
+ Folder.new(folder_path, @logger, @client, name)
23
36
  else
24
37
  master_vm_folder
25
38
  end
@@ -30,36 +43,20 @@ module VSphereCloud
30
43
  end
31
44
 
32
45
  def master_vm_folder
33
- Folder.new(@config.datacenter_vm_folder, @config)
46
+ Folder.new(@vm_folder, @logger, @client, name)
34
47
  end
35
48
 
36
49
  def template_folder
37
- if @config.datacenter_use_sub_folder
38
- folder_path = [@config.datacenter_template_folder, Bosh::Clouds::Config.uuid].join('/')
39
- Folder.new(folder_path, @config)
50
+ if @use_sub_folder
51
+ folder_path = [@template_folder, Bosh::Clouds::Config.uuid].join('/')
52
+ Folder.new(folder_path, @logger, @client, name)
40
53
  else
41
54
  master_template_folder
42
55
  end
43
56
  end
44
57
 
45
58
  def master_template_folder
46
- Folder.new(@config.datacenter_template_folder, @config)
47
- end
48
-
49
- def name
50
- @config.datacenter_name
51
- end
52
-
53
- def disk_path
54
- @config.datacenter_disk_path
55
- end
56
-
57
- def ephemeral_pattern
58
- @config.datacenter_datastore_pattern
59
- end
60
-
61
- def persistent_pattern
62
- @config.datacenter_persistent_datastore_pattern
59
+ Folder.new(@template_folder, @logger, @client, name)
63
60
  end
64
61
 
65
62
  def inspect
@@ -74,14 +71,14 @@ module VSphereCloud
74
71
  Cluster::PROPERTIES, :ensure_all => true)
75
72
 
76
73
  clusters = {}
77
- config.datacenter_clusters.each do |cluster_name, cluster_config|
74
+ @clusters.each do |cluster_name, cluster_config|
78
75
  cluster_mob = cluster_mobs[cluster_name]
79
76
  raise "Can't find cluster: #{cluster_name}" if cluster_mob.nil?
80
77
 
81
78
  cluster_properties = clusters_properties[cluster_mob]
82
79
  raise "Can't find properties for cluster: #{cluster_name}" if cluster_properties.nil?
83
80
 
84
- cluster = Cluster.new(self, @config, cluster_config, cluster_properties)
81
+ cluster = Cluster.new(self, @ephemeral_pattern, @persistent_pattern, @mem_overcommit, cluster_config, cluster_properties, @logger, @client)
85
82
  clusters[cluster.name] = cluster
86
83
  end
87
84
  clusters
@@ -113,7 +110,7 @@ module VSphereCloud
113
110
  def cluster_tuples
114
111
  cluster_tuples = @client.cloud_searcher.get_managed_objects(
115
112
  Vim::ClusterComputeResource, root: mob, include_name: true)
116
- cluster_tuples.delete_if { |name, _| !config.datacenter_clusters.has_key?(name) }
113
+ cluster_tuples.delete_if { |name, _| !@clusters.has_key?(name) }
117
114
  cluster_tuples
118
115
  end
119
116
  end
@@ -1,3 +1,5 @@
1
+ require 'cloud/vsphere/resources'
2
+
1
3
  module VSphereCloud
2
4
  class Resources
3
5
  class Datastore
@@ -3,10 +3,11 @@ module VSphereCloud
3
3
  class Folder
4
4
  attr_reader :mob, :path, :path_components
5
5
 
6
- def initialize(path, config)
6
+ def initialize(path, logger, client, datacenter_name)
7
7
  @path = path
8
- @config = config
9
-
8
+ @logger = logger
9
+ @client = client
10
+ @datacenter_name = datacenter_name
10
11
  @path_components = path.split('/')
11
12
 
12
13
  @mob = find_or_create_folder(@path_components)
@@ -23,12 +24,12 @@ module VSphereCloud
23
24
  parent_folder = find_or_create_folder(path_components[0..-2])
24
25
 
25
26
  begin
26
- @config.logger.debug("Creating folder #{last_component}")
27
+ @logger.debug("Creating folder #{last_component}")
27
28
  folder = parent_folder.create_folder(last_component)
28
29
  rescue VimSdk::SoapError => e
29
30
  raise e unless VimSdk::Vim::Fault::DuplicateName === e.fault
30
31
 
31
- @config.logger.debug("Folder already exists #{last_component}")
32
+ @logger.debug("Folder already exists #{last_component}")
32
33
  folder = find_folder(path_components)
33
34
  end
34
35
  end
@@ -37,11 +38,11 @@ module VSphereCloud
37
38
  end
38
39
 
39
40
  def find_folder(path_components)
40
- @config.client.find_by_inventory_path([@config.datacenter_name, 'vm', path_components].flatten)
41
+ @client.find_by_inventory_path([@datacenter_name, 'vm', path_components].flatten)
41
42
  end
42
43
 
43
44
  def root_vm_folder
44
- @config.client.find_by_inventory_path([@config.datacenter_name, 'vm'])
45
+ @client.find_by_inventory_path([@datacenter_name, 'vm'])
45
46
  end
46
47
  end
47
48
  end
@@ -8,10 +8,11 @@ module VSphereCloud
8
8
  # @param [Cluster] cluster parent cluster.
9
9
  # @param [Vim::ResourcePool] root_resource_pool cluster's root resource
10
10
  # pool.
11
- def initialize(cloud_config, cluster_config, root_resource_pool)
12
- @cloud_config = cloud_config
11
+ def initialize(client, logger, cluster_config, root_resource_pool)
13
12
  @cluster_config = cluster_config
14
13
  @root_resource_pool = root_resource_pool
14
+ @logger = logger
15
+ @client = client
15
16
  end
16
17
 
17
18
  def mob
@@ -20,8 +21,8 @@ module VSphereCloud
20
21
  if @cluster_config.resource_pool.nil?
21
22
  @mob = @root_resource_pool
22
23
  else
23
- client = @cloud_config.client
24
- logger = @cloud_config.logger
24
+ client = @client
25
+ logger = @logger
25
26
  @mob = client.cloud_searcher.get_managed_object(
26
27
  Vim::ResourcePool,
27
28
  :root => @root_resource_pool,
@@ -1,5 +1,4 @@
1
1
  require 'httpclient'
2
- require 'ruby_vim_sdk'
3
2
 
4
3
  module VSphereCloud
5
4
  class SoapStub
@@ -1,7 +1,7 @@
1
1
  module Bosh
2
2
  module Clouds
3
3
  class VSphere
4
- VERSION = '1.2881.0'
4
+ VERSION = '1.2889.0'
5
5
  end
6
6
  end
7
7
  end
@@ -1,8 +1,3 @@
1
- require 'ruby_vim_sdk'
2
- require 'cloud/vsphere/drs_rules/drs_rule'
3
- require 'cloud/vsphere/resources/disk/ephemeral_disk'
4
- require 'cloud/vsphere/resources/vm'
5
-
6
1
  module VSphereCloud
7
2
  class VmCreator
8
3
  def initialize(memory, disk_size_in_mb, cpu, placer, client, cloud_searcher, logger, cpi, agent_env, file_provider, disk_provider)
data/lib/cloud/vsphere.rb CHANGED
@@ -2,8 +2,33 @@ require 'forwardable'
2
2
  require 'securerandom'
3
3
  require 'common/thread_pool'
4
4
  require 'common/thread_formatter'
5
+ require 'ruby_vim_sdk'
5
6
 
6
- autoload :VSphereCloud, 'cloud/vsphere/cloud'
7
+ require 'cloud/vsphere/retry_block'
8
+ require 'cloud/vsphere/agent_env'
9
+ require 'cloud/vsphere/client'
10
+ require 'cloud/vsphere/cloud'
11
+ require 'cloud/vsphere/cloud_searcher'
12
+ require 'cloud/vsphere/config'
13
+ require 'cloud/vsphere/cluster_config'
14
+ require 'cloud/vsphere/disk_provider'
15
+ require 'cloud/vsphere/file_provider'
16
+ require 'cloud/vsphere/fixed_cluster_placer'
17
+ require 'cloud/vsphere/lease_obtainer'
18
+ require 'cloud/vsphere/lease_updater'
19
+ require 'cloud/vsphere/path_finder'
20
+ require 'cloud/vsphere/resources/cluster'
21
+ require 'cloud/vsphere/resources/datacenter'
22
+ require 'cloud/vsphere/resources/datastore'
23
+ require 'cloud/vsphere/resources/disk/ephemeral_disk'
24
+ require 'cloud/vsphere/resources/folder'
25
+ require 'cloud/vsphere/resources/vm'
26
+ require 'cloud/vsphere/resources/resource_pool'
27
+ require 'cloud/vsphere/resources/scorer'
28
+ require 'cloud/vsphere/resources/util'
29
+ require 'cloud/vsphere/soap_stub'
30
+ require 'cloud/vsphere/vm_creator_builder'
31
+ require 'cloud/vsphere/vm_provider'
7
32
 
8
33
  module Bosh
9
34
  module Clouds
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh_vsphere_cpi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2881.0
4
+ version: 1.2889.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - VMware
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-16 00:00:00.000000000 Z
11
+ date: 2015-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bosh_common
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.2881.0
19
+ version: 1.2889.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.2881.0
26
+ version: 1.2889.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bosh_cpi
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.2881.0
33
+ version: 1.2889.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.2881.0
40
+ version: 1.2889.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: membrane
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -208,7 +208,7 @@ dependencies:
208
208
  version: '0'
209
209
  description: |-
210
210
  BOSH VSphere CPI
211
- 756fc2
211
+ 4200d2
212
212
  email: support@cloudfoundry.com
213
213
  executables:
214
214
  - vsphere_cpi