vagrant-vsphere 0.13.1 → 0.14.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 +4 -4
- data/.bumpversion.cfg +1 -1
- data/README.md +5 -3
- data/lib/vSphere/action/clone.rb +18 -1
- data/lib/vSphere/config.rb +1 -0
- data/lib/vSphere/util/vim_helpers.rb +4 -0
- data/lib/vSphere/version.rb +1 -1
- data/locales/en.yml +4 -0
- data/spec/clone_spec.rb +21 -0
- data/spec/spec_helper.rb +12 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18ea9f258ae0478f7b099bd5f90ab8cee9e5de79
|
4
|
+
data.tar.gz: 39813243c2ded6a1e451f504533cea4b4c230745
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6be072277703883e5e6876dc16c456656ca90073ea5c4d7b0fdb7ba8fab42792075abf3c598c0f6c69f273b9d349703ad08a18104af227c894eda3a8ccb68b40
|
7
|
+
data.tar.gz: 2281f71c3ad514d185aecda5962291ae1114019ad0b37d0089f4cfb186fea556d9df8a80169b8f8a57359582c0c2787295952f1805f883271bb8319c9980dbcd
|
data/.bumpversion.cfg
CHANGED
data/README.md
CHANGED
@@ -12,9 +12,9 @@ This provider is built on top of the [RbVmomi](https://github.com/vmware/rbvmomi
|
|
12
12
|
* libxml2, libxml2-dev, libxslt, libxslt-dev
|
13
13
|
|
14
14
|
## Current Version
|
15
|
-
**version: 0.
|
15
|
+
**version: 0.14.0**
|
16
16
|
|
17
|
-
vagrant-vsphere (**version: 0.
|
17
|
+
vagrant-vsphere (**version: 0.14.0**) is available from [RubyGems.org](https://rubygems.org/gems/vagrant-vsphere)
|
18
18
|
|
19
19
|
## Installation
|
20
20
|
|
@@ -184,7 +184,9 @@ This is useful if running Vagrant from multiple directories or if multiple machi
|
|
184
184
|
* Find and install box file for multi-provider boxes automatically [#86 mkuzmin:install-box](https://github.com/nsidc/vagrant-vsphere/pull/86) & [#87 mkuzmin/provider-name](https://github.com/nsidc/vagrant-vsphere/pull/87).
|
185
185
|
* 0.13.1
|
186
186
|
* Change Nokogiri Major Version dependency [#90 highsineburgh:SAITRADLab-master](https://github.com/nsidc/vagrant-vsphere/pull/90)
|
187
|
-
|
187
|
+
* 0.14.0 Add vlan configuration [#91 rylarson:add-vlan-configuration](https://github.com/nsidc/vagrant-vsphere/pull/91)
|
188
|
+
* Added a new configuration option 'vlan' that lets you specify the vlan string
|
189
|
+
* If vlan is set, the clone spec is modified with an edit action to connect the first NIC on the VM to the configured VLAN.
|
188
190
|
|
189
191
|
|
190
192
|
## Versioning
|
data/lib/vSphere/action/clone.rb
CHANGED
@@ -31,6 +31,7 @@ module VagrantPlugins
|
|
31
31
|
customization_info = get_customization_spec_info_by_name connection, machine
|
32
32
|
|
33
33
|
spec[:customization] = get_customization_spec(machine, customization_info) unless customization_info.nil?
|
34
|
+
add_custom_vlan(template, dc, spec, config.vlan) unless config.vlan.nil?
|
34
35
|
|
35
36
|
env[:ui].info I18n.t('vsphere.creating_cloned_vm')
|
36
37
|
env[:ui].info " -- #{config.clone_from_vm ? "Source" : "Template"} VM: #{template.pretty_path}"
|
@@ -131,9 +132,25 @@ module VagrantPlugins
|
|
131
132
|
if config.vm_base_path.nil?
|
132
133
|
template.parent
|
133
134
|
else
|
134
|
-
dc.vmFolder.traverse(config.vm_base_path, RbVmomi::VIM::Folder, create=true)
|
135
|
+
dc.vmFolder.traverse(config.vm_base_path, RbVmomi::VIM::Folder, create = true)
|
135
136
|
end
|
136
137
|
end
|
138
|
+
|
139
|
+
def add_custom_vlan(template, dc, spec, vlan)
|
140
|
+
spec[:config] = RbVmomi::VIM.VirtualMachineConfigSpec(:deviceChange => Array.new)
|
141
|
+
network = get_network_by_name(dc, vlan)
|
142
|
+
config = template.config
|
143
|
+
card = config.hardware.device.grep(RbVmomi::VIM::VirtualEthernetCard).first or fail Errors::VSphereError, :missing_network_card
|
144
|
+
begin
|
145
|
+
switch_port = RbVmomi::VIM.DistributedVirtualSwitchPortConnection(:switchUuid => network.config.distributedVirtualSwitch.uuid, :portgroupKey => network.key)
|
146
|
+
card.backing.port = switch_port
|
147
|
+
rescue
|
148
|
+
# not connected to a distibuted switch?
|
149
|
+
card.backing.deviceName = network.name
|
150
|
+
end
|
151
|
+
dev_spec = RbVmomi::VIM.VirtualDeviceConfigSpec(:device => card, :operation => "edit")
|
152
|
+
spec[:config][:deviceChange].push dev_spec
|
153
|
+
end
|
137
154
|
end
|
138
155
|
end
|
139
156
|
end
|
data/lib/vSphere/config.rb
CHANGED
@@ -35,6 +35,10 @@ module VagrantPlugins
|
|
35
35
|
|
36
36
|
get_datacenter(connection, machine).find_datastore name or fail Errors::VSphereError, :missing_datastore
|
37
37
|
end
|
38
|
+
|
39
|
+
def get_network_by_name(dc, name)
|
40
|
+
dc.network.find { |f| f.name == name } or fail Errors::VSphereError, :missing_vlan
|
41
|
+
end
|
38
42
|
end
|
39
43
|
end
|
40
44
|
end
|
data/lib/vSphere/version.rb
CHANGED
data/locales/en.yml
CHANGED
@@ -40,6 +40,10 @@ en:
|
|
40
40
|
Configured data store not found
|
41
41
|
too_many_private_networks: |-
|
42
42
|
There a more private networks configured than can be assigned to the customization spec
|
43
|
+
missing_vlan: |-
|
44
|
+
Configured vlan not found
|
45
|
+
missing_network_card: |-
|
46
|
+
Cannot find network card to customize
|
43
47
|
config:
|
44
48
|
host: |-
|
45
49
|
Configuration must specify a vSphere host
|
data/spec/clone_spec.rb
CHANGED
@@ -39,6 +39,27 @@ describe VagrantPlugins::VSphere::Action::Clone do
|
|
39
39
|
expect(@app).to have_received :call
|
40
40
|
end
|
41
41
|
|
42
|
+
it 'should create a CloneVM spec with configured vlan' do
|
43
|
+
@machine.provider_config.stub(:vlan).and_return('vlan')
|
44
|
+
network = double('network', :name => 'vlan')
|
45
|
+
network.stub(:config).and_raise(StandardError)
|
46
|
+
@data_center.stub(:network).and_return([network])
|
47
|
+
call
|
48
|
+
|
49
|
+
expected_config = RbVmomi::VIM.VirtualMachineConfigSpec(:deviceChange => Array.new)
|
50
|
+
expected_dev_spec = RbVmomi::VIM.VirtualDeviceConfigSpec(:device => @device, :operation => "edit")
|
51
|
+
expected_config[:deviceChange].push expected_dev_spec
|
52
|
+
|
53
|
+
expect(@template).to have_received(:CloneVM_Task).with({
|
54
|
+
:folder => @data_center,
|
55
|
+
:name => NAME,
|
56
|
+
:spec => {:location =>
|
57
|
+
{:pool => @child_resource_pool},
|
58
|
+
:config => expected_config
|
59
|
+
}
|
60
|
+
})
|
61
|
+
end
|
62
|
+
|
42
63
|
it 'should set static IP when given config spec' do
|
43
64
|
@machine.provider_config.stub(:customization_spec_name).and_return('spec')
|
44
65
|
call
|
data/spec/spec_helper.rb
CHANGED
@@ -52,7 +52,8 @@ RSpec.configure do |config|
|
|
52
52
|
:clone_from_vm => nil,
|
53
53
|
:linked_clone => nil,
|
54
54
|
:proxy_host => nil,
|
55
|
-
:proxy_port => nil
|
55
|
+
:proxy_port => nil,
|
56
|
+
:vlan => nil)
|
56
57
|
vm_config = double(
|
57
58
|
:vm => double('config_vm',
|
58
59
|
:box => nil,
|
@@ -101,11 +102,20 @@ RSpec.configure do |config|
|
|
101
102
|
:pretty_path => "data_center/#{vm_folder}",
|
102
103
|
:find_compute_resource => double('compute resource', :resourcePool => @root_resource_pool))
|
103
104
|
|
105
|
+
@device = RbVmomi::VIM::VirtualEthernetCard.new
|
106
|
+
@device.stub(:backing).and_return(RbVmomi::VIM::VirtualEthernetCardNetworkBackingInfo.new)
|
107
|
+
|
108
|
+
@virtual_hardware = double('virtual_hardware',
|
109
|
+
:device => [@device])
|
110
|
+
@template_config = double('template_config',
|
111
|
+
:hardware => @virtual_hardware)
|
112
|
+
|
104
113
|
@template = double('template_vm',
|
105
114
|
:parent => @data_center,
|
106
115
|
:pretty_path => "#{@data_center.pretty_path}/template_vm",
|
107
116
|
:CloneVM_Task => double('result',
|
108
|
-
:wait_for_completion => double('new_vm', :config => double('config', :uuid => NEW_UUID)))
|
117
|
+
:wait_for_completion => double('new_vm', :config => double('config', :uuid => NEW_UUID))),
|
118
|
+
:config => @template_config)
|
109
119
|
|
110
120
|
@data_center.stub(:find_vm).with(TEMPLATE).and_return(@template)
|
111
121
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-vsphere
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Grauch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -174,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
174
174
|
version: '0'
|
175
175
|
requirements: []
|
176
176
|
rubyforge_project:
|
177
|
-
rubygems_version: 2.
|
177
|
+
rubygems_version: 2.0.14
|
178
178
|
signing_key:
|
179
179
|
specification_version: 4
|
180
180
|
summary: VMWare vSphere provider
|