bosh_vsphere_cpi 0.4.9 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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