vagrant-softlayer 0.3.1 → 0.3.2
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/CHANGELOG.md +37 -24
- data/QUICKSTART.md +377 -0
- data/README.md +25 -20
- data/contrib/README.md +8 -1
- data/contrib/vagrant-softlayer-boxes +416 -408
- data/contrib/vagrant-softlayer-vlans +329 -0
- data/contrib/vagrantcloud/CENTOS_5_32.box +0 -0
- data/contrib/vagrantcloud/CENTOS_5_64.box +0 -0
- data/contrib/vagrantcloud/CENTOS_6_32.box +0 -0
- data/contrib/vagrantcloud/CENTOS_6_64.box +0 -0
- data/contrib/vagrantcloud/CENTOS_LATEST.box +0 -0
- data/contrib/vagrantcloud/CENTOS_LATEST_32.box +0 -0
- data/contrib/vagrantcloud/CENTOS_LATEST_64.box +0 -0
- data/contrib/vagrantcloud/CLOUDLINUX_5_32.box +0 -0
- data/contrib/vagrantcloud/CLOUDLINUX_5_64.box +0 -0
- data/contrib/vagrantcloud/CLOUDLINUX_6_32.box +0 -0
- data/contrib/vagrantcloud/CLOUDLINUX_6_64.box +0 -0
- data/contrib/vagrantcloud/CLOUDLINUX_LATEST.box +0 -0
- data/contrib/vagrantcloud/CLOUDLINUX_LATEST_32.box +0 -0
- data/contrib/vagrantcloud/CLOUDLINUX_LATEST_64.box +0 -0
- data/contrib/vagrantcloud/DEBIAN_5_32.box +0 -0
- data/contrib/vagrantcloud/DEBIAN_5_64.box +0 -0
- data/contrib/vagrantcloud/DEBIAN_6_32.box +0 -0
- data/contrib/vagrantcloud/DEBIAN_6_64.box +0 -0
- data/contrib/vagrantcloud/DEBIAN_7_32.box +0 -0
- data/contrib/vagrantcloud/DEBIAN_7_64.box +0 -0
- data/contrib/vagrantcloud/DEBIAN_LATEST.box +0 -0
- data/contrib/vagrantcloud/DEBIAN_LATEST_32.box +0 -0
- data/contrib/vagrantcloud/DEBIAN_LATEST_64.box +0 -0
- data/contrib/vagrantcloud/REDHAT_5_32.box +0 -0
- data/contrib/vagrantcloud/REDHAT_5_64.box +0 -0
- data/contrib/vagrantcloud/REDHAT_6_32.box +0 -0
- data/contrib/vagrantcloud/REDHAT_6_64.box +0 -0
- data/contrib/vagrantcloud/REDHAT_LATEST.box +0 -0
- data/contrib/vagrantcloud/REDHAT_LATEST_32.box +0 -0
- data/contrib/vagrantcloud/REDHAT_LATEST_64.box +0 -0
- data/contrib/vagrantcloud/SL_GENERIC.box +0 -0
- data/contrib/vagrantcloud/UBUNTU_10_32.box +0 -0
- data/contrib/vagrantcloud/UBUNTU_10_64.box +0 -0
- data/contrib/vagrantcloud/UBUNTU_12_32.box +0 -0
- data/contrib/vagrantcloud/UBUNTU_12_64.box +0 -0
- data/contrib/vagrantcloud/UBUNTU_14_32.box +0 -0
- data/contrib/vagrantcloud/UBUNTU_14_64.box +0 -0
- data/contrib/vagrantcloud/UBUNTU_8_32.box +0 -0
- data/contrib/vagrantcloud/UBUNTU_8_64.box +0 -0
- data/contrib/vagrantcloud/UBUNTU_LATEST.box +0 -0
- data/contrib/vagrantcloud/UBUNTU_LATEST_32.box +0 -0
- data/contrib/vagrantcloud/UBUNTU_LATEST_64.box +0 -0
- data/contrib/vagrantcloud/VYATTACE_6.5_64.box +0 -0
- data/contrib/vagrantcloud/VYATTACE_6.6_64.box +0 -0
- data/contrib/vagrantcloud/VYATTACE_LATEST.box +0 -0
- data/contrib/vagrantcloud/VYATTACE_LATEST_64.box +0 -0
- data/contrib/vagrantcloud/WIN_2003-DC-SP2-1_32.box +0 -0
- data/contrib/vagrantcloud/WIN_2003-DC-SP2-1_64.box +0 -0
- data/contrib/vagrantcloud/WIN_2003-ENT-SP2-5_32.box +0 -0
- data/contrib/vagrantcloud/WIN_2003-ENT-SP2-5_64.box +0 -0
- data/contrib/vagrantcloud/WIN_2003-STD-SP2-5_32.box +0 -0
- data/contrib/vagrantcloud/WIN_2003-STD-SP2-5_64.box +0 -0
- data/contrib/vagrantcloud/WIN_2008-DC-R2_64.box +0 -0
- data/contrib/vagrantcloud/WIN_2008-DC-SP2_32.box +0 -0
- data/contrib/vagrantcloud/WIN_2008-DC-SP2_64.box +0 -0
- data/contrib/vagrantcloud/WIN_2008-ENT-R2_64.box +0 -0
- data/contrib/vagrantcloud/WIN_2008-ENT-SP2_32.box +0 -0
- data/contrib/vagrantcloud/WIN_2008-ENT-SP2_64.box +0 -0
- data/contrib/vagrantcloud/WIN_2008-STD-R2-SP1_64.box +0 -0
- data/contrib/vagrantcloud/WIN_2008-STD-R2_64.box +0 -0
- data/contrib/vagrantcloud/WIN_2008-STD-SP2_32.box +0 -0
- data/contrib/vagrantcloud/WIN_2008-STD-SP2_64.box +0 -0
- data/contrib/vagrantcloud/WIN_2012-DC_64.box +0 -0
- data/contrib/vagrantcloud/WIN_2012-STD_64.box +0 -0
- data/contrib/vagrantcloud/WIN_LATEST.box +0 -0
- data/contrib/vagrantcloud/WIN_LATEST_32.box +0 -0
- data/contrib/vagrantcloud/WIN_LATEST_64.box +0 -0
- data/lib/vagrant-softlayer/action.rb +20 -16
- data/lib/vagrant-softlayer/action/create_instance.rb +24 -8
- data/lib/vagrant-softlayer/action/setup_softlayer.rb +2 -1
- data/lib/vagrant-softlayer/action/sync_folders.rb +99 -99
- data/lib/vagrant-softlayer/action/wait_for_rebuild.rb +36 -36
- data/lib/vagrant-softlayer/config.rb +10 -2
- data/lib/vagrant-softlayer/errors.rb +33 -29
- data/lib/vagrant-softlayer/plugin.rb +77 -77
- data/lib/vagrant-softlayer/util/load_balancer.rb +103 -103
- data/lib/vagrant-softlayer/util/network.rb +75 -73
- data/lib/vagrant-softlayer/util/warden.rb +38 -38
- data/lib/vagrant-softlayer/version.rb +5 -5
- data/locales/en.yml +6 -0
- data/spec/vagrant-softlayer/config_spec.rb +4 -2
- data/vagrant-softlayer.gemspec +55 -55
- metadata +71 -2
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -15,17 +15,17 @@ module VagrantPlugins
|
|
15
15
|
b.use Call, DestroyConfirm do |env, b2|
|
16
16
|
if env[:result]
|
17
17
|
b2.use ConfigValidate
|
18
|
-
|
18
|
+
b2.use Call, Is, :not_created do |env2, b3|
|
19
19
|
if env2[:result]
|
20
20
|
b3.use Message, :error, "vagrant_softlayer.vm.not_created"
|
21
|
-
|
21
|
+
else
|
22
|
+
b3.use SetupSoftLayer
|
23
|
+
b3.use UpdateDNS
|
24
|
+
b3.use DestroyInstance
|
25
|
+
b3.use LoadBalancerCleanup
|
26
|
+
b3.use ProvisionerCleanup
|
22
27
|
end
|
23
28
|
end
|
24
|
-
b2.use SetupSoftLayer
|
25
|
-
b2.use UpdateDNS
|
26
|
-
b2.use DestroyInstance
|
27
|
-
b2.use LoadBalancerCleanup
|
28
|
-
b2.use ProvisionerCleanup
|
29
29
|
else
|
30
30
|
b2.use Message, :warn, "vagrant_softlayer.vm.not_destroying"
|
31
31
|
end
|
@@ -93,18 +93,18 @@ module VagrantPlugins
|
|
93
93
|
b.use Call, Confirm, I18n.t("vagrant_softlayer.vm.rebuild_confirmation"), :force_rebuild do |env, b2|
|
94
94
|
if env[:result]
|
95
95
|
b2.use ConfigValidate
|
96
|
-
|
96
|
+
b2.use Call, Is, :not_created do |env2, b3|
|
97
97
|
if env2[:result]
|
98
98
|
b3.use Message, :error, "vagrant_softlayer.vm.not_created"
|
99
|
-
|
99
|
+
else
|
100
|
+
b3.use SetupSoftLayer
|
101
|
+
b3.use RebuildInstance
|
102
|
+
b3.use Provision
|
103
|
+
b3.use SyncFolders
|
104
|
+
b3.use WaitForRebuild
|
105
|
+
b3.use WaitForCommunicator
|
100
106
|
end
|
101
107
|
end
|
102
|
-
b2.use SetupSoftLayer
|
103
|
-
b2.use RebuildInstance
|
104
|
-
b2.use Provision
|
105
|
-
b2.use SyncFolders
|
106
|
-
b2.use WaitForRebuild
|
107
|
-
b2.use WaitForCommunicator
|
108
108
|
else
|
109
109
|
b2.use Message, :warn, "vagrant_softlayer.vm.not_rebuilding"
|
110
110
|
end
|
@@ -184,7 +184,11 @@ module VagrantPlugins
|
|
184
184
|
# This action is called to bring the box up from nothing.
|
185
185
|
def self.action_up
|
186
186
|
Vagrant::Action::Builder.new.tap do |b|
|
187
|
-
|
187
|
+
if defined?(HandleBox)
|
188
|
+
b.use HandleBox
|
189
|
+
else
|
190
|
+
b.use HandleBoxUrl
|
191
|
+
end
|
188
192
|
b.use ConfigValidate
|
189
193
|
b.use SetupSoftLayer
|
190
194
|
b.use Call, Is, :not_created do |env1, b1|
|
@@ -27,6 +27,22 @@ module VagrantPlugins
|
|
27
27
|
@env[:machine].provider_config.hostname || @env[:machine].config.vm.hostname
|
28
28
|
end
|
29
29
|
|
30
|
+
def get_vlan_id(vlan_name, vlan_space)
|
31
|
+
return vlan_name unless vlan_name.kind_of?(String)
|
32
|
+
|
33
|
+
routers = @env[:sl_account].object_mask("mask[routers,routers.datacenter,routers.networkVlans,routers.networkVlans.networkSpace,routers.networkVlans.type]").getObject["routers"]
|
34
|
+
|
35
|
+
routers.each do |router|
|
36
|
+
next if @env[:machine].provider_config.datacenter && router["datacenter"]["name"] != @env[:machine].provider_config.datacenter
|
37
|
+
router["networkVlans"].each do |vlan|
|
38
|
+
vlan_qualified_name = [ router["hostname"].split('.').reverse.join('.'), vlan["vlanNumber"] ].join('.')
|
39
|
+
return vlan["id"] if vlan.has_key?("name") && vlan["type"]["keyName"] == "STANDARD" && vlan["networkSpace"] == vlan_space.to_s.upcase && (vlan["name"] == vlan_name || vlan_qualified_name == vlan_name)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
raise Errors::SLVlanIdNotFound, :vlan_space => vlan_space.to_s, :vlan_name => vlan_name.inspect
|
44
|
+
end
|
45
|
+
|
30
46
|
def order_template
|
31
47
|
template = {
|
32
48
|
"dedicatedAccountHostOnlyFlag" => @env[:machine].provider_config.dedicated,
|
@@ -41,14 +57,14 @@ module VagrantPlugins
|
|
41
57
|
"startCpus" => @env[:machine].provider_config.start_cpus
|
42
58
|
}
|
43
59
|
|
44
|
-
template["blockDevices"]
|
45
|
-
template["
|
46
|
-
template["
|
47
|
-
template["operatingSystemReferenceCode"]
|
48
|
-
template["postInstallScriptUri"]
|
49
|
-
template["
|
50
|
-
template["
|
51
|
-
template["userData"]
|
60
|
+
template["blockDevices"] = @env[:machine].provider_config.disk_capacity.map{ |key,value| { "device"=> key.to_s, "diskImage" => { "capacity" => value.to_s } } } if @env[:machine].provider_config.disk_capacity
|
61
|
+
template["blockDeviceTemplateGroup"] = { :globalIdentifier => @env[:machine].provider_config.image_guid } if @env[:machine].provider_config.image_guid
|
62
|
+
template["datacenter"] = { :name => @env[:machine].provider_config.datacenter } if @env[:machine].provider_config.datacenter
|
63
|
+
template["operatingSystemReferenceCode"] = @env[:machine].provider_config.operating_system if !@env[:machine].provider_config.image_guid
|
64
|
+
template["postInstallScriptUri"] = @env[:machine].provider_config.post_install if @env[:machine].provider_config.post_install
|
65
|
+
template["primaryBackendNetworkComponent"] = { :networkVlan => { :id => get_vlan_id(@env[:machine].provider_config.vlan_private, :private) } } if @env[:machine].provider_config.vlan_private
|
66
|
+
template["primaryNetworkComponent"] = { :networkVlan => { :id => get_vlan_id(@env[:machine].provider_config.vlan_public, :public) } } if @env[:machine].provider_config.vlan_public
|
67
|
+
template["userData"] = [ { :value => @env[:machine].provider_config.user_data } ] if @env[:machine].provider_config.user_data
|
52
68
|
|
53
69
|
return template
|
54
70
|
end
|
@@ -22,8 +22,9 @@ module VagrantPlugins
|
|
22
22
|
:username => env[:machine].provider_config.username
|
23
23
|
}
|
24
24
|
|
25
|
-
env[:
|
25
|
+
env[:sl_account] = ::SoftLayer::Service.new("SoftLayer_Account", env[:sl_credentials])
|
26
26
|
env[:sl_product_order] = ::SoftLayer::Service.new("SoftLayer_Product_Order", env[:sl_credentials])
|
27
|
+
env[:sl_virtual_guest] = ::SoftLayer::Service.new("SoftLayer_Virtual_Guest", env[:sl_credentials])
|
27
28
|
|
28
29
|
unless env[:machine].id.nil? || env[:machine].id.empty?
|
29
30
|
env[:sl_machine] = env[:sl_virtual_guest].object_with_id(env[:machine].id.to_i)
|
@@ -1,99 +1,99 @@
|
|
1
|
-
require "log4r"
|
2
|
-
|
3
|
-
require "vagrant/util/scoped_hash_override"
|
4
|
-
require "vagrant/util/subprocess"
|
5
|
-
require "vagrant/util/which"
|
6
|
-
|
7
|
-
module VagrantPlugins
|
8
|
-
module SoftLayer
|
9
|
-
module Action
|
10
|
-
# This middleware uses `rsync` to sync the folders over to the
|
11
|
-
# SoftLayer instance.
|
12
|
-
class SyncFolders
|
13
|
-
include Vagrant::Util::ScopedHashOverride
|
14
|
-
|
15
|
-
def initialize(app, env)
|
16
|
-
@app = app
|
17
|
-
@logger = Log4r::Logger.new("vagrant_softlayer::action::sync_folders")
|
18
|
-
end
|
19
|
-
|
20
|
-
def call(env)
|
21
|
-
@app.call(env)
|
22
|
-
|
23
|
-
ssh_info = env[:machine].ssh_info
|
24
|
-
|
25
|
-
unless Vagrant::Util::Which.which("rsync")
|
26
|
-
env[:ui].warn(I18n.t("vagrant_softlayer.sync_folders.rsync_not_found", :side => "host"))
|
27
|
-
return
|
28
|
-
end
|
29
|
-
|
30
|
-
if env[:machine].communicate.execute("which rsync", :error_check => false) != 0
|
31
|
-
env[:ui].warn(I18n.t("vagrant_softlayer.sync_folders.rsync_not_found", :side => "guest"))
|
32
|
-
return
|
33
|
-
end
|
34
|
-
|
35
|
-
env[:machine].config.vm.synced_folders.each do |id, data|
|
36
|
-
data = scoped_hash_override(data, :softlayer)
|
37
|
-
|
38
|
-
# Ignore disabled shared folders
|
39
|
-
next if data[:disabled]
|
40
|
-
|
41
|
-
hostpath = File.expand_path(data[:hostpath], env[:root_path])
|
42
|
-
guestpath = data[:guestpath]
|
43
|
-
|
44
|
-
# Make sure there is a trailing slash on the host path to
|
45
|
-
# avoid creating an additional directory with rsync
|
46
|
-
hostpath = "#{hostpath}/" if hostpath !~ /\/$/
|
47
|
-
|
48
|
-
# on windows rsync.exe requires cygdrive-style paths
|
49
|
-
if Vagrant::Util::Platform.windows?
|
50
|
-
hostpath = hostpath.gsub(/^(\w):/) { "/cygdrive/#{$1}" }
|
51
|
-
end
|
52
|
-
|
53
|
-
env[:ui].info(I18n.t("vagrant_softlayer.sync_folders.rsync_folder",
|
54
|
-
:hostpath => hostpath,
|
55
|
-
:guestpath => guestpath))
|
56
|
-
|
57
|
-
# Create the host path if it doesn't exist and option flag is set
|
58
|
-
if data[:create]
|
59
|
-
begin
|
60
|
-
FileUtils::mkdir_p(hostpath)
|
61
|
-
rescue => err
|
62
|
-
raise Errors::MkdirError,
|
63
|
-
:hostpath => hostpath,
|
64
|
-
:err => err
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
# Create the guest path
|
69
|
-
env[:machine].communicate.sudo("mkdir -p '#{guestpath}'")
|
70
|
-
env[:machine].communicate.sudo(
|
71
|
-
"chown #{ssh_info[:username]} '#{guestpath}'")
|
72
|
-
|
73
|
-
# Rsync over to the guest path using the SSH info
|
74
|
-
command = [
|
75
|
-
"rsync", "--verbose", "--archive", "-z",
|
76
|
-
"--exclude", ".vagrant/", "--exclude", "Vagrantfile",
|
77
|
-
"-e", "ssh -p #{ssh_info[:port]} -o StrictHostKeyChecking=no -i '#{ssh_info[:private_key_path].join("' -i '")}'",
|
78
|
-
hostpath,
|
79
|
-
"#{ssh_info[:username]}@#{ssh_info[:host]}:#{guestpath}"]
|
80
|
-
|
81
|
-
# we need to fix permissions when using rsync.exe on windows, see
|
82
|
-
# http://stackoverflow.com/questions/5798807/rsync-permission-denied-created-directories-have-no-permissions
|
83
|
-
if Vagrant::Util::Platform.windows?
|
84
|
-
command.insert(1, "--chmod", "ugo=rwX")
|
85
|
-
end
|
86
|
-
|
87
|
-
r = Vagrant::Util::Subprocess.execute(*command)
|
88
|
-
if r.exit_code != 0
|
89
|
-
raise Errors::RsyncError,
|
90
|
-
:guestpath => guestpath,
|
91
|
-
:hostpath => hostpath,
|
92
|
-
:stderr => r.stderr
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
1
|
+
require "log4r"
|
2
|
+
|
3
|
+
require "vagrant/util/scoped_hash_override"
|
4
|
+
require "vagrant/util/subprocess"
|
5
|
+
require "vagrant/util/which"
|
6
|
+
|
7
|
+
module VagrantPlugins
|
8
|
+
module SoftLayer
|
9
|
+
module Action
|
10
|
+
# This middleware uses `rsync` to sync the folders over to the
|
11
|
+
# SoftLayer instance.
|
12
|
+
class SyncFolders
|
13
|
+
include Vagrant::Util::ScopedHashOverride
|
14
|
+
|
15
|
+
def initialize(app, env)
|
16
|
+
@app = app
|
17
|
+
@logger = Log4r::Logger.new("vagrant_softlayer::action::sync_folders")
|
18
|
+
end
|
19
|
+
|
20
|
+
def call(env)
|
21
|
+
@app.call(env)
|
22
|
+
|
23
|
+
ssh_info = env[:machine].ssh_info
|
24
|
+
|
25
|
+
unless Vagrant::Util::Which.which("rsync")
|
26
|
+
env[:ui].warn(I18n.t("vagrant_softlayer.sync_folders.rsync_not_found", :side => "host"))
|
27
|
+
return
|
28
|
+
end
|
29
|
+
|
30
|
+
if env[:machine].communicate.execute("which rsync", :error_check => false) != 0
|
31
|
+
env[:ui].warn(I18n.t("vagrant_softlayer.sync_folders.rsync_not_found", :side => "guest"))
|
32
|
+
return
|
33
|
+
end
|
34
|
+
|
35
|
+
env[:machine].config.vm.synced_folders.each do |id, data|
|
36
|
+
data = scoped_hash_override(data, :softlayer)
|
37
|
+
|
38
|
+
# Ignore disabled shared folders
|
39
|
+
next if data[:disabled]
|
40
|
+
|
41
|
+
hostpath = File.expand_path(data[:hostpath], env[:root_path])
|
42
|
+
guestpath = data[:guestpath]
|
43
|
+
|
44
|
+
# Make sure there is a trailing slash on the host path to
|
45
|
+
# avoid creating an additional directory with rsync
|
46
|
+
hostpath = "#{hostpath}/" if hostpath !~ /\/$/
|
47
|
+
|
48
|
+
# on windows rsync.exe requires cygdrive-style paths
|
49
|
+
if Vagrant::Util::Platform.windows?
|
50
|
+
hostpath = hostpath.gsub(/^(\w):/) { "/cygdrive/#{$1}" }
|
51
|
+
end
|
52
|
+
|
53
|
+
env[:ui].info(I18n.t("vagrant_softlayer.sync_folders.rsync_folder",
|
54
|
+
:hostpath => hostpath,
|
55
|
+
:guestpath => guestpath))
|
56
|
+
|
57
|
+
# Create the host path if it doesn't exist and option flag is set
|
58
|
+
if data[:create]
|
59
|
+
begin
|
60
|
+
FileUtils::mkdir_p(hostpath)
|
61
|
+
rescue => err
|
62
|
+
raise Errors::MkdirError,
|
63
|
+
:hostpath => hostpath,
|
64
|
+
:err => err
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# Create the guest path
|
69
|
+
env[:machine].communicate.sudo("mkdir -p '#{guestpath}'")
|
70
|
+
env[:machine].communicate.sudo(
|
71
|
+
"chown #{ssh_info[:username]} '#{guestpath}'")
|
72
|
+
|
73
|
+
# Rsync over to the guest path using the SSH info
|
74
|
+
command = [
|
75
|
+
"rsync", "--verbose", "--archive", "-z",
|
76
|
+
"--exclude", ".vagrant/", "--exclude", "Vagrantfile",
|
77
|
+
"-e", "ssh -p #{ssh_info[:port]} -o StrictHostKeyChecking=no -i '#{ssh_info[:private_key_path].join("' -i '")}'",
|
78
|
+
hostpath,
|
79
|
+
"#{ssh_info[:username]}@#{ssh_info[:host]}:#{guestpath}"]
|
80
|
+
|
81
|
+
# we need to fix permissions when using rsync.exe on windows, see
|
82
|
+
# http://stackoverflow.com/questions/5798807/rsync-permission-denied-created-directories-have-no-permissions
|
83
|
+
if Vagrant::Util::Platform.windows?
|
84
|
+
command.insert(1, "--chmod", "ugo=rwX")
|
85
|
+
end
|
86
|
+
|
87
|
+
r = Vagrant::Util::Subprocess.execute(*command)
|
88
|
+
if r.exit_code != 0
|
89
|
+
raise Errors::RsyncError,
|
90
|
+
:guestpath => guestpath,
|
91
|
+
:hostpath => hostpath,
|
92
|
+
:stderr => r.stderr
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -1,36 +1,36 @@
|
|
1
|
-
require "log4r"
|
2
|
-
|
3
|
-
module VagrantPlugins
|
4
|
-
module SoftLayer
|
5
|
-
module Action
|
6
|
-
# Waits until the new machine has been rebuilt.
|
7
|
-
class WaitForRebuild
|
8
|
-
include Util::Warden
|
9
|
-
|
10
|
-
def initialize(app, env)
|
11
|
-
@app = app
|
12
|
-
@logger = Log4r::Logger.new("vagrant_softlayer::action::wait_for_rebuild")
|
13
|
-
end
|
14
|
-
|
15
|
-
def call(env)
|
16
|
-
env[:ui].info I18n.t("vagrant_softlayer.vm.wait_for_rebuild")
|
17
|
-
|
18
|
-
# 20 minutes timeout
|
19
|
-
Timeout::timeout(1200) do
|
20
|
-
@logger.debug("Checking if the instance has been rebuilt.")
|
21
|
-
sl_warden do
|
22
|
-
while env[:sl_machine].object_mask("activeTransactionCount").getObject["activeTransactionCount"] > 0
|
23
|
-
@logger.debug("The machine is still being rebuilt. Retrying in 10 seconds.")
|
24
|
-
sleep 10
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
env[:ui].info I18n.t("vagrant_softlayer.vm.rebuilt")
|
30
|
-
|
31
|
-
@app.call(env)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
1
|
+
require "log4r"
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module SoftLayer
|
5
|
+
module Action
|
6
|
+
# Waits until the new machine has been rebuilt.
|
7
|
+
class WaitForRebuild
|
8
|
+
include Util::Warden
|
9
|
+
|
10
|
+
def initialize(app, env)
|
11
|
+
@app = app
|
12
|
+
@logger = Log4r::Logger.new("vagrant_softlayer::action::wait_for_rebuild")
|
13
|
+
end
|
14
|
+
|
15
|
+
def call(env)
|
16
|
+
env[:ui].info I18n.t("vagrant_softlayer.vm.wait_for_rebuild")
|
17
|
+
|
18
|
+
# 20 minutes timeout
|
19
|
+
Timeout::timeout(1200) do
|
20
|
+
@logger.debug("Checking if the instance has been rebuilt.")
|
21
|
+
sl_warden do
|
22
|
+
while env[:sl_machine].object_mask("activeTransactionCount").getObject["activeTransactionCount"] > 0
|
23
|
+
@logger.debug("The machine is still being rebuilt. Retrying in 10 seconds.")
|
24
|
+
sleep 10
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
env[:ui].info I18n.t("vagrant_softlayer.vm.rebuilt")
|
30
|
+
|
31
|
+
@app.call(env)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -24,6 +24,9 @@ module VagrantPlugins
|
|
24
24
|
# The domain of the instance.
|
25
25
|
attr_accessor :domain
|
26
26
|
|
27
|
+
# Force the use of the private IP for all communication even if a public IP is available
|
28
|
+
attr_accessor :force_private_ip
|
29
|
+
|
27
30
|
# The hostname of the instance.
|
28
31
|
attr_accessor :hostname
|
29
32
|
|
@@ -60,10 +63,10 @@ module VagrantPlugins
|
|
60
63
|
# User defined metadata string.
|
61
64
|
attr_accessor :user_data
|
62
65
|
|
63
|
-
# The ID of the private VLAN.
|
66
|
+
# The ID, name or qualified name of the private VLAN.
|
64
67
|
attr_accessor :vlan_private
|
65
68
|
|
66
|
-
# The ID of the public VLAN.
|
69
|
+
# The ID, name or qualified name of the public VLAN.
|
67
70
|
attr_accessor :vlan_public
|
68
71
|
|
69
72
|
# The load balancers service groups to join.
|
@@ -81,6 +84,7 @@ module VagrantPlugins
|
|
81
84
|
@dedicated = UNSET_VALUE
|
82
85
|
@disk_capacity = UNSET_VALUE
|
83
86
|
@domain = UNSET_VALUE
|
87
|
+
@force_private_ip = UNSET_VALUE
|
84
88
|
@hostname = UNSET_VALUE
|
85
89
|
@image_guid = UNSET_VALUE
|
86
90
|
@hourly_billing = UNSET_VALUE
|
@@ -154,6 +158,9 @@ module VagrantPlugins
|
|
154
158
|
# Domain should be specified in Vagrantfile, so we set default to nil.
|
155
159
|
@domain = nil if @domain == UNSET_VALUE
|
156
160
|
|
161
|
+
# Disable the use of force private IP so the default selection can take effect
|
162
|
+
@force_private_ip = false if @force_private_ip == UNSET_VALUE
|
163
|
+
|
157
164
|
# Hostname should be specified in Vagrantfile, either using `config.vm.hostname`
|
158
165
|
# or the provider specific configuration entry.
|
159
166
|
@hostname = nil if @hostname == UNSET_VALUE
|
@@ -205,6 +212,7 @@ module VagrantPlugins
|
|
205
212
|
def ssh_keys=(value)
|
206
213
|
@ssh_key = value
|
207
214
|
end
|
215
|
+
|
208
216
|
alias_method :ssh_key_id=, :ssh_keys=
|
209
217
|
alias_method :ssh_key_ids=, :ssh_keys=
|
210
218
|
alias_method :ssh_key_name=, :ssh_keys=
|