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.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/Gemfile +7 -0
- data/LICENSE +20 -0
- data/README.md +80 -0
- data/Rakefile +17 -0
- data/example_box/README.md +13 -0
- data/example_box/Vagrantfile +6 -0
- data/example_box/metadata.json +1 -0
- data/lib/vagrant-vcloud.rb +65 -0
- data/lib/vagrant-vcloud/action.rb +226 -0
- data/lib/vagrant-vcloud/action/announce_ssh_exec.rb +17 -0
- data/lib/vagrant-vcloud/action/build_vapp.rb +197 -0
- data/lib/vagrant-vcloud/action/connect_vcloud.rb +68 -0
- data/lib/vagrant-vcloud/action/destroy.rb +69 -0
- data/lib/vagrant-vcloud/action/disconnect_vcloud.rb +33 -0
- data/lib/vagrant-vcloud/action/forward_ports.rb +127 -0
- data/lib/vagrant-vcloud/action/handle_nat_port_collisions.rb +129 -0
- data/lib/vagrant-vcloud/action/inventory_check.rb +156 -0
- data/lib/vagrant-vcloud/action/is_created.rb +36 -0
- data/lib/vagrant-vcloud/action/is_paused.rb +22 -0
- data/lib/vagrant-vcloud/action/is_running.rb +22 -0
- data/lib/vagrant-vcloud/action/message_already_running.rb +17 -0
- data/lib/vagrant-vcloud/action/message_cannot_suspend.rb +17 -0
- data/lib/vagrant-vcloud/action/message_not_created.rb +17 -0
- data/lib/vagrant-vcloud/action/message_will_not_destroy.rb +17 -0
- data/lib/vagrant-vcloud/action/power_off.rb +33 -0
- data/lib/vagrant-vcloud/action/power_on.rb +46 -0
- data/lib/vagrant-vcloud/action/read_ssh_info.rb +69 -0
- data/lib/vagrant-vcloud/action/read_state.rb +59 -0
- data/lib/vagrant-vcloud/action/resume.rb +33 -0
- data/lib/vagrant-vcloud/action/suspend.rb +33 -0
- data/lib/vagrant-vcloud/action/sync_folders.rb +82 -0
- data/lib/vagrant-vcloud/action/unmap_port_forwardings.rb +75 -0
- data/lib/vagrant-vcloud/config.rb +132 -0
- data/lib/vagrant-vcloud/driver/base.rb +459 -0
- data/lib/vagrant-vcloud/driver/meta.rb +151 -0
- data/lib/vagrant-vcloud/driver/version_5_1.rb +1669 -0
- data/lib/vagrant-vcloud/errors.rb +62 -0
- data/lib/vagrant-vcloud/model/forwarded_port.rb +64 -0
- data/lib/vagrant-vcloud/plugin.rb +78 -0
- data/lib/vagrant-vcloud/provider.rb +41 -0
- data/lib/vagrant-vcloud/util/compile_forwarded_ports.rb +31 -0
- data/lib/vagrant-vcloud/version.rb +5 -0
- data/locales/en.yml +55 -0
- data/vagrant-vcloud.gemspec +34 -0
- 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
|
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: []
|