bosh_vsphere_cpi 1.2881.0 → 1.2889.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.
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