bosh_vsphere_cpi 0.4.9 → 0.5.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.
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.4.9
4
+ version: 0.5.0
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-07-20 00:00:00.000000000 Z
12
+ date: 2012-10-17 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.2
37
+ version: 0.4.4
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,9 +42,9 @@ dependencies:
42
42
  requirements:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: 0.4.2
45
+ version: 0.4.4
46
46
  - !ruby/object:Gem::Dependency
47
- name: ruby_vim_sdk
47
+ name: membrane
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
@@ -60,7 +60,7 @@ dependencies:
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  - !ruby/object:Gem::Dependency
63
- name: uuidtools
63
+ name: ruby_vim_sdk
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
@@ -91,6 +91,22 @@ dependencies:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: uuidtools
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
94
110
  description: BOSH VSphere CPI
95
111
  email: support@vmware.com
96
112
  executables: []
@@ -100,14 +116,29 @@ files:
100
116
  - lib/cloud/vsphere.rb
101
117
  - lib/cloud/vsphere/client.rb
102
118
  - lib/cloud/vsphere/cloud.rb
119
+ - lib/cloud/vsphere/config.rb
103
120
  - lib/cloud/vsphere/lease_updater.rb
104
121
  - lib/cloud/vsphere/models/disk.rb
105
122
  - lib/cloud/vsphere/resources.rb
123
+ - lib/cloud/vsphere/resources/cluster.rb
124
+ - lib/cloud/vsphere/resources/datacenter.rb
125
+ - lib/cloud/vsphere/resources/datastore.rb
126
+ - lib/cloud/vsphere/resources/folder.rb
127
+ - lib/cloud/vsphere/resources/resource_pool.rb
128
+ - lib/cloud/vsphere/resources/scorer.rb
129
+ - lib/cloud/vsphere/resources/util.rb
106
130
  - lib/cloud/vsphere/version.rb
107
131
  - README
108
132
  - Rakefile
109
133
  - spec/spec_helper.rb
110
- - spec/unit/vsphere_resource_spec.rb
134
+ - spec/unit/cloud/vsphere/resources/cluster_spec.rb
135
+ - spec/unit/cloud/vsphere/resources/datacenter_spec.rb
136
+ - spec/unit/cloud/vsphere/resources/datastore_spec.rb
137
+ - spec/unit/cloud/vsphere/resources/folder_spec.rb
138
+ - spec/unit/cloud/vsphere/resources/resource_pool_spec.rb
139
+ - spec/unit/cloud/vsphere/resources/scorer_spec.rb
140
+ - spec/unit/cloud/vsphere/resources/util_spec.rb
141
+ - spec/unit/cloud/vsphere/resources_spec.rb
111
142
  homepage: http://www.vmware.com
112
143
  licenses: []
113
144
  post_install_message:
@@ -120,24 +151,26 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
151
  - - ! '>='
121
152
  - !ruby/object:Gem::Version
122
153
  version: '0'
123
- segments:
124
- - 0
125
- hash: 3586558243084673783
126
154
  required_rubygems_version: !ruby/object:Gem::Requirement
127
155
  none: false
128
156
  requirements:
129
157
  - - ! '>='
130
158
  - !ruby/object:Gem::Version
131
159
  version: '0'
132
- segments:
133
- - 0
134
- hash: 3586558243084673783
135
160
  requirements: []
136
161
  rubyforge_project:
137
- rubygems_version: 1.8.24
162
+ rubygems_version: 1.8.23
138
163
  signing_key:
139
164
  specification_version: 3
140
165
  summary: BOSH VSphere CPI
141
166
  test_files:
142
167
  - spec/spec_helper.rb
143
- - spec/unit/vsphere_resource_spec.rb
168
+ - spec/unit/cloud/vsphere/resources/cluster_spec.rb
169
+ - spec/unit/cloud/vsphere/resources/datacenter_spec.rb
170
+ - spec/unit/cloud/vsphere/resources/datastore_spec.rb
171
+ - spec/unit/cloud/vsphere/resources/folder_spec.rb
172
+ - spec/unit/cloud/vsphere/resources/resource_pool_spec.rb
173
+ - spec/unit/cloud/vsphere/resources/scorer_spec.rb
174
+ - spec/unit/cloud/vsphere/resources/util_spec.rb
175
+ - spec/unit/cloud/vsphere/resources_spec.rb
176
+ has_rdoc:
@@ -1,274 +0,0 @@
1
- # Copyright (c) 2009-2012 VMware, Inc.
2
-
3
- require File.expand_path("../../spec_helper", __FILE__)
4
-
5
- describe VSphereCloud::Resources do
6
-
7
- def create_datacenter(name)
8
- datacenter = VSphereCloud::Resources::Datacenter.new
9
- datacenter.name = name
10
- datacenter.persistent_datastore_pattern = /.*/
11
- datacenter.clusters = []
12
- datacenter
13
- end
14
-
15
- def create_cluster(name)
16
- cluster = VSphereCloud::Resources::Cluster.new
17
- cluster.name = name
18
- cluster.mob = name
19
- cluster.total_memory = 2048
20
- cluster.free_memory = 1024
21
- cluster.unaccounted_memory = 0
22
- cluster.mem_over_commit = 1
23
- cluster.idle_cpu = 0.9
24
- cluster.datastores = []
25
- cluster.persistent_datastores = []
26
- cluster
27
- end
28
-
29
- def create_datastore(name)
30
- datastore = VSphereCloud::Resources::Datastore.new
31
- datastore.name = name
32
- datastore.total_space = 2048
33
- datastore.free_space = 1024
34
- datastore.unaccounted_space = 0
35
- datastore
36
- end
37
-
38
- def mark_clusters_full
39
- @datacenters["dc"].clusters.each do |cluster|
40
- cluster.free_memory = 0
41
- end
42
- end
43
-
44
- def mark_datastore_full(cluster_index, datastore_index)
45
- datastore = @datacenters["dc"].clusters[cluster_index].datastores[datastore_index]
46
- datastore.free_space = 0
47
- end
48
-
49
- def mark_persistent_datastore_full(cluster_index, datastore_index)
50
- datastore = @datacenters["dc"].clusters[cluster_index].persistent_datastores[datastore_index]
51
- datastore.free_space = 0
52
- end
53
-
54
- before(:each) do
55
- @resources = VSphereCloud::Resources.new("client", "vcenter")
56
- datacenter = create_datacenter("dc")
57
- 3.times do |n|
58
- cluster = create_cluster("cluster#{n}")
59
- 2.times do |x|
60
- cluster.datastores << create_datastore("#{cluster.name}-#{x}")
61
- end
62
- 2.times do |x|
63
- cluster.persistent_datastores << create_datastore("#{cluster.name}-p-#{x}")
64
- end
65
- datacenter.clusters << cluster
66
- end
67
- @datacenters = {}
68
- @datacenters[datacenter.name] = datacenter
69
- end
70
-
71
-
72
- it "should raise exception if no resources available" do
73
- @resources.stub!(:find_resources).and_return([])
74
- got_exception = false
75
- begin
76
- @resources.get_resources
77
- rescue => e
78
- if e.message =~ /No available resources.*/
79
- got_exception = true
80
- end
81
- end
82
- got_exception.should be_true
83
- end
84
-
85
- it "should match given persistent disk affinity" do
86
- @resources.stub!(:datacenters).and_return(@datacenters)
87
- disks = []
88
- disks << {"size" => 100}
89
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster0-p-0", "size" => 100}
90
- cluster, datastore = @resources.get_resources(0, disks)
91
- cluster.name.should == "cluster0"
92
- datastore.name.should match(/cluster0*/)
93
- end
94
-
95
- it "should match expected datastore and cluster" do
96
- mark_datastore_full(0, 0)
97
- @resources.stub!(:datacenters).and_return(@datacenters)
98
-
99
- disks = []
100
- disks << {"size" => 100}
101
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster0-p-0", "size" => 100}
102
- cluster, datastore = @resources.get_resources(0, disks)
103
- cluster.name.should == "cluster0"
104
- datastore.name.should == "cluster0-1"
105
- end
106
-
107
- it "should match expected datastore and cluster" do
108
- mark_datastore_full(0, 1)
109
- @resources.stub!(:datacenters).and_return(@datacenters)
110
-
111
- disks = []
112
- disks << {"size" => 100}
113
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster0-p-0", "size" => 100}
114
- cluster, datastore = @resources.get_resources(0, disks)
115
- cluster.name.should == "cluster0"
116
- datastore.name.should == "cluster0-0"
117
- end
118
-
119
- it "should match next available datastore and cluster" do
120
- mark_datastore_full(0, 0)
121
- mark_datastore_full(0, 1)
122
- @resources.stub!(:datacenters).and_return(@datacenters)
123
-
124
- disks = []
125
- disks << {"size" => 100}
126
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster0-p-0", "size" => 100}
127
- cluster, datastore = @resources.get_resources(0, disks)
128
- cluster.name.should_not match(/cluster0/)
129
- datastore.name.should_not match(/cluster0/)
130
- end
131
-
132
- it "should match given persistent datastore affinity" do
133
- mark_persistent_datastore_full(0, 0)
134
- @resources.stub!(:datacenters).and_return(@datacenters)
135
-
136
- disks = []
137
- disks << {"size" => 100}
138
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster0-p-0", "size" => 100}
139
- cluster, datastore = @resources.get_resources(0, disks)
140
- cluster.name.should == "cluster0"
141
- datastore.name.should match(/cluster0*/)
142
- end
143
-
144
- it "should match given persistent datastore affinity" do
145
- mark_persistent_datastore_full(0, 1)
146
- @resources.stub!(:datacenters).and_return(@datacenters)
147
-
148
- disks = []
149
- disks << {"size" => 100}
150
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster0-p-0", "size" => 100}
151
- cluster, datastore = @resources.get_resources(0, disks)
152
- cluster.name.should == "cluster0"
153
- datastore.name.should match(/cluster0*/)
154
- end
155
-
156
- it "should match next available datastore and cluster" do
157
- mark_persistent_datastore_full(0, 0)
158
- mark_persistent_datastore_full(0, 1)
159
- @resources.stub!(:datacenters).and_return(@datacenters)
160
-
161
- disks = []
162
- disks << {"size" => 100}
163
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster0-p-0", "size" => 100}
164
- cluster, datastore = @resources.get_resources(0, disks)
165
- cluster.name.should_not match(/cluster0/)
166
- datastore.name.should_not match(/cluster0/)
167
- end
168
-
169
- it "should match the cluster with largest footprint" do
170
- @resources.stub!(:datacenters).and_return(@datacenters)
171
-
172
- disks = []
173
- disks << {"size" => 100}
174
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster0-p-0", "size" => 100}
175
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster2-p-0", "size" => 512}
176
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster0-p-1", "size" => 200}
177
- cluster, datastore = @resources.get_resources(0, disks)
178
- cluster.name.should == "cluster2"
179
- datastore.name.should match(/cluster2/)
180
- end
181
-
182
- it "should match the cluster with largest cummulative footprint" do
183
- @resources.stub!(:datacenters).and_return(@datacenters)
184
-
185
- disks = []
186
- disks << {"size" => 100}
187
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster0-p-0", "size" => 200}
188
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster2-p-0", "size" => 256}
189
- disks << {"persistent" => true, "datacenter" => "dc", "datastore" => "cluster0-p-1", "size" => 200}
190
- cluster, datastore = @resources.get_resources(0, disks)
191
- cluster.name.should == "cluster0"
192
- datastore.name.should match(/cluster0/)
193
- end
194
-
195
- it "should match any available datastore and cluster" do
196
- @resources.stub!(:datacenters).and_return(@datacenters)
197
-
198
- disks = []
199
- disks << {"size" => 100}
200
- cluster, datastore = @resources.get_resources(0, disks)
201
- cluster.name.should_not be_nil
202
- datastore.name.should_not be_nil
203
- end
204
-
205
- it "should match any available datastore and cluster" do
206
- @resources.stub!(:datacenters).and_return(@datacenters)
207
- cluster, datastore = @resources.get_resources
208
- cluster.name.should_not be_nil
209
- datastore.name.should_not be_nil
210
- end
211
-
212
- it "should match the exact expected datastore and cluster" do
213
- mark_persistent_datastore_full(0, 0)
214
- mark_persistent_datastore_full(0, 1)
215
- mark_persistent_datastore_full(1, 0)
216
- mark_persistent_datastore_full(1, 1)
217
- @resources.stub!(:datacenters).and_return(@datacenters)
218
- cluster, datastore = @resources.get_resources
219
- cluster.name.should == "cluster2"
220
- datastore.name.should match(/cluster2/)
221
- end
222
-
223
- it "should raise an exception if clusters are out of memory" do
224
- mark_clusters_full
225
- @resources.stub!(:datacenters).and_return(@datacenters)
226
- got_exception = false
227
- begin
228
- cluster, datastore = @resources.get_resources
229
- rescue => e
230
- if e.message =~ /No available resources.*/ && e.message =~ /.*Skipping.*/
231
- got_exception = true
232
- end
233
- end
234
- got_exception.should be_true
235
- end
236
-
237
- it "should raise an exception if all persistent datastores are full" do
238
- mark_persistent_datastore_full(0, 0)
239
- mark_persistent_datastore_full(0, 1)
240
- mark_persistent_datastore_full(1, 0)
241
- mark_persistent_datastore_full(1, 1)
242
- mark_persistent_datastore_full(2, 0)
243
- mark_persistent_datastore_full(2, 1)
244
- @resources.stub!(:datacenters).and_return(@datacenters)
245
- got_exception = false
246
- begin
247
- cluster, datastore = @resources.get_resources
248
- rescue => e
249
- if e.message =~ /No available resources.*/ && e.message =~ /.*Skipping.*/
250
- got_exception = true
251
- end
252
- end
253
- got_exception.should be_true
254
- end
255
-
256
- it "should raise an exception if all nonpersistent datastores are full" do
257
- mark_datastore_full(0, 0)
258
- mark_datastore_full(0, 1)
259
- mark_datastore_full(1, 0)
260
- mark_datastore_full(1, 1)
261
- mark_datastore_full(2, 0)
262
- mark_datastore_full(2, 1)
263
- @resources.stub!(:datacenters).and_return(@datacenters)
264
- got_exception = false
265
- begin
266
- cluster, datastore = @resources.get_resources
267
- rescue => e
268
- if e.message =~ /No available resources.*/ && e.message =~ /.*Skipping.*/
269
- got_exception = true
270
- end
271
- end
272
- got_exception.should be_true
273
- end
274
- end