vagrant-vcloud 0.4.7 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fd8a383b915dc8939efd48bde407f13c3be6d104
4
- data.tar.gz: f5dd1be500a3399db255258d351e58c7c5d20c30
3
+ metadata.gz: c8427f350e6d164ba8d274b7423f2e24c5d5a6ee
4
+ data.tar.gz: 91b7763f8209990f9626e98b52a0696d04b37fc5
5
5
  SHA512:
6
- metadata.gz: 44f686d7604fff5fb6ba410c0366c55a17464cb23bf30c84f22a697bbe5517e4c3c7e579015ded3cd11622e2b3212c18e5d19a216404031f0c7863d64e69d979
7
- data.tar.gz: 40fe2aa6f7e68ef8756bf92c960d99e89ff6fee58bb80d8ade0e719afb82febd871fcf95a7abf54d869ccdd13fb4a53d83865f88919cf425412e9cd272b0b1fb
6
+ metadata.gz: 36107695a03114903e000f3bfdcb6062b4ba3d3d50287aff3dca5ee993fe8da6b5f1b30754d5060bacaa29498f19897f0a3e80e4bf0b6bd06aa47bbf58ed041c
7
+ data.tar.gz: e0c47dcb939dd7b9a22d9d9d2b971b0573881fed34fdba6114ad5462e58b5eadf2d9485caa841abf3a6ca8ad6521a4522826223d006155696749d23f0b1a064c
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [Vagrant](http://www.vagrantup.com) provider for VMware vCloud Director® [![Gem Version](https://badge.fury.io/rb/vagrant-vcloud.svg)](http://badge.fury.io/rb/vagrant-vcloud) [![Code Climate](https://codeclimate.com/github/frapposelli/vagrant-vcloud/badges/gpa.svg)](https://codeclimate.com/github/frapposelli/vagrant-vcloud) [![Dependency Status](https://gemnasium.com/frapposelli/vagrant-vcloud.svg)](https://gemnasium.com/frapposelli/vagrant-vcloud) [![Join the chat at https://gitter.im/frapposelli/vagrant-vcloud](https://badges.gitter.im/frapposelli/vagrant-vcloud.svg)](https://gitter.im/frapposelli/vagrant-vcloud?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
1
+ [Vagrant](http://www.vagrantup.com) provider for VMware vCloud Director® [![Gem Version](https://badge.fury.io/rb/vagrant-vcloud.svg)](http://badge.fury.io/rb/vagrant-vcloud) [![Code Climate](https://codeclimate.com/github/frapposelli/vagrant-vcloud/badges/gpa.svg)](https://codeclimate.com/github/frapposelli/vagrant-vcloud) [![Dependency Status](https://gemnasium.com/frapposelli/vagrant-vcloud.svg)](https://gemnasium.com/frapposelli/vagrant-vcloud)
2
2
  ========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
3
3
 
4
4
  Please note that this software is still Alpha/Beta quality and is not recommended for production usage.
@@ -52,6 +52,9 @@ vapp = {
52
52
  ip_subnet: '10.10.10.10/255.255.255.0'
53
53
  }
54
54
  ]
55
+ },
56
+ ovf_properties: {
57
+ 'test-variable' => 'true'
55
58
  }
56
59
  }
57
60
 
@@ -132,6 +135,9 @@ Vagrant.configure('2') do |config|
132
135
  pro.nested_hypervisor = node[:nested_hypervisor]
133
136
  pro.enable_guest_customization = node[:enable_guest_customization]
134
137
  pro.guest_customization_script = node[:guest_customization_script]
138
+ if vapp[:ovf_properties]
139
+ pro.ovf_properties = vapp[:ovf_properties]
140
+ end
135
141
  end
136
142
  node_config.vm.network :public_network
137
143
  else
@@ -50,6 +50,18 @@ module VagrantPlugins
50
50
  end
51
51
  end
52
52
 
53
+ # set ovf properties
54
+ if !cfg.ovf_properties.nil?
55
+ env[:ui].info('Setting VM OVF Properties...')
56
+ set_ovf_properties = cnx.set_ovf_properties(env[:machine].id, cfg.ovf_properties)
57
+ if set_ovf_properties
58
+ wait = cnx.wait_task_completion(set_ovf_properties)
59
+ unless wait[:errormsg].nil?
60
+ fail Errors::SetOvfPropertyError, :message => wait[:errormsg]
61
+ end
62
+ end
63
+ end
64
+
53
65
  if cfg.power_on.nil? || cfg.power_on == true
54
66
  env[:ui].info('Powering on VM...')
55
67
  poweron_vm = cnx.poweron_vm(env[:machine].id)
@@ -262,6 +262,9 @@ module VagrantPlugins
262
262
  # guest customization admin require password reset (Bool = false)
263
263
  attr_accessor :guest_customization_admin_password_reset
264
264
 
265
+ # ovf properties object (Hash)
266
+ attr_accessor :ovf_properties
267
+
265
268
  def validate(machine)
266
269
  errors = _detected_errors
267
270
 
@@ -46,13 +46,6 @@ module VagrantPlugins
46
46
 
47
47
  # Instantiate the proper version driver for vCloud
48
48
  @logger.debug("Finding driver for vCloud version: #{@version}")
49
- driver_map = {
50
- '5.1' => Version_5_1,
51
- '5.5' => Version_5_1, # Binding vCloud 5.5 API on our current 5.1 implementation
52
- '5.6' => Version_5_1, # Binding vCHS API on our current 5.1 implementation
53
- '5.7' => Version_5_1, # Binding vCHS API on our current 5.1 implementation
54
- '9.0' => Version_5_1 # Binding vCHS API on our current 5.1 implementation
55
- }
56
49
 
57
50
  if @version.start_with?('0.9') ||
58
51
  @version.start_with?('1.0') ||
@@ -61,19 +54,7 @@ module VagrantPlugins
61
54
  raise Errors::VCloudOldVersion, :version => @version
62
55
  end
63
56
 
64
- driver_klass = nil
65
- driver_map.each do |key, klass|
66
- if @version.start_with?(key)
67
- driver_klass = klass
68
- break
69
- end
70
- end
71
-
72
- if !driver_klass
73
- supported_versions = driver_map.keys.sort.join(', ')
74
- raise Errors::VCloudInvalidVersion,
75
- :supported_versions => supported_versions
76
- end
57
+ driver_klass = Version_5_1 # Binding any vCloud API on our current 5.1 implementation
77
58
 
78
59
  @logger.info("Using vCloud driver: #{driver_klass}")
79
60
  @driver = driver_klass.new(@hostname, @username, @password, @org_name)
@@ -2278,6 +2278,43 @@ module VagrantPlugins
2278
2278
 
2279
2279
  end
2280
2280
 
2281
+ ##
2282
+ # Set OVF data
2283
+ def set_ovf_properties(vm_id, properties)
2284
+ params = {
2285
+ 'method' => :get,
2286
+ 'command' => "/vApp/vm-#{vm_id}/productSections"
2287
+ }
2288
+ response, _headers = send_request(params)
2289
+
2290
+ changed = false
2291
+ response.css('ovf|Property').each do |prop|
2292
+ next if prop['ovf:userConfigurable'] == 'false'
2293
+ key = prop['ovf:key']
2294
+ next if !properties[ key ]
2295
+ if properties[ key ] != prop['ovf:value']
2296
+ changed = true
2297
+ prop['ovf:value'] = properties[ key ]
2298
+ end
2299
+ end
2300
+
2301
+ if changed
2302
+ params = {
2303
+ 'method' => :put,
2304
+ 'command' => "/vApp/vm-#{vm_id}/productSections"
2305
+ }
2306
+ _response, headers = send_request(
2307
+ params,
2308
+ response.to_xml,
2309
+ 'application/vnd.vmware.vcloud.productSections+xml'
2310
+ )
2311
+
2312
+ task_id = URI(headers['Location']).path.gsub('/api/task/', '')
2313
+ return task_id
2314
+ end
2315
+ return nil
2316
+ end
2317
+
2281
2318
  ##
2282
2319
  # Fetch details about a given VM
2283
2320
  def get_vm(vm_id)
@@ -72,6 +72,9 @@ module VagrantPlugins
72
72
  class SyncError < VCloudError
73
73
  error_key(:sync_error)
74
74
  end
75
+ class SetOvfPropertyError < VCloudError
76
+ error_key(:ovf_property_error)
77
+ end
75
78
  end
76
79
  end
77
80
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module VCloud
3
- VERSION = '0.4.7'
3
+ VERSION = '0.5.0'
4
4
  end
5
5
  end
@@ -62,6 +62,7 @@ en:
62
62
 
63
63
  Host path: %{hostpath}
64
64
  Error: %{err}
65
+ ovf_property_error: "Error setting OVF Properties: %{message}"
65
66
  gc:
66
67
  admin_password: "Guest customization must be enabled to generate/specify password"
67
68
  admin_password_gs: "Admin assword must be auto generated or secified"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-vcloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabio Rapposelli
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-03-30 00:00:00.000000000 Z
12
+ date: 2018-04-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby-progressbar