vagrant-vcloud 0.1.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.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -0
  3. data/Gemfile +7 -0
  4. data/LICENSE +20 -0
  5. data/README.md +80 -0
  6. data/Rakefile +17 -0
  7. data/example_box/README.md +13 -0
  8. data/example_box/Vagrantfile +6 -0
  9. data/example_box/metadata.json +1 -0
  10. data/lib/vagrant-vcloud.rb +65 -0
  11. data/lib/vagrant-vcloud/action.rb +226 -0
  12. data/lib/vagrant-vcloud/action/announce_ssh_exec.rb +17 -0
  13. data/lib/vagrant-vcloud/action/build_vapp.rb +197 -0
  14. data/lib/vagrant-vcloud/action/connect_vcloud.rb +68 -0
  15. data/lib/vagrant-vcloud/action/destroy.rb +69 -0
  16. data/lib/vagrant-vcloud/action/disconnect_vcloud.rb +33 -0
  17. data/lib/vagrant-vcloud/action/forward_ports.rb +127 -0
  18. data/lib/vagrant-vcloud/action/handle_nat_port_collisions.rb +129 -0
  19. data/lib/vagrant-vcloud/action/inventory_check.rb +156 -0
  20. data/lib/vagrant-vcloud/action/is_created.rb +36 -0
  21. data/lib/vagrant-vcloud/action/is_paused.rb +22 -0
  22. data/lib/vagrant-vcloud/action/is_running.rb +22 -0
  23. data/lib/vagrant-vcloud/action/message_already_running.rb +17 -0
  24. data/lib/vagrant-vcloud/action/message_cannot_suspend.rb +17 -0
  25. data/lib/vagrant-vcloud/action/message_not_created.rb +17 -0
  26. data/lib/vagrant-vcloud/action/message_will_not_destroy.rb +17 -0
  27. data/lib/vagrant-vcloud/action/power_off.rb +33 -0
  28. data/lib/vagrant-vcloud/action/power_on.rb +46 -0
  29. data/lib/vagrant-vcloud/action/read_ssh_info.rb +69 -0
  30. data/lib/vagrant-vcloud/action/read_state.rb +59 -0
  31. data/lib/vagrant-vcloud/action/resume.rb +33 -0
  32. data/lib/vagrant-vcloud/action/suspend.rb +33 -0
  33. data/lib/vagrant-vcloud/action/sync_folders.rb +82 -0
  34. data/lib/vagrant-vcloud/action/unmap_port_forwardings.rb +75 -0
  35. data/lib/vagrant-vcloud/config.rb +132 -0
  36. data/lib/vagrant-vcloud/driver/base.rb +459 -0
  37. data/lib/vagrant-vcloud/driver/meta.rb +151 -0
  38. data/lib/vagrant-vcloud/driver/version_5_1.rb +1669 -0
  39. data/lib/vagrant-vcloud/errors.rb +62 -0
  40. data/lib/vagrant-vcloud/model/forwarded_port.rb +64 -0
  41. data/lib/vagrant-vcloud/plugin.rb +78 -0
  42. data/lib/vagrant-vcloud/provider.rb +41 -0
  43. data/lib/vagrant-vcloud/util/compile_forwarded_ports.rb +31 -0
  44. data/lib/vagrant-vcloud/version.rb +5 -0
  45. data/locales/en.yml +55 -0
  46. data/vagrant-vcloud.gemspec +34 -0
  47. metadata +273 -0
@@ -0,0 +1,62 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module VCloud
5
+ module Errors
6
+ class VCloudError < Vagrant::Errors::VagrantError
7
+ error_namespace("vagrant_vcloud.errors")
8
+ end
9
+ class VCloudOldVersion < VCloudError
10
+ error_key(:vcloud_old_version)
11
+ end
12
+ class CatalogAddError < VCloudError
13
+ error_key(:catalog_add_error)
14
+ end
15
+ class HostNotFound < VCloudError
16
+ error_key(:host_not_found)
17
+ end
18
+ class HostRedirect < VCloudError
19
+ error_key(:host_redirect)
20
+ end
21
+ class UnauthorizedAccess < VCloudError
22
+ error_key(:unauthorized_access)
23
+ end
24
+ class StopVAppError < VCloudError
25
+ error_key(:stop_vapp_error)
26
+ end
27
+ class ComposeVAppError < VCloudError
28
+ error_key(:compose_vapp_error)
29
+ end
30
+ class InvalidNetSpecification < VCloudError
31
+ error_key(:invalid_network_specification)
32
+ end
33
+ class ForwardPortCollision < VCloudError
34
+ error_key(:forward_port_collision)
35
+ end
36
+ class SubnetErrors < VCloudError
37
+ error_namespace("vagrant_vcloud.errors.subnet_errors")
38
+ end
39
+ class InvalidSubnet < SubnetErrors
40
+ error_key(:invalid_subnet)
41
+ end
42
+ class SubnetTooSmall < SubnetErrors
43
+ error_key(:subnet_too_small)
44
+ end
45
+ class RestError < VCloudError
46
+ error_namespace("vagrant_vcloud.errors.rest_errors")
47
+ end
48
+ class ObjectNotFound < RestError
49
+ error_key(:object_not_found)
50
+ end
51
+ class InvalidConfigError < RestError
52
+ error_key(:invalid_config_error)
53
+ end
54
+ class InvalidStateError < RestError
55
+ error_key(:invalid_state_error)
56
+ end
57
+ class SyncError < VCloudError
58
+ error_key(:sync_error)
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,64 @@
1
+ module VagrantPlugins
2
+ module VCloud
3
+ module Model
4
+ # Represents a single forwarded port for VirtualBox. This has various
5
+ # helpers and defaults for a forwarded port.
6
+ class ForwardedPort
7
+ # If true, this port should be auto-corrected.
8
+ #
9
+ # @return [Boolean]
10
+ attr_reader :auto_correct
11
+
12
+ # The unique ID for the forwarded port.
13
+ #
14
+ # @return [String]
15
+ attr_reader :id
16
+
17
+ # The protocol to forward.
18
+ #
19
+ # @return [String]
20
+ attr_reader :protocol
21
+
22
+ # The IP that the forwarded port will connect to on the guest machine.
23
+ #
24
+ # @return [String]
25
+ attr_reader :guest_ip
26
+
27
+ # The port on the guest to be exposed on the host.
28
+ #
29
+ # @return [Integer]
30
+ attr_reader :guest_port
31
+
32
+ # The IP that the forwarded port will bind to on the host machine.
33
+ #
34
+ # @return [String]
35
+ attr_reader :host_ip
36
+
37
+ # The port on the host used to access the port on the guest.
38
+ #
39
+ # @return [Integer]
40
+ attr_reader :host_port
41
+
42
+ def initialize(id, host_port, guest_port, options)
43
+ @id = id
44
+ @guest_port = guest_port
45
+ @host_port = host_port
46
+
47
+ options ||= {}
48
+ @auto_correct = false
49
+ @auto_correct = options[:auto_correct] if options.has_key?(:auto_correct)
50
+ @guest_ip = options[:guest_ip] || nil
51
+ @host_ip = options[:host_ip] || nil
52
+ @protocol = options[:protocol] || "tcp"
53
+ end
54
+
55
+ # This corrects the host port and changes it to the given new port.
56
+ #
57
+ # @param [Integer] new_port The new port
58
+ def correct_host_port(new_port)
59
+ @host_port = new_port
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,78 @@
1
+ begin
2
+ require "vagrant"
3
+ rescue LoadError
4
+ raise "The Vagrant vCloud plugin must be run within Vagrant."
5
+ end
6
+
7
+ if Vagrant::VERSION < "1.2.0"
8
+ raise "The Vagrant vCloud plugin is only compatible with Vagrant 1.2+"
9
+ end
10
+
11
+ module VagrantPlugins
12
+ module VCloud
13
+ class Plugin < Vagrant.plugin('2')
14
+ name "vCloud"
15
+ description "Allows Vagrant to manage machines with VMware vCloud Director(R)"
16
+
17
+ config(:vcloud, :provider) do
18
+ require_relative "config"
19
+ Config
20
+ end
21
+
22
+ provider(:vcloud) do
23
+ # TODO: add logging
24
+ setup_logging
25
+ setup_i18n
26
+
27
+ # Return the provider
28
+ require_relative "provider"
29
+ Provider
30
+ end
31
+
32
+ def self.setup_i18n
33
+ I18n.load_path << File.expand_path("locales/en.yml", VCloud.source_root)
34
+ I18n.reload!
35
+ end
36
+
37
+ # This sets up our log level to be whatever VAGRANT_LOG is.
38
+ def self.setup_logging
39
+ require "log4r"
40
+
41
+ level = nil
42
+ begin
43
+ level = Log4r.const_get(ENV["VAGRANT_LOG"].upcase)
44
+ rescue NameError
45
+ # This means that the logging constant wasn't found,
46
+ # which is fine. We just keep `level` as `nil`. But
47
+ # we tell the user.
48
+ level = nil
49
+ end
50
+
51
+ # Some constants, such as "true" resolve to booleans, so the
52
+ # above error checking doesn't catch it. This will check to make
53
+ # sure that the log level is an integer, as Log4r requires.
54
+ level = nil if !level.is_a?(Integer)
55
+
56
+ # Set the logging level on all "vagrant" namespaced
57
+ # logs as long as we have a valid level.
58
+ if level
59
+ logger = Log4r::Logger.new("vagrant_vcloud")
60
+ logger.outputters = Log4r::Outputter.stderr
61
+ logger.level = level
62
+ logger = nil
63
+ end
64
+ end
65
+ end
66
+ module Driver
67
+ autoload :Meta, File.expand_path("../driver/meta", __FILE__)
68
+ autoload :Version_5_1, File.expand_path("../driver/version_5_1", __FILE__)
69
+ end
70
+ module Model
71
+ autoload :ForwardedPort, File.expand_path("../model/forwarded_port", __FILE__)
72
+ end
73
+
74
+ module Util
75
+ autoload :CompileForwardedPorts, File.expand_path("../util/compile_forwarded_ports", __FILE__)
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,41 @@
1
+ require "log4r"
2
+ require "vagrant"
3
+
4
+ module VagrantPlugins
5
+ module VCloud
6
+ class Provider < Vagrant.plugin('2', :provider)
7
+ def initialize(machine)
8
+ @machine = machine
9
+ end
10
+
11
+ def action(name)
12
+ action_method = "action_#{name}"
13
+ return Action.send(action_method) if Action.respond_to?(action_method)
14
+ nil
15
+ end
16
+
17
+ def ssh_info
18
+ env = @machine.action("read_ssh_info")
19
+ env[:machine_ssh_info]
20
+ end
21
+
22
+ def state
23
+ env = @machine.action("read_state")
24
+
25
+ state_id = env[:machine_state_id]
26
+
27
+ # Translate into short/long descriptions
28
+ short = state_id.to_s.gsub("_", " ")
29
+ long = I18n.t("vagrant_vcloud.states.#{state_id}")
30
+
31
+ # Return the MachineState object
32
+ Vagrant::MachineState.new(state_id, short, long)
33
+ end
34
+
35
+ def to_s
36
+ id = @machine.id.nil? ? "new" : @machine.id
37
+ "vCloud (#{id})"
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,31 @@
1
+ require "vagrant/util/scoped_hash_override"
2
+
3
+ module VagrantPlugins
4
+ module VCloud
5
+ module Util
6
+ module CompileForwardedPorts
7
+ include Vagrant::Util::ScopedHashOverride
8
+
9
+ # This method compiles the forwarded ports into {ForwardedPort}
10
+ # models.
11
+ def compile_forwarded_ports(config)
12
+ mappings = {}
13
+
14
+ config.vm.networks.each do |type, options|
15
+ if type == :forwarded_port
16
+ guest_port = options[:guest]
17
+ host_port = options[:host]
18
+ options = scoped_hash_override(options, :vcloud)
19
+ id = options[:id]
20
+
21
+ mappings[host_port] =
22
+ Model::ForwardedPort.new(id, host_port, guest_port, options)
23
+ end
24
+ end
25
+
26
+ mappings.values
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,5 @@
1
+ module VagrantPlugins
2
+ module VCloud
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
data/locales/en.yml ADDED
@@ -0,0 +1,55 @@
1
+ en:
2
+ vagrant_vcloud:
3
+ vm_not_created: "The VM has not been created"
4
+ will_not_destroy: "VM will not be destroyed"
5
+ vm_already_running: "VM is already running"
6
+ vm_halted_cannot_suspend: "VM is not running or already suspended, cannot suspend it."
7
+ config:
8
+ api_version: "Configuration must specify a vCloud API version (default=5.1)"
9
+ catalog_name: "Configuration must specify a vCloud Director Catalog (for the VM templates images)"
10
+ compute_resource: "Configuration must specify a compute resource name"
11
+ hostname: "Configuration must specify a vCloud Director hostname"
12
+ name: "Configuration must specify a VM name"
13
+ orgname: "Configuration must specify a vCloud Director organization"
14
+ password: "Configuration must specify a vCloud Director password"
15
+ resource_pool: "Configuration must specify a resource pool name"
16
+ template: "Configuration must specify a template name"
17
+ username: "Configuration must specify a vCloud Director username"
18
+ vdc_name: "Configuration must specify a vCloud Director Virtual Datacenter (Target Organization VDC)"
19
+ errors:
20
+ missing_compute_resource: "Configured compute resource not found"
21
+ missing_datacenter: "Configured data center not found"
22
+ missing_resource_pool: "Configured resource pool not found"
23
+ missing_template: "Configured template VM could not be found"
24
+ vcloud_old_version: "Sorry, VMware vCloud Director API version %{version} is not supported"
25
+ host_not_found: "VMware vCloud Endpoint not found: %{message}"
26
+ host_redirect: "VMware vCloud Endpoint not found, received an HTTP 302 message back, are you sure you're using the right protocol? (https)"
27
+ unauthorized_access: "Access not authorized, please verify the username and password in your Vagrantfile"
28
+ catalog_add_error: "Impossible to add Box to Catalog, error: %{message}"
29
+ invalid_network_specification: "Wrong Network specification in the Vagrantfile, make sure you have access to the specified network."
30
+ stop_vapp_error: "Impossible to stop vApp, could be a transient error, please try again, error: %{message}"
31
+ compose_vapp_error: "Impossible to compose a vApp, error: %{message}"
32
+ forward_port_collision: "Port collision detected, change it in the Vagrantfile or add auto_correct: true. %{guest_port} => %{host_port}"
33
+ rest_errors:
34
+ object_not_found: "Object not found in vCloud Director"
35
+ invalid_config_error: "Invalid Guest Customization Specified"
36
+ invalid_state_error: "Invalid vApp State %{message}"
37
+ subnet_errors:
38
+ invalid_subnet: "The specified subnet is invalid: %{message}"
39
+ subnet_too_small: "The specified subnet is too small: %{message}, must contain at least 2 usable IPs (/30 or 255.255.255.252)"
40
+ states:
41
+ not_created: |-
42
+ The environment has not yet been created. Run `vagrant up` to
43
+ create the environment. If a machine is not created, only the
44
+ default provider will be shown. So if a provider is not listed,
45
+ then the machine is not created for that environment.
46
+ suspended: |-
47
+ The VM is paused. To resume the VM, simply run `vagrant up`
48
+ or `vagrant resume`
49
+ stopped: |-
50
+ The VM is powered off. To restart the VM, simply run `vagrant up`
51
+ running: |-
52
+ The VM is running. To stop this VM, you can run `vagrant halt` to
53
+ shut it down forcefully, or you can run `vagrant suspend` to simply
54
+ suspend the virtual machine. In either case, to restart it again,
55
+ simply run `vagrant up`.
@@ -0,0 +1,34 @@
1
+ $:.unshift File.expand_path('../lib', __FILE__)
2
+ require 'vagrant-vcloud/version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'vagrant-vcloud'
6
+ s.version = VagrantPlugins::VCloud::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ['Fabio Rapposelli', 'Timo Sugliani']
9
+ s.email = ['fabio@rapposelli.org', 'timo.sugliani@gmail.com']
10
+ s.homepage = 'https://github.com/frapposelli/vagrant-vcloud'
11
+ s.license = 'MIT'
12
+ s.summary = 'VMware vCloud Director® provider'
13
+ s.description = 'Enables Vagrant to manage machines with VMware vCloud Director®.'
14
+
15
+ s.add_runtime_dependency 'i18n', '~> 0.6.4'
16
+ s.add_runtime_dependency 'ruby-unison', '~> 0.0.3'
17
+ s.add_runtime_dependency 'log4r', '~> 1.1.10'
18
+ s.add_runtime_dependency 'awesome_print', '~> 1.1.0'
19
+ s.add_runtime_dependency 'nokogiri', '~> 1.6.0'
20
+ s.add_runtime_dependency 'rest-client', '~> 1.6.7'
21
+ s.add_runtime_dependency 'httpclient', '~> 2.3.4.1'
22
+ s.add_runtime_dependency 'ruby-progressbar', '~> 1.1.1'
23
+ s.add_runtime_dependency 'netaddr', '~> 1.5.0'
24
+
25
+ s.add_development_dependency "rake"
26
+ s.add_development_dependency "rspec-core", "~> 2.12.2"
27
+ s.add_development_dependency "rspec-expectations", "~> 2.12.1"
28
+ s.add_development_dependency "rspec-mocks", "~> 2.12.1"
29
+
30
+ s.files = `git ls-files`.split($/)
31
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
32
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
33
+ s.require_path = 'lib'
34
+ end
metadata ADDED
@@ -0,0 +1,273 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vagrant-vcloud
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Fabio Rapposelli
8
+ - Timo Sugliani
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: i18n
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: 0.6.4
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: 0.6.4
28
+ - !ruby/object:Gem::Dependency
29
+ name: ruby-unison
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 0.0.3
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: 0.0.3
42
+ - !ruby/object:Gem::Dependency
43
+ name: log4r
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: 1.1.10
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: 1.1.10
56
+ - !ruby/object:Gem::Dependency
57
+ name: awesome_print
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: 1.1.0
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 1.1.0
70
+ - !ruby/object:Gem::Dependency
71
+ name: nokogiri
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 1.6.0
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: 1.6.0
84
+ - !ruby/object:Gem::Dependency
85
+ name: rest-client
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: 1.6.7
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ version: 1.6.7
98
+ - !ruby/object:Gem::Dependency
99
+ name: httpclient
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ version: 2.3.4.1
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: 2.3.4.1
112
+ - !ruby/object:Gem::Dependency
113
+ name: ruby-progressbar
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: 1.1.1
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 1.1.1
126
+ - !ruby/object:Gem::Dependency
127
+ name: netaddr
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ~>
131
+ - !ruby/object:Gem::Version
132
+ version: 1.5.0
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: 1.5.0
140
+ - !ruby/object:Gem::Dependency
141
+ name: rake
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - '>='
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: rspec-core
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ~>
159
+ - !ruby/object:Gem::Version
160
+ version: 2.12.2
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ~>
166
+ - !ruby/object:Gem::Version
167
+ version: 2.12.2
168
+ - !ruby/object:Gem::Dependency
169
+ name: rspec-expectations
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ~>
173
+ - !ruby/object:Gem::Version
174
+ version: 2.12.1
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ~>
180
+ - !ruby/object:Gem::Version
181
+ version: 2.12.1
182
+ - !ruby/object:Gem::Dependency
183
+ name: rspec-mocks
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ~>
187
+ - !ruby/object:Gem::Version
188
+ version: 2.12.1
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ~>
194
+ - !ruby/object:Gem::Version
195
+ version: 2.12.1
196
+ description: Enables Vagrant to manage machines with VMware vCloud Director®.
197
+ email:
198
+ - fabio@rapposelli.org
199
+ - timo.sugliani@gmail.com
200
+ executables: []
201
+ extensions: []
202
+ extra_rdoc_files: []
203
+ files:
204
+ - .gitignore
205
+ - Gemfile
206
+ - LICENSE
207
+ - README.md
208
+ - Rakefile
209
+ - example_box/README.md
210
+ - example_box/Vagrantfile
211
+ - example_box/metadata.json
212
+ - lib/vagrant-vcloud.rb
213
+ - lib/vagrant-vcloud/action.rb
214
+ - lib/vagrant-vcloud/action/announce_ssh_exec.rb
215
+ - lib/vagrant-vcloud/action/build_vapp.rb
216
+ - lib/vagrant-vcloud/action/connect_vcloud.rb
217
+ - lib/vagrant-vcloud/action/destroy.rb
218
+ - lib/vagrant-vcloud/action/disconnect_vcloud.rb
219
+ - lib/vagrant-vcloud/action/forward_ports.rb
220
+ - lib/vagrant-vcloud/action/handle_nat_port_collisions.rb
221
+ - lib/vagrant-vcloud/action/inventory_check.rb
222
+ - lib/vagrant-vcloud/action/is_created.rb
223
+ - lib/vagrant-vcloud/action/is_paused.rb
224
+ - lib/vagrant-vcloud/action/is_running.rb
225
+ - lib/vagrant-vcloud/action/message_already_running.rb
226
+ - lib/vagrant-vcloud/action/message_cannot_suspend.rb
227
+ - lib/vagrant-vcloud/action/message_not_created.rb
228
+ - lib/vagrant-vcloud/action/message_will_not_destroy.rb
229
+ - lib/vagrant-vcloud/action/power_off.rb
230
+ - lib/vagrant-vcloud/action/power_on.rb
231
+ - lib/vagrant-vcloud/action/read_ssh_info.rb
232
+ - lib/vagrant-vcloud/action/read_state.rb
233
+ - lib/vagrant-vcloud/action/resume.rb
234
+ - lib/vagrant-vcloud/action/suspend.rb
235
+ - lib/vagrant-vcloud/action/sync_folders.rb
236
+ - lib/vagrant-vcloud/action/unmap_port_forwardings.rb
237
+ - lib/vagrant-vcloud/config.rb
238
+ - lib/vagrant-vcloud/driver/base.rb
239
+ - lib/vagrant-vcloud/driver/meta.rb
240
+ - lib/vagrant-vcloud/driver/version_5_1.rb
241
+ - lib/vagrant-vcloud/errors.rb
242
+ - lib/vagrant-vcloud/model/forwarded_port.rb
243
+ - lib/vagrant-vcloud/plugin.rb
244
+ - lib/vagrant-vcloud/provider.rb
245
+ - lib/vagrant-vcloud/util/compile_forwarded_ports.rb
246
+ - lib/vagrant-vcloud/version.rb
247
+ - locales/en.yml
248
+ - vagrant-vcloud.gemspec
249
+ homepage: https://github.com/frapposelli/vagrant-vcloud
250
+ licenses:
251
+ - MIT
252
+ metadata: {}
253
+ post_install_message:
254
+ rdoc_options: []
255
+ require_paths:
256
+ - lib
257
+ required_ruby_version: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - '>='
260
+ - !ruby/object:Gem::Version
261
+ version: '0'
262
+ required_rubygems_version: !ruby/object:Gem::Requirement
263
+ requirements:
264
+ - - '>='
265
+ - !ruby/object:Gem::Version
266
+ version: '0'
267
+ requirements: []
268
+ rubyforge_project:
269
+ rubygems_version: 2.1.8
270
+ signing_key:
271
+ specification_version: 4
272
+ summary: VMware vCloud Director® provider
273
+ test_files: []