vagrant-vsphere 1.6.0 → 1.7.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: 7747b951188bee2b8908f9273b0b50600a84bc7c
4
- data.tar.gz: 2cc6660d48609b56c3e0b413b88f0d9c97c763c4
3
+ metadata.gz: 2e9dc00d36f4b543b993242631e336c96bfd6c81
4
+ data.tar.gz: cba9bf33b1f3928966fa7ddd55218e74640ed1ef
5
5
  SHA512:
6
- metadata.gz: 9f9b21cd04aad4d2af7885f0a4c447016b413b5649706074b9bb3e4d2fc6e9f7ef597d805f848dc4d1d5c1c8fb6fe965e0dc26dbdfbd35d7d3a3c618772217f2
7
- data.tar.gz: b22d5a1351afd85c1f6cdb53da5152a5d0d4a70df5c3ccaf5acfb0941d6ab4cd8c8bf27b6158cecea7ee436eab8ea64c4734ecb26b1f6f8559c2624f97b8dee9
6
+ metadata.gz: f8f86e54afe1fc8eb3fb4532ea4c7fbe8da30bc3d2276a84680005bb33333aa70bcd272546559b87e784ca427b897ed96667541be39aacf302a08b000fa518b8
7
+ data.tar.gz: dd0a26aa3c040cd6ef21ac1826e8b21109ea55a71dacf6100d1f35954898159a1927a5a5252e3d1858717aa91335c2383d8eddae5be9ab262c0e49705e255be4
data/.bumpversion.cfg CHANGED
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 1.6.0
2
+ current_version = 1.7.0
3
3
  tag = true
4
4
  commit = true
5
5
 
@@ -8,4 +8,3 @@ commit = true
8
8
  [bumpversion:file:README.md]
9
9
  parse = version: (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)
10
10
  serialize = version: {major}.{minor}.{patch}
11
-
data/.rubocop.yml CHANGED
@@ -11,3 +11,24 @@ Lint/RescueException:
11
11
  # lib/vSphere/util/vim_helpers.rb to continue rescuing Exception in that
12
12
  # method
13
13
  - 'lib/vSphere/util/vim_helpers.rb'
14
+
15
+ Metrics/AbcSize:
16
+ Enabled: false
17
+
18
+ Metrics/ClassLength:
19
+ Enabled: false
20
+
21
+ Metrics/CyclomaticComplexity:
22
+ Enabled: false
23
+
24
+ Metrics/LineLength:
25
+ Enabled: false
26
+
27
+ Metrics/MethodLength:
28
+ Enabled: false
29
+
30
+ Metrics/ModuleLength:
31
+ Enabled: false
32
+
33
+ Metrics/PerceivedComplexity:
34
+ Enabled: false
data/.rubocop_todo.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2015-09-02 10:38:06 -0600 using RuboCop version 0.32.1.
2
+ # on 2016-03-08 12:12:34 -0700 using RuboCop version 0.32.1.
3
3
  # The point is for the user to remove these configuration records
4
4
  # one by one as the offenses are removed from the code base.
5
5
  # Note that changes in the inspected code, or installation of new
@@ -9,40 +9,14 @@
9
9
  Lint/NonLocalExitFromIterator:
10
10
  Enabled: false
11
11
 
12
- # Offense count: 11
13
- Metrics/AbcSize:
14
- Max: 120
15
-
16
- # Offense count: 1
17
- # Configuration parameters: CountComments.
18
- Metrics/ClassLength:
19
- Max: 169
20
-
21
- # Offense count: 3
22
- Metrics/CyclomaticComplexity:
23
- Max: 18
24
-
25
- # Offense count: 108
26
- # Configuration parameters: AllowURI, URISchemes.
27
- Metrics/LineLength:
28
- Max: 177
29
-
30
- # Offense count: 12
31
- # Configuration parameters: CountComments.
32
- Metrics/MethodLength:
33
- Max: 60
34
-
35
- # Offense count: 1
36
- # Configuration parameters: CountComments.
37
- Metrics/ModuleLength:
38
- Max: 162
12
+ # Offense count: 24
13
+ Style/Documentation:
14
+ Enabled: false
39
15
 
40
16
  # Offense count: 3
41
- Metrics/PerceivedComplexity:
42
- Max: 19
43
-
44
- # Offense count: 25
45
- Style/Documentation:
17
+ # Cop supports --auto-correct.
18
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
19
+ Style/EmptyLinesAroundBlockBody:
46
20
  Enabled: false
47
21
 
48
22
  # Offense count: 1
@@ -56,7 +30,7 @@ Style/EmptyLiteral:
56
30
  Style/FirstParameterIndentation:
57
31
  Enabled: false
58
32
 
59
- # Offense count: 5
33
+ # Offense count: 6
60
34
  # Cop supports --auto-correct.
61
35
  # Configuration parameters: EnforcedStyle, SupportedStyles, UseHashRocketsWithSymbolValues.
62
36
  Style/HashSyntax:
@@ -74,6 +48,12 @@ Style/RegexpLiteral:
74
48
  Style/SpaceAroundOperators:
75
49
  Enabled: false
76
50
 
51
+ # Offense count: 1
52
+ # Cop supports --auto-correct.
53
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
54
+ Style/StringLiterals:
55
+ Enabled: false
56
+
77
57
  # Offense count: 4
78
58
  # Cop supports --auto-correct.
79
59
  Style/SymbolLiteral:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## [1.7.0 (2016-03-14)](https://github.com/nsidc/vagrant-vsphere/releases/tag/v1.7.0)
2
+
3
+ - Add support for setting guestinfo variables
4
+ ([Sharpie:add-guestinfo-support](https://github.com/nsidc/vagrant-vsphere/pull/174)).
5
+ - Run provisioner cleanup when destroying VMs
6
+ ([Sharpie:enable-provisioner-cleanup](https://github.com/nsidc/vagrant-vsphere/pull/176)).
7
+ - Add the ability to configure the notes on the newly cloned VM
8
+ ([rylarson:feature/rylarson-add-notes](https://github.com/nsidc/vagrant-vsphere/pull/178)).
9
+
1
10
  ## [1.6.0 (2016-01-21)](https://github.com/nsidc/vagrant-vsphere/releases/tag/v1.6.0)
2
11
 
3
12
  - Use Vagrant core API instead of waiting for SSH communicator, which should
data/README.md CHANGED
@@ -6,7 +6,7 @@ This is a [Vagrant](http://www.vagrantup.com) 1.6.4+ plugin that adds a
6
6
  [vSphere](http://pubs.vmware.com/vsphere-50/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc_50%2Fright-pane.html)
7
7
  provider to Vagrant, allowing Vagrant to control and provision machines using
8
8
  VMware. New machines are created from virtual machines or templates which must
9
- be configured prior to using using this provider.
9
+ be configured prior to using this provider.
10
10
 
11
11
  This provider is built on top of the
12
12
  [RbVmomi](https://github.com/vmware/rbvmomi) Ruby interface to the vSphere API.
@@ -19,9 +19,9 @@ This provider is built on top of the
19
19
  * libxml2, libxml2-dev, libxslt, libxslt-dev
20
20
 
21
21
  ## Current Version
22
- **version: 1.6.0**
22
+ **version: 1.7.0**
23
23
 
24
- vagrant-vsphere (**version: 1.6.0**) is available from
24
+ vagrant-vsphere (**version: 1.7.0**) is available from
25
25
  [RubyGems.org](https://rubygems.org/gems/vagrant-vsphere)
26
26
 
27
27
  ## Installation
@@ -110,7 +110,7 @@ This provider has the following settings, all are required unless noted:
110
110
  the template and where the new VM will be created, if not specified the first
111
111
  datacenter found will be used
112
112
  * `compute_resource_name` - _Required if cloning from template_ the name of the
113
- host containing the resource pool for the new VM
113
+ host or cluster containing the resource pool for the new VM
114
114
  * `resource_pool_name` - the resource pool for the new VM. If not supplied, and
115
115
  cloning from a template, uses the root resource pool
116
116
  * `clone_from_vm` - _Optional_ use a virtual machine instead of a template as
@@ -140,6 +140,11 @@ This provider has the following settings, all are required unless noted:
140
140
  to the VM upon creation. This method takes a key/value pair,
141
141
  e.g. `vsphere.custom_attribute('timestamp', Time.now.to_s)`, and may be called
142
142
  multiple times to set different attributes.
143
+ * `extra_config` - _Optional_ A hash of extra configuration values to add to
144
+ the VM during creation. These are of the form `{'guestinfo.some.variable' => 'somevalue'}`,
145
+ where the key must start with `guestinfo.`. VMs with VWware Tools installed can
146
+ retrieve the value of these variables using the `vmtoolsd` command: `vmtoolsd --cmd 'info-get guestinfo.some.variable'`.
147
+ * `notes` - _Optional_ Add arbitrary notes to the VM
143
148
 
144
149
  ### Cloning from a VM rather than a template
145
150
 
@@ -201,7 +206,7 @@ executions.
201
206
  This is useful if running Vagrant from multiple directories or if multiple
202
207
  machines are defined in the Vagrantfile.
203
208
 
204
- ### Setting addresType for network adapter
209
+ ### Setting addressType for network adapter
205
210
 
206
211
  This sets the addressType of the network adapter, for example 'Manual' to
207
212
  be able to set a manual mac address.
@@ -41,6 +41,8 @@ module VagrantPlugins
41
41
  add_custom_cpu(spec, config.cpu_count) unless config.cpu_count.nil?
42
42
  add_custom_cpu_reservation(spec, config.cpu_reservation) unless config.cpu_reservation.nil?
43
43
  add_custom_mem_reservation(spec, config.mem_reservation) unless config.mem_reservation.nil?
44
+ add_custom_extra_config(spec, config.extra_config) unless config.extra_config.empty?
45
+ add_custom_notes(spec, config.notes) unless config.notes.nil?
44
46
 
45
47
  if !config.clone_from_vm && ds.is_a?(RbVmomi::VIM::StoragePod)
46
48
 
@@ -233,6 +235,18 @@ module VagrantPlugins
233
235
  def add_custom_mem_reservation(spec, mem_reservation)
234
236
  spec[:config][:memoryAllocation] = RbVmomi::VIM.ResourceAllocationInfo(reservation: mem_reservation)
235
237
  end
238
+
239
+ def add_custom_extra_config(spec, extra_config = {})
240
+ return if extra_config.empty?
241
+
242
+ # extraConfig must be an array of hashes with `key` and `value`
243
+ # entries.
244
+ spec[:config][:extraConfig] = extra_config.map { |k, v| { 'key' => k, 'value' => v } }
245
+ end
246
+
247
+ def add_custom_notes(spec, notes)
248
+ spec[:config][:annotation] = notes
249
+ end
236
250
  end
237
251
  end
238
252
  end
@@ -11,6 +11,7 @@ module VagrantPlugins
11
11
  Vagrant::Action::Builder.new.tap do |b|
12
12
  b.use ConfigValidate
13
13
  b.use ConnectVSphere
14
+ b.use(ProvisionerCleanup, :before)
14
15
 
15
16
  b.use Call, IsRunning do |env, b2|
16
17
  if env[:result]
@@ -26,11 +26,14 @@ module VagrantPlugins
26
26
  attr_accessor :cpu_count
27
27
  attr_accessor :cpu_reservation
28
28
  attr_accessor :mem_reservation
29
+ attr_accessor :extra_config
30
+ attr_accessor :notes
29
31
 
30
32
  attr_reader :custom_attributes
31
33
 
32
34
  def initialize
33
35
  @custom_attributes = {}
36
+ @extra_config = {}
34
37
  end
35
38
 
36
39
  def custom_attribute(key, value)
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module VSphere
3
- VERSION = '1.6.0'
3
+ VERSION = '1.7.0'
4
4
  end
5
5
  end
data/spec/action_spec.rb CHANGED
@@ -8,6 +8,9 @@ describe VagrantPlugins::VSphere::Action do
8
8
 
9
9
  before :each do
10
10
  @machine.stub(:id).and_return(EXISTING_UUID)
11
+ # Vagrant has some pretty buggy multi threading and their conditions
12
+ # check can fail if the wait_for_ready method returns right away
13
+ @machine.communicate.stub(:wait_for_ready) { sleep(1) }
11
14
  end
12
15
 
13
16
  describe 'up' do
data/spec/clone_spec.rb CHANGED
@@ -99,4 +99,31 @@ describe VagrantPlugins::VSphere::Action::Clone do
99
99
  config: RbVmomi::VIM.VirtualMachineConfigSpec }
100
100
  )
101
101
  end
102
+
103
+ it 'should set extraConfig if specified' do
104
+ @machine.provider_config.stub(:extra_config).and_return(
105
+ 'guestinfo.hostname' => 'somehost.testvm')
106
+ expected_config = RbVmomi::VIM.VirtualMachineConfigSpec(extraConfig: [
107
+ { 'key' => 'guestinfo.hostname', 'value' => 'somehost.testvm' }
108
+ ])
109
+
110
+ call
111
+ expect(@template).to have_received(:CloneVM_Task).with(
112
+ folder: @data_center,
113
+ name: NAME,
114
+ spec: { location: { pool: @child_resource_pool },
115
+ config: expected_config }
116
+ )
117
+ end
118
+
119
+ it 'should set custom notes when they are specified' do
120
+ @machine.provider_config.stub(:notes).and_return('custom_notes')
121
+ call
122
+ expect(@template).to have_received(:CloneVM_Task).with(
123
+ folder: @data_center,
124
+ name: NAME,
125
+ spec: { location: { pool: @child_resource_pool },
126
+ config: RbVmomi::VIM.VirtualMachineConfigSpec(annotation: 'custom_notes') }
127
+ )
128
+ end
102
129
  end
data/spec/spec_helper.rb CHANGED
@@ -59,7 +59,9 @@ RSpec.configure do |config|
59
59
  addressType: nil,
60
60
  cpu_reservation: nil,
61
61
  mem_reservation: nil,
62
- custom_attributes: {})
62
+ custom_attributes: {},
63
+ notes: nil,
64
+ extra_config: {})
63
65
  vm_config = double(
64
66
  vm: double('config_vm',
65
67
  box: nil,
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: 1.6.0
4
+ version: 1.7.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: 2016-01-21 00:00:00.000000000 Z
11
+ date: 2016-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri