chef-provisioning-vsphere 0.8.2 → 0.8.3.dev
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 +4 -4
- data/.gitignore +2 -2
- data/Gemfile +5 -5
- data/LICENSE +19 -19
- data/LICENSE-Rally +20 -20
- data/README.md +269 -269
- data/Rakefile +22 -22
- data/chef-provisioning-vsphere.gemspec +28 -28
- data/contribution-notice +7 -7
- data/lib/chef/provisioning/driver_init/vsphere.rb +2 -2
- data/lib/chef/provisioning/vsphere_driver/clone_spec_builder.rb +205 -205
- data/lib/chef/provisioning/vsphere_driver/driver.rb +679 -671
- data/lib/chef/provisioning/vsphere_driver/version.rb +3 -3
- data/lib/chef/provisioning/vsphere_driver/vsphere_helpers.rb +341 -341
- data/lib/chef/provisioning/vsphere_driver/vsphere_url.rb +45 -45
- data/lib/chef/provisioning/vsphere_driver.rb +14 -14
- data/lib/kitchen/driver/vsphere.rb +104 -104
- data/spec/integration_tests/.gitignore +1 -1
- data/spec/integration_tests/vsphere_driver_spec.rb +158 -158
- data/spec/unit_tests/VsphereDriver_spec.rb +132 -132
- data/spec/unit_tests/VsphereUrl_spec.rb +65 -65
- data/spec/unit_tests/clone_spec_builder_spec.rb +161 -161
- data/spec/unit_tests/support/fake_action_handler.rb +7 -7
- data/spec/unit_tests/support/vsphere_helper_stub.rb +52 -52
- metadata +4 -4
@@ -1,161 +1,161 @@
|
|
1
|
-
require 'chef/provisioning/vsphere_driver'
|
2
|
-
require_relative 'support/fake_action_handler'
|
3
|
-
require_relative 'support/vsphere_helper_stub'
|
4
|
-
|
5
|
-
describe ChefProvisioningVsphere::CloneSpecBuilder do
|
6
|
-
let(:options) { Hash.new }
|
7
|
-
let(:vm_template) { double('template') }
|
8
|
-
|
9
|
-
before do
|
10
|
-
allow(vm_template).to receive_message_chain(:config, :guestId)
|
11
|
-
.and_return('guest')
|
12
|
-
allow(vm_template).to receive_message_chain(:config, :template)
|
13
|
-
.and_return(false)
|
14
|
-
end
|
15
|
-
|
16
|
-
subject do
|
17
|
-
builder = ChefProvisioningVsphere::CloneSpecBuilder.new(
|
18
|
-
ChefProvisioningVsphereStubs::VsphereHelperStub.new,
|
19
|
-
ChefProvisioningVsphereStubs::FakeActionHandler.new
|
20
|
-
)
|
21
|
-
builder.build(vm_template, 'machine_name', options)
|
22
|
-
end
|
23
|
-
|
24
|
-
context 'using linked clones' do
|
25
|
-
before { options[:use_linked_clone] = true }
|
26
|
-
|
27
|
-
it 'sets the disk move type of the relocation spec' do
|
28
|
-
expect(subject.location.diskMoveType).to be :moveChildMostDiskBacking
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'using linked clone on a template source' do
|
33
|
-
before do
|
34
|
-
options[:use_linked_clone] = true
|
35
|
-
options[:host] = 'host'
|
36
|
-
allow(vm_template).to receive_message_chain(:config, :template)
|
37
|
-
.and_return(true)
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'does not set the disk move type of the relocation spec' do
|
41
|
-
expect(subject.location.diskMoveType).to be nil
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
context 'not using linked clones' do
|
46
|
-
before { options[:use_linked_clone] = false }
|
47
|
-
|
48
|
-
it 'does not set the disk move type of the relocation spec' do
|
49
|
-
expect(subject.location.diskMoveType).to be nil
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context 'specifying a host' do
|
54
|
-
before { options[:host] = 'host' }
|
55
|
-
|
56
|
-
it 'sets the host' do
|
57
|
-
expect(subject.location.host).to_not be nil
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context 'not specifying a host' do
|
62
|
-
it 'does not set the host' do
|
63
|
-
expect(subject.location.host).to be nil
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
context 'specifying a pool' do
|
68
|
-
before { options[:resource_pool] = 'pool' }
|
69
|
-
|
70
|
-
it 'sets the pool' do
|
71
|
-
expect(subject.location.pool).to_not be nil
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
context 'not specifying a pool' do
|
76
|
-
it 'does not set the pool' do
|
77
|
-
expect(subject.location.pool).to be nil
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
context 'not specifying a pool but specifying a host on a template' do
|
82
|
-
before do
|
83
|
-
options[:host] = 'host'
|
84
|
-
allow(vm_template).to receive_message_chain(:config, :template)
|
85
|
-
.and_return(true)
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'sets the pool to the hosts parent root pool' do
|
89
|
-
expect(subject.location.pool).to be subject.location.host.parent.resourcePool
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
context 'not specifying a pool or host when cloning from a template' do
|
94
|
-
before do
|
95
|
-
allow(vm_template).to receive_message_chain(:config, :template)
|
96
|
-
.and_return(true)
|
97
|
-
end
|
98
|
-
|
99
|
-
it 'raises an error' do
|
100
|
-
expect { subject }.to raise_error
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
context 'specifying a hostname' do
|
105
|
-
before do
|
106
|
-
options[:customization_spec] = {
|
107
|
-
ipsettings: {},
|
108
|
-
hostname: hostname,
|
109
|
-
domain: 'local'
|
110
|
-
}
|
111
|
-
end
|
112
|
-
|
113
|
-
context 'alpha characters only' do
|
114
|
-
let(:hostname) { 'myhost' }
|
115
|
-
|
116
|
-
it 'sets the spec hostname' do
|
117
|
-
expect(subject.customization.identity.hostName.name).to eq hostname
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
context 'alpha numeric characters only' do
|
122
|
-
let(:hostname) { 'myhost01' }
|
123
|
-
|
124
|
-
it 'sets the spec hostname' do
|
125
|
-
expect(subject.customization.identity.hostName.name).to eq hostname
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
context 'containing a dash' do
|
130
|
-
let(:hostname) { 'my-host01' }
|
131
|
-
|
132
|
-
it 'sets the spec hostname' do
|
133
|
-
expect(subject.customization.identity.hostName.name).to eq hostname
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
context 'containing an underscore' do
|
138
|
-
let(:hostname) { 'my_host' }
|
139
|
-
|
140
|
-
it 'raises an error' do
|
141
|
-
expect { subject }.to raise_error
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
context 'starting with a dash' do
|
146
|
-
let(:hostname) { '-myhost' }
|
147
|
-
|
148
|
-
it 'raises an error' do
|
149
|
-
expect { subject }.to raise_error
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
context 'ending with a dash' do
|
154
|
-
let(:hostname) { 'myhost-' }
|
155
|
-
|
156
|
-
it 'raises an error' do
|
157
|
-
expect { subject }.to raise_error
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
1
|
+
require 'chef/provisioning/vsphere_driver'
|
2
|
+
require_relative 'support/fake_action_handler'
|
3
|
+
require_relative 'support/vsphere_helper_stub'
|
4
|
+
|
5
|
+
describe ChefProvisioningVsphere::CloneSpecBuilder do
|
6
|
+
let(:options) { Hash.new }
|
7
|
+
let(:vm_template) { double('template') }
|
8
|
+
|
9
|
+
before do
|
10
|
+
allow(vm_template).to receive_message_chain(:config, :guestId)
|
11
|
+
.and_return('guest')
|
12
|
+
allow(vm_template).to receive_message_chain(:config, :template)
|
13
|
+
.and_return(false)
|
14
|
+
end
|
15
|
+
|
16
|
+
subject do
|
17
|
+
builder = ChefProvisioningVsphere::CloneSpecBuilder.new(
|
18
|
+
ChefProvisioningVsphereStubs::VsphereHelperStub.new,
|
19
|
+
ChefProvisioningVsphereStubs::FakeActionHandler.new
|
20
|
+
)
|
21
|
+
builder.build(vm_template, 'machine_name', options)
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'using linked clones' do
|
25
|
+
before { options[:use_linked_clone] = true }
|
26
|
+
|
27
|
+
it 'sets the disk move type of the relocation spec' do
|
28
|
+
expect(subject.location.diskMoveType).to be :moveChildMostDiskBacking
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'using linked clone on a template source' do
|
33
|
+
before do
|
34
|
+
options[:use_linked_clone] = true
|
35
|
+
options[:host] = 'host'
|
36
|
+
allow(vm_template).to receive_message_chain(:config, :template)
|
37
|
+
.and_return(true)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'does not set the disk move type of the relocation spec' do
|
41
|
+
expect(subject.location.diskMoveType).to be nil
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'not using linked clones' do
|
46
|
+
before { options[:use_linked_clone] = false }
|
47
|
+
|
48
|
+
it 'does not set the disk move type of the relocation spec' do
|
49
|
+
expect(subject.location.diskMoveType).to be nil
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'specifying a host' do
|
54
|
+
before { options[:host] = 'host' }
|
55
|
+
|
56
|
+
it 'sets the host' do
|
57
|
+
expect(subject.location.host).to_not be nil
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'not specifying a host' do
|
62
|
+
it 'does not set the host' do
|
63
|
+
expect(subject.location.host).to be nil
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'specifying a pool' do
|
68
|
+
before { options[:resource_pool] = 'pool' }
|
69
|
+
|
70
|
+
it 'sets the pool' do
|
71
|
+
expect(subject.location.pool).to_not be nil
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'not specifying a pool' do
|
76
|
+
it 'does not set the pool' do
|
77
|
+
expect(subject.location.pool).to be nil
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'not specifying a pool but specifying a host on a template' do
|
82
|
+
before do
|
83
|
+
options[:host] = 'host'
|
84
|
+
allow(vm_template).to receive_message_chain(:config, :template)
|
85
|
+
.and_return(true)
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'sets the pool to the hosts parent root pool' do
|
89
|
+
expect(subject.location.pool).to be subject.location.host.parent.resourcePool
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
context 'not specifying a pool or host when cloning from a template' do
|
94
|
+
before do
|
95
|
+
allow(vm_template).to receive_message_chain(:config, :template)
|
96
|
+
.and_return(true)
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'raises an error' do
|
100
|
+
expect { subject }.to raise_error
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
context 'specifying a hostname' do
|
105
|
+
before do
|
106
|
+
options[:customization_spec] = {
|
107
|
+
ipsettings: {},
|
108
|
+
hostname: hostname,
|
109
|
+
domain: 'local'
|
110
|
+
}
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'alpha characters only' do
|
114
|
+
let(:hostname) { 'myhost' }
|
115
|
+
|
116
|
+
it 'sets the spec hostname' do
|
117
|
+
expect(subject.customization.identity.hostName.name).to eq hostname
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context 'alpha numeric characters only' do
|
122
|
+
let(:hostname) { 'myhost01' }
|
123
|
+
|
124
|
+
it 'sets the spec hostname' do
|
125
|
+
expect(subject.customization.identity.hostName.name).to eq hostname
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
context 'containing a dash' do
|
130
|
+
let(:hostname) { 'my-host01' }
|
131
|
+
|
132
|
+
it 'sets the spec hostname' do
|
133
|
+
expect(subject.customization.identity.hostName.name).to eq hostname
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
context 'containing an underscore' do
|
138
|
+
let(:hostname) { 'my_host' }
|
139
|
+
|
140
|
+
it 'raises an error' do
|
141
|
+
expect { subject }.to raise_error
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
context 'starting with a dash' do
|
146
|
+
let(:hostname) { '-myhost' }
|
147
|
+
|
148
|
+
it 'raises an error' do
|
149
|
+
expect { subject }.to raise_error
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
context 'ending with a dash' do
|
154
|
+
let(:hostname) { 'myhost-' }
|
155
|
+
|
156
|
+
it 'raises an error' do
|
157
|
+
expect { subject }.to raise_error
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module ChefProvisioningVsphereStubs
|
2
|
-
class FakeActionHandler < Chef::Provisioning::ActionHandler
|
3
|
-
def puts(out)
|
4
|
-
|
5
|
-
end
|
6
|
-
end
|
7
|
-
end
|
1
|
+
module ChefProvisioningVsphereStubs
|
2
|
+
class FakeActionHandler < Chef::Provisioning::ActionHandler
|
3
|
+
def puts(out)
|
4
|
+
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
@@ -1,52 +1,52 @@
|
|
1
|
-
module ChefProvisioningVsphereStubs
|
2
|
-
class VsphereHelperStub < ChefProvisioningVsphere::VsphereHelper
|
3
|
-
def initialize
|
4
|
-
end
|
5
|
-
|
6
|
-
def network_device_changes(action_handler, vm_template, options)
|
7
|
-
[
|
8
|
-
[RbVmomi::VIM::VirtualDeviceConfigSpec.new],
|
9
|
-
[RbVmomi::VIM::VirtualDeviceConfigSpec.new]
|
10
|
-
]
|
11
|
-
end
|
12
|
-
|
13
|
-
def find_host(host_name)
|
14
|
-
RbVmomi::VIM::HostSystem.new
|
15
|
-
end
|
16
|
-
|
17
|
-
def find_pool(pool_name)
|
18
|
-
RbVmomi::VIM::ResourcePool.new(nil, nil)
|
19
|
-
end
|
20
|
-
|
21
|
-
def find_datastore(datastore_name)
|
22
|
-
RbVmomi::VIM::Datastore.new
|
23
|
-
end
|
24
|
-
|
25
|
-
def find_customization_spec(options)
|
26
|
-
RbVmomi::VIM::CustomizationSpec.new
|
27
|
-
end
|
28
|
-
|
29
|
-
def create_delta_disk(vm_template)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
module RbVmomi
|
35
|
-
class VIM::HostSystem
|
36
|
-
attr_reader :parent
|
37
|
-
|
38
|
-
def parent
|
39
|
-
@parent ||= RbVmomi::VIM::ComputeResource.new
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
module RbVmomi
|
45
|
-
class VIM::ComputeResource
|
46
|
-
attr_reader :resourcePool
|
47
|
-
|
48
|
-
def resourcePool
|
49
|
-
@resourcePool ||= RbVmomi::VIM::ResourcePool.new(nil, nil)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
1
|
+
module ChefProvisioningVsphereStubs
|
2
|
+
class VsphereHelperStub < ChefProvisioningVsphere::VsphereHelper
|
3
|
+
def initialize
|
4
|
+
end
|
5
|
+
|
6
|
+
def network_device_changes(action_handler, vm_template, options)
|
7
|
+
[
|
8
|
+
[RbVmomi::VIM::VirtualDeviceConfigSpec.new],
|
9
|
+
[RbVmomi::VIM::VirtualDeviceConfigSpec.new]
|
10
|
+
]
|
11
|
+
end
|
12
|
+
|
13
|
+
def find_host(host_name)
|
14
|
+
RbVmomi::VIM::HostSystem.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def find_pool(pool_name)
|
18
|
+
RbVmomi::VIM::ResourcePool.new(nil, nil)
|
19
|
+
end
|
20
|
+
|
21
|
+
def find_datastore(datastore_name)
|
22
|
+
RbVmomi::VIM::Datastore.new
|
23
|
+
end
|
24
|
+
|
25
|
+
def find_customization_spec(options)
|
26
|
+
RbVmomi::VIM::CustomizationSpec.new
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_delta_disk(vm_template)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module RbVmomi
|
35
|
+
class VIM::HostSystem
|
36
|
+
attr_reader :parent
|
37
|
+
|
38
|
+
def parent
|
39
|
+
@parent ||= RbVmomi::VIM::ComputeResource.new
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
module RbVmomi
|
45
|
+
class VIM::ComputeResource
|
46
|
+
attr_reader :resourcePool
|
47
|
+
|
48
|
+
def resourcePool
|
49
|
+
@resourcePool ||= RbVmomi::VIM::ResourcePool.new(nil, nil)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-provisioning-vsphere
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.3.dev
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CenturyLink Cloud
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbvmomi
|
@@ -131,9 +131,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
131
131
|
version: '0'
|
132
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
133
|
requirements:
|
134
|
-
- - "
|
134
|
+
- - ">"
|
135
135
|
- !ruby/object:Gem::Version
|
136
|
-
version:
|
136
|
+
version: 1.3.1
|
137
137
|
requirements: []
|
138
138
|
rubyforge_project:
|
139
139
|
rubygems_version: 2.4.8
|