vagrant-libvirt 0.6.2 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +65 -13
- data/lib/vagrant-libvirt/action/cleanup_on_failure.rb +76 -0
- data/lib/vagrant-libvirt/action/create_domain.rb +56 -10
- data/lib/vagrant-libvirt/action/create_network_interfaces.rb +5 -1
- data/lib/vagrant-libvirt/action/create_networks.rb +24 -0
- data/lib/vagrant-libvirt/action/destroy_domain.rb +106 -21
- data/lib/vagrant-libvirt/action/destroy_networks.rb +1 -1
- data/lib/vagrant-libvirt/action/forward_ports.rb +12 -11
- data/lib/vagrant-libvirt/action/handle_box_image.rb +19 -10
- data/lib/vagrant-libvirt/action/prepare_nfs_settings.rb +1 -1
- data/lib/vagrant-libvirt/action/start_domain.rb +36 -0
- data/lib/vagrant-libvirt/action/wait_till_up.rb +6 -32
- data/lib/vagrant-libvirt/action.rb +67 -80
- data/lib/vagrant-libvirt/config.rb +85 -30
- data/lib/vagrant-libvirt/driver.rb +11 -9
- data/lib/vagrant-libvirt/errors.rb +12 -0
- data/lib/vagrant-libvirt/templates/domain.xml.erb +228 -218
- data/lib/vagrant-libvirt/templates/private_network.xml.erb +4 -1
- data/lib/vagrant-libvirt/util/network_util.rb +15 -3
- data/lib/vagrant-libvirt/util/nfs.rb +2 -0
- data/lib/vagrant-libvirt/util/resolvers.rb +80 -0
- data/lib/vagrant-libvirt/version +1 -1
- data/locales/en.yml +21 -0
- data/spec/spec_helper.rb +36 -23
- data/spec/support/libvirt_context.rb +7 -4
- data/spec/support/sharedcontext.rb +1 -1
- data/spec/unit/action/cleanup_on_failure_spec.rb +131 -0
- data/spec/unit/action/create_domain_spec/additional_disks_domain.xml +6 -18
- data/spec/unit/action/create_domain_spec/custom_disk_settings.xml +43 -0
- data/spec/unit/action/create_domain_spec/default_domain.xml +6 -18
- data/spec/unit/action/create_domain_spec/two_disk_settings.xml +49 -0
- data/spec/unit/action/create_domain_spec.rb +51 -7
- data/spec/unit/action/create_domain_volume_spec.rb +5 -3
- data/spec/unit/action/destroy_domain_spec/additional_disks_domain.xml +47 -0
- data/spec/unit/action/destroy_domain_spec/box_multiple_disks.xml +55 -0
- data/spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_and_custom_disks.xml +72 -0
- data/spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_and_custom_disks_no_aliases.xml +67 -0
- data/spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_disks.xml +67 -0
- data/spec/unit/action/destroy_domain_spec/cdrom_domain.xml +48 -0
- data/spec/unit/action/destroy_domain_spec.rb +134 -30
- data/spec/unit/action/forward_ports_spec.rb +10 -2
- data/spec/unit/action/handle_box_image_spec.rb +30 -0
- data/spec/unit/action/prepare_nfs_settings_spec.rb +59 -0
- data/spec/unit/action/shutdown_domain_spec.rb +1 -1
- data/spec/unit/action/start_domain_spec/clock_timer_rtc.xml +6 -18
- data/spec/unit/action/start_domain_spec/default.xml +6 -18
- data/spec/unit/action/start_domain_spec/default_added_tpm_path.xml +6 -18
- data/spec/unit/action/start_domain_spec/default_added_tpm_version.xml +6 -18
- data/spec/unit/action/start_domain_spec/existing.xml +1 -1
- data/spec/unit/action/wait_till_up_spec.rb +4 -43
- data/spec/unit/action_spec.rb +2 -0
- data/spec/unit/config_spec.rb +133 -26
- data/spec/unit/driver_spec.rb +154 -10
- data/spec/unit/provider_spec.rb +11 -0
- data/spec/unit/templates/domain_all_settings.xml +56 -77
- data/spec/unit/templates/domain_cpu_mode_passthrough.xml +39 -0
- data/spec/unit/templates/domain_custom_cpu_model.xml +6 -18
- data/spec/unit/templates/domain_defaults.xml +6 -18
- data/spec/unit/templates/domain_spec.rb +39 -13
- data/spec/unit/templates/tpm/version_1.2.xml +6 -18
- data/spec/unit/templates/tpm/version_2.0.xml +6 -18
- data/spec/unit/util/resolvers_spec.rb +116 -0
- metadata +65 -64
@@ -47,7 +47,7 @@ module VagrantPlugins
|
|
47
47
|
)
|
48
48
|
rescue Libvirt::RetrieveError => e
|
49
49
|
# this network is already destroyed, so move on
|
50
|
-
if e.
|
50
|
+
if e.libvirt_code == ProviderLibvirt::Util::ErrorCodes::VIR_ERR_NO_NETWORK
|
51
51
|
@logger.info 'It is already undefined'
|
52
52
|
next
|
53
53
|
# some other error occured, so raise it again
|
@@ -87,12 +87,13 @@ module VagrantPlugins
|
|
87
87
|
gateway_ports)
|
88
88
|
ssh_info = machine.ssh_info
|
89
89
|
params = %W(
|
90
|
+
-n
|
90
91
|
-L
|
91
92
|
#{host_ip}:#{host_port}:#{guest_ip}:#{guest_port}
|
92
93
|
-N
|
93
94
|
#{ssh_info[:host]}
|
94
|
-
)
|
95
|
-
params += '
|
95
|
+
)
|
96
|
+
params += '-g' if gateway_ports
|
96
97
|
|
97
98
|
options = (%W(
|
98
99
|
User=#{ssh_info[:username]}
|
@@ -105,32 +106,32 @@ module VagrantPlugins
|
|
105
106
|
ForwardX11=#{ssh_info[:forward_x11] ? 'yes' : 'no'}
|
106
107
|
IdentitiesOnly=#{ssh_info[:keys_only] ? 'yes' : 'no'}
|
107
108
|
) + ssh_info[:private_key_path].map do |pk|
|
108
|
-
"IdentityFile
|
109
|
-
end
|
109
|
+
"IdentityFile=\"#{pk}\""
|
110
|
+
end
|
111
|
+
).map { |s| ['-o', s] }.flatten
|
110
112
|
|
111
|
-
options +=
|
113
|
+
options += ['-o', "ProxyCommand=\"#{ssh_info[:proxy_command]}\""] if machine.provider_config.proxy_command
|
114
|
+
|
115
|
+
ssh_cmd = ['ssh'] + options + params
|
112
116
|
|
113
117
|
# TODO: instead of this, try and lock and get the stdin from spawn...
|
114
|
-
ssh_cmd = ''
|
115
118
|
if host_port <= 1024
|
116
119
|
@@lock.synchronize do
|
117
120
|
# TODO: add i18n
|
118
121
|
env[:ui].info 'Requesting sudo for host port(s) <= 1024'
|
119
122
|
r = system('sudo -v')
|
120
123
|
if r
|
121
|
-
ssh_cmd
|
124
|
+
ssh_cmd.unshift('sudo') # add sudo prefix
|
122
125
|
end
|
123
126
|
end
|
124
127
|
end
|
125
128
|
|
126
|
-
|
127
|
-
|
128
|
-
@logger.debug "Forwarding port with `#{ssh_cmd}`"
|
129
|
+
@logger.debug "Forwarding port with `#{ssh_cmd.join(' ')}`"
|
129
130
|
log_file = ssh_forward_log_file(
|
130
131
|
env[:machine], host_ip, host_port, guest_ip, guest_port,
|
131
132
|
)
|
132
133
|
@logger.info "Logging to #{log_file}"
|
133
|
-
spawn(ssh_cmd, [:out, :err] => [log_file, 'w'], :pgroup => true)
|
134
|
+
spawn(*ssh_cmd, [:out, :err] => [log_file, 'w'], :pgroup => true)
|
134
135
|
end
|
135
136
|
|
136
137
|
def ssh_forward_log_file(machine, host_ip, host_port, guest_ip, guest_port)
|
@@ -34,10 +34,11 @@ module VagrantPlugins
|
|
34
34
|
box_format = env[:machine].box.metadata['format']
|
35
35
|
HandleBoxImage.verify_box_format(box_format)
|
36
36
|
|
37
|
+
image_path = HandleBoxImage.get_box_image_path(env[:machine].box, 'box.img')
|
37
38
|
env[:box_volume_number] = 1
|
38
39
|
env[:box_volumes] = [{
|
39
|
-
:path =>
|
40
|
-
:name => HandleBoxImage.get_volume_name(env[:machine].box, 'box'),
|
40
|
+
:path => image_path,
|
41
|
+
:name => HandleBoxImage.get_volume_name(env[:machine].box, 'box', image_path, env[:ui]),
|
41
42
|
:virtual_size => HandleBoxImage.get_virtual_size(env),
|
42
43
|
:format => box_format,
|
43
44
|
}]
|
@@ -58,6 +59,8 @@ module VagrantPlugins
|
|
58
59
|
volume_name = HandleBoxImage.get_volume_name(
|
59
60
|
env[:machine].box,
|
60
61
|
disks[i].fetch('name', disks[i]['path'].sub(/#{File.extname(disks[i]['path'])}$/, '')),
|
62
|
+
image_path,
|
63
|
+
env[:ui],
|
61
64
|
)
|
62
65
|
|
63
66
|
# allowing name means needing to check that it doesn't cause a clash
|
@@ -122,15 +125,21 @@ module VagrantPlugins
|
|
122
125
|
|
123
126
|
protected
|
124
127
|
|
125
|
-
def self.get_volume_name(box, name)
|
128
|
+
def self.get_volume_name(box, name, path, ui)
|
129
|
+
version = begin
|
130
|
+
box.version.to_s
|
131
|
+
rescue
|
132
|
+
''
|
133
|
+
end
|
134
|
+
|
135
|
+
if version.empty?
|
136
|
+
ui.warn(I18n.t('vagrant_libvirt.box_version_missing', name: box.name.to_s))
|
137
|
+
|
138
|
+
version = "0_#{File.mtime(path).to_i}"
|
139
|
+
end
|
140
|
+
|
126
141
|
vol_name = box.name.to_s.dup.gsub('/', '-VAGRANTSLASH-')
|
127
|
-
vol_name << "_vagrant_box_image_#{
|
128
|
-
begin
|
129
|
-
box.version.to_s
|
130
|
-
rescue
|
131
|
-
''
|
132
|
-
end
|
133
|
-
}_#{name.dup.gsub('/', '-SLASH-')}.img"
|
142
|
+
vol_name << "_vagrant_box_image_#{version}_#{name.dup.gsub('/', '-SLASH-')}.img"
|
134
143
|
end
|
135
144
|
|
136
145
|
def self.get_virtual_size(env)
|
@@ -59,7 +59,7 @@ module VagrantPlugins
|
|
59
59
|
command = "ip=$(which ip); ${ip:-/sbin/ip} addr show | grep -i 'inet ' | grep -v '127.0.0.1' | tr -s ' ' | cut -d' ' -f3 | cut -d'/' -f 1"
|
60
60
|
result = ''
|
61
61
|
machine.communicate.execute(command) do |type, data|
|
62
|
-
result
|
62
|
+
result += data if type == :stdout
|
63
63
|
end
|
64
64
|
|
65
65
|
ips = result.chomp.split("\n").uniq
|
@@ -222,6 +222,24 @@ module VagrantPlugins
|
|
222
222
|
graphics.attributes['passwd'] = config.graphics_passwd
|
223
223
|
end
|
224
224
|
end
|
225
|
+
graphics_gl = REXML::XPath.first(xml_descr, '/domain/devices/graphics/gl')
|
226
|
+
if graphics_gl.nil?
|
227
|
+
if config.graphics_gl
|
228
|
+
graphics_gl = REXML::Element.new('gl', REXML::XPath.first(xml_descr, '/domain/devices/graphics'))
|
229
|
+
graphics_gl.attributes['enable'] = 'yes'
|
230
|
+
descr_changed = true
|
231
|
+
end
|
232
|
+
else
|
233
|
+
if config.graphics_gl
|
234
|
+
if graphics_gl.attributes['enable'] != 'yes'
|
235
|
+
graphics_gl.attributes['enable'] = 'yes'
|
236
|
+
descr_changed = true
|
237
|
+
end
|
238
|
+
else
|
239
|
+
graphics_gl.parent.delete_element(graphics_gl)
|
240
|
+
descr_changed = true
|
241
|
+
end
|
242
|
+
end
|
225
243
|
else
|
226
244
|
# graphics_type = none, remove entire element
|
227
245
|
graphics.parent.delete_element(graphics) unless graphics.nil?
|
@@ -280,6 +298,24 @@ module VagrantPlugins
|
|
280
298
|
video_model.attributes['vram'] = config.video_vram
|
281
299
|
end
|
282
300
|
end
|
301
|
+
video_accel = REXML::XPath.first(xml_descr, '/domain/devices/video/model/acceleration')
|
302
|
+
if video_accel.nil?
|
303
|
+
if config.video_accel3d
|
304
|
+
video_accel = REXML::Element.new('acceleration', REXML::XPath.first(xml_descr, '/domain/devices/video/model'))
|
305
|
+
video_accel.attributes['accel3d'] = 'yes'
|
306
|
+
descr_changed = true
|
307
|
+
end
|
308
|
+
else
|
309
|
+
if config.video_accel3d
|
310
|
+
if video_accel.attributes['accel3d'] != 'yes'
|
311
|
+
video_accel.attributes['accel3d'] = 'yes'
|
312
|
+
descr_changed = true
|
313
|
+
end
|
314
|
+
else
|
315
|
+
video_accel.parent.delete_element(video_accel)
|
316
|
+
descr_changed = true
|
317
|
+
end
|
318
|
+
end
|
283
319
|
end
|
284
320
|
|
285
321
|
# Sound device
|
@@ -22,60 +22,34 @@ module VagrantPlugins
|
|
22
22
|
# Initialize metrics if they haven't been
|
23
23
|
env[:metrics] ||= {}
|
24
24
|
|
25
|
-
|
26
|
-
domain =
|
25
|
+
driver = env[:machine].provider.driver
|
26
|
+
domain = driver.get_domain(env[:machine])
|
27
|
+
|
27
28
|
if domain.nil?
|
28
29
|
raise Errors::NoDomainError,
|
29
30
|
error_message: "Domain #{env[:machine].id} not found"
|
30
31
|
end
|
31
32
|
|
32
|
-
# Wait for domain to obtain an ip address. Ip address is searched
|
33
|
-
# from arp table, either locally or remotely via ssh, if Libvirt
|
34
|
-
# connection was done via ssh.
|
35
33
|
env[:ip_address] = nil
|
36
34
|
@logger.debug("Searching for IP for MAC address: #{domain.mac}")
|
37
35
|
env[:ui].info(I18n.t('vagrant_libvirt.waiting_for_ip'))
|
38
36
|
|
37
|
+
# Wait for domain to obtain an ip address. Ip address is searched
|
38
|
+
# from dhcp leases table via libvirt, or via qemu agent if enabled.
|
39
39
|
env[:metrics]['instance_ip_time'] = Util::Timer.time do
|
40
40
|
retryable(on: Fog::Errors::TimeoutError, tries: 300) do
|
41
41
|
# just return if interrupted and let the warden call recover
|
42
42
|
return if env[:interrupted]
|
43
43
|
|
44
44
|
# Wait for domain to obtain an ip address
|
45
|
-
env[:ip_address] =
|
45
|
+
env[:ip_address] = driver.get_domain_ipaddress(env[:machine], domain)
|
46
46
|
end
|
47
47
|
end
|
48
|
-
|
49
48
|
@logger.info("Got IP address #{env[:ip_address]}")
|
50
49
|
@logger.info("Time for getting IP: #{env[:metrics]['instance_ip_time']}")
|
51
50
|
|
52
51
|
@app.call(env)
|
53
52
|
end
|
54
|
-
|
55
|
-
def recover(env)
|
56
|
-
# Undo the import
|
57
|
-
terminate(env)
|
58
|
-
end
|
59
|
-
|
60
|
-
def terminate(env)
|
61
|
-
if env[:machine].state.id != :not_created
|
62
|
-
# If we're not supposed to destroy on error then just return
|
63
|
-
return unless env[:destroy_on_error]
|
64
|
-
|
65
|
-
if env[:halt_on_error]
|
66
|
-
halt_env = env.dup
|
67
|
-
halt_env.delete(:interrupted)
|
68
|
-
halt_env[:config_validate] = false
|
69
|
-
env[:action_runner].run(Action.action_halt, halt_env)
|
70
|
-
else
|
71
|
-
destroy_env = env.dup
|
72
|
-
destroy_env.delete(:interrupted)
|
73
|
-
destroy_env[:config_validate] = false
|
74
|
-
destroy_env[:force_confirm_destroy] = true
|
75
|
-
env[:action_runner].run(Action.action_destroy, destroy_env)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
53
|
end
|
80
54
|
end
|
81
55
|
end
|
@@ -6,6 +6,58 @@ require 'log4r'
|
|
6
6
|
module VagrantPlugins
|
7
7
|
module ProviderLibvirt
|
8
8
|
module Action
|
9
|
+
action_root = Pathname.new(File.expand_path('../action', __FILE__))
|
10
|
+
autoload :CleanupOnFailure, action_root.join('cleanup_on_failure')
|
11
|
+
autoload :ClearForwardedPorts, action_root.join('forward_ports')
|
12
|
+
autoload :CreateDomain, action_root.join('create_domain')
|
13
|
+
autoload :CreateDomainVolume, action_root.join('create_domain_volume')
|
14
|
+
autoload :CreateNetworkInterfaces, action_root.join('create_network_interfaces')
|
15
|
+
autoload :CreateNetworks, action_root.join('create_networks')
|
16
|
+
autoload :CleanMachineFolder, action_root.join('clean_machine_folder')
|
17
|
+
autoload :DestroyDomain, action_root.join('destroy_domain')
|
18
|
+
autoload :DestroyNetworks, action_root.join('destroy_networks')
|
19
|
+
autoload :ForwardPorts, action_root.join('forward_ports')
|
20
|
+
autoload :HaltDomain, action_root.join('halt_domain')
|
21
|
+
autoload :HandleBoxImage, action_root.join('handle_box_image')
|
22
|
+
autoload :HandleStoragePool, action_root.join('handle_storage_pool')
|
23
|
+
autoload :IsCreated, action_root.join('is_created')
|
24
|
+
autoload :IsRunning, action_root.join('is_running')
|
25
|
+
autoload :IsSuspended, action_root.join('is_suspended')
|
26
|
+
autoload :MessageAlreadyCreated, action_root.join('message_already_created')
|
27
|
+
autoload :MessageNotCreated, action_root.join('message_not_created')
|
28
|
+
autoload :MessageNotRunning, action_root.join('message_not_running')
|
29
|
+
autoload :MessageNotSuspended, action_root.join('message_not_suspended')
|
30
|
+
autoload :MessageWillNotDestroy, action_root.join('message_will_not_destroy')
|
31
|
+
autoload :PackageDomain, action_root.join('package_domain')
|
32
|
+
autoload :PrepareNFSSettings, action_root.join('prepare_nfs_settings')
|
33
|
+
autoload :PrepareNFSValidIds, action_root.join('prepare_nfs_valid_ids')
|
34
|
+
autoload :PruneNFSExports, action_root.join('prune_nfs_exports')
|
35
|
+
autoload :ReadMacAddresses, action_root.join('read_mac_addresses')
|
36
|
+
autoload :RemoveLibvirtImage, action_root.join('remove_libvirt_image')
|
37
|
+
autoload :RemoveStaleVolume, action_root.join('remove_stale_volume')
|
38
|
+
autoload :ResumeDomain, action_root.join('resume_domain')
|
39
|
+
autoload :SetNameOfDomain, action_root.join('set_name_of_domain')
|
40
|
+
autoload :SetBootOrder, action_root.join('set_boot_order')
|
41
|
+
autoload :SetupComplete, action_root.join('cleanup_on_failure')
|
42
|
+
# I don't think we need it anymore
|
43
|
+
autoload :ShareFolders, action_root.join('share_folders')
|
44
|
+
autoload :ShutdownDomain, action_root.join('shutdown_domain')
|
45
|
+
autoload :StartDomain, action_root.join('start_domain')
|
46
|
+
autoload :StartShutdownTimer, action_root.join('shutdown_domain')
|
47
|
+
autoload :SuspendDomain, action_root.join('suspend_domain')
|
48
|
+
autoload :TimedProvision, action_root.join('timed_provision')
|
49
|
+
autoload :WaitTillUp, action_root.join('wait_till_up')
|
50
|
+
|
51
|
+
autoload :HandleBox, 'vagrant/action/builtin/handle_box'
|
52
|
+
autoload :Package, 'vagrant/action/general/package'
|
53
|
+
autoload :PackageSetupFiles, 'vagrant/action/general/package_setup_files'
|
54
|
+
autoload :PackageSetupFolders, 'vagrant/action/general/package_setup_folders'
|
55
|
+
autoload :ProvisionerCleanup, 'vagrant/action/builtin/provisioner_cleanup'
|
56
|
+
autoload :SSHRun, 'vagrant/action/builtin/ssh_run'
|
57
|
+
autoload :SyncedFolderCleanup, 'vagrant/action/builtin/synced_folder_cleanup'
|
58
|
+
autoload :SyncedFolders, 'vagrant/action/builtin/synced_folders'
|
59
|
+
autoload :WaitForCommunicator, 'vagrant/action/builtin/wait_for_communicator'
|
60
|
+
|
9
61
|
# Include the built-in & general modules so we can use them as top-level things.
|
10
62
|
include Vagrant::Action::Builtin
|
11
63
|
include Vagrant::Action::General
|
@@ -24,6 +76,8 @@ module VagrantPlugins
|
|
24
76
|
b.use ConfigValidate
|
25
77
|
b.use BoxCheckOutdated
|
26
78
|
b.use Call, IsCreated do |env, b2|
|
79
|
+
b2.use CleanupOnFailure
|
80
|
+
|
27
81
|
# Create VM if not yet created.
|
28
82
|
if !env[:result]
|
29
83
|
b2.use SetNameOfDomain
|
@@ -31,37 +85,31 @@ module VagrantPlugins
|
|
31
85
|
b2.use CreateDomain
|
32
86
|
b2.use CreateNetworks
|
33
87
|
b2.use CreateNetworkInterfaces
|
34
|
-
|
35
|
-
b2.use
|
88
|
+
|
89
|
+
b2.use action_start
|
90
|
+
|
91
|
+
b2.use SetupComplete
|
36
92
|
else
|
37
93
|
b2.use HandleStoragePool
|
38
94
|
b2.use HandleBox
|
39
95
|
b2.use HandleBoxImage
|
40
96
|
b2.use CreateDomainVolume
|
41
97
|
b2.use CreateDomain
|
42
|
-
|
43
|
-
b2.use Provision
|
44
|
-
b2.use PrepareNFSValidIds
|
45
|
-
b2.use SyncedFolderCleanup
|
46
|
-
b2.use SyncedFolders
|
47
|
-
b2.use PrepareNFSSettings
|
48
|
-
b2.use ShareFolders
|
49
98
|
b2.use CreateNetworks
|
50
99
|
b2.use CreateNetworkInterfaces
|
51
|
-
b2.use SetBootOrder
|
52
100
|
|
53
|
-
b2.use
|
54
|
-
b2.use WaitTillUp
|
55
|
-
b2.use WaitForCommunicator, [:running]
|
101
|
+
b2.use action_start
|
56
102
|
|
57
|
-
b2.use ForwardPorts
|
58
103
|
b2.use SetHostname
|
59
|
-
# b2.use SyncFolders
|
60
104
|
end
|
61
105
|
else
|
62
106
|
env[:halt_on_error] = true
|
107
|
+
b2.use CreateNetworks
|
63
108
|
b2.use action_start
|
64
109
|
end
|
110
|
+
|
111
|
+
# corresponding action to CleanupOnFailure
|
112
|
+
b2.use SetupComplete
|
65
113
|
end
|
66
114
|
end
|
67
115
|
end
|
@@ -82,28 +130,25 @@ module VagrantPlugins
|
|
82
130
|
b2.use Call, IsSuspended do |env2, b3|
|
83
131
|
# if vm is suspended resume it then exit
|
84
132
|
if env2[:result]
|
85
|
-
b3.use CreateNetworks
|
86
133
|
b3.use ResumeDomain
|
87
134
|
next
|
88
135
|
end
|
89
136
|
|
90
137
|
if !env[:machine].config.vm.box
|
91
138
|
# With no box, we just care about network creation and starting it
|
92
|
-
b3.use CreateNetworks
|
93
139
|
b3.use SetBootOrder
|
94
140
|
b3.use StartDomain
|
95
141
|
else
|
96
142
|
# VM is not running or suspended.
|
97
|
-
|
98
143
|
b3.use Provision
|
99
144
|
|
100
|
-
# Ensure networks are created and active
|
101
|
-
b3.use CreateNetworks
|
102
|
-
b3.use SetBootOrder
|
103
|
-
|
104
145
|
b3.use PrepareNFSValidIds
|
105
146
|
b3.use SyncedFolderCleanup
|
106
147
|
b3.use SyncedFolders
|
148
|
+
b3.use PrepareNFSSettings
|
149
|
+
b3.use ShareFolders
|
150
|
+
|
151
|
+
b3.use SetBootOrder
|
107
152
|
|
108
153
|
# Start it..
|
109
154
|
b3.use StartDomain
|
@@ -114,8 +159,6 @@ module VagrantPlugins
|
|
114
159
|
b3.use WaitForCommunicator, [:running]
|
115
160
|
|
116
161
|
b3.use ForwardPorts
|
117
|
-
b3.use PrepareNFSSettings
|
118
|
-
b3.use ShareFolders
|
119
162
|
end
|
120
163
|
end
|
121
164
|
end
|
@@ -264,7 +307,6 @@ module VagrantPlugins
|
|
264
307
|
end
|
265
308
|
|
266
309
|
b3.use Provision
|
267
|
-
# b3.use SyncFolders
|
268
310
|
end
|
269
311
|
end
|
270
312
|
end
|
@@ -342,61 +384,6 @@ module VagrantPlugins
|
|
342
384
|
end
|
343
385
|
end
|
344
386
|
|
345
|
-
action_root = Pathname.new(File.expand_path('../action', __FILE__))
|
346
|
-
autoload :PackageDomain, action_root.join('package_domain')
|
347
|
-
autoload :CreateDomain, action_root.join('create_domain')
|
348
|
-
autoload :CreateDomainVolume, action_root.join('create_domain_volume')
|
349
|
-
autoload :CreateNetworkInterfaces, action_root.join('create_network_interfaces')
|
350
|
-
autoload :CreateNetworks, action_root.join('create_networks')
|
351
|
-
autoload :CleanMachineFolder, action_root.join('clean_machine_folder')
|
352
|
-
autoload :DestroyDomain, action_root.join('destroy_domain')
|
353
|
-
autoload :DestroyNetworks, action_root.join('destroy_networks')
|
354
|
-
autoload :ForwardPorts, action_root.join('forward_ports')
|
355
|
-
autoload :ClearForwardedPorts, action_root.join('forward_ports')
|
356
|
-
autoload :HaltDomain, action_root.join('halt_domain')
|
357
|
-
autoload :StartShutdownTimer, action_root.join('shutdown_domain')
|
358
|
-
autoload :ShutdownDomain, action_root.join('shutdown_domain')
|
359
|
-
autoload :HandleBoxImage, action_root.join('handle_box_image')
|
360
|
-
autoload :HandleStoragePool, action_root.join('handle_storage_pool')
|
361
|
-
autoload :RemoveLibvirtImage, action_root.join('remove_libvirt_image')
|
362
|
-
autoload :IsCreated, action_root.join('is_created')
|
363
|
-
autoload :IsRunning, action_root.join('is_running')
|
364
|
-
autoload :IsSuspended, action_root.join('is_suspended')
|
365
|
-
autoload :MessageAlreadyCreated, action_root.join('message_already_created')
|
366
|
-
autoload :MessageNotCreated, action_root.join('message_not_created')
|
367
|
-
autoload :MessageNotRunning, action_root.join('message_not_running')
|
368
|
-
autoload :MessageNotSuspended, action_root.join('message_not_suspended')
|
369
|
-
autoload :MessageWillNotDestroy, action_root.join('message_will_not_destroy')
|
370
|
-
|
371
|
-
autoload :RemoveStaleVolume, action_root.join('remove_stale_volume')
|
372
|
-
|
373
|
-
autoload :PrepareNFSSettings, action_root.join('prepare_nfs_settings')
|
374
|
-
autoload :PrepareNFSValidIds, action_root.join('prepare_nfs_valid_ids')
|
375
|
-
autoload :PruneNFSExports, action_root.join('prune_nfs_exports')
|
376
|
-
|
377
|
-
autoload :ReadMacAddresses, action_root.join('read_mac_addresses')
|
378
|
-
autoload :ResumeDomain, action_root.join('resume_domain')
|
379
|
-
autoload :SetNameOfDomain, action_root.join('set_name_of_domain')
|
380
|
-
autoload :SetBootOrder, action_root.join('set_boot_order')
|
381
|
-
|
382
|
-
# I don't think we need it anymore
|
383
|
-
autoload :ShareFolders, action_root.join('share_folders')
|
384
|
-
autoload :StartDomain, action_root.join('start_domain')
|
385
|
-
autoload :SuspendDomain, action_root.join('suspend_domain')
|
386
|
-
autoload :TimedProvision, action_root.join('timed_provision')
|
387
|
-
|
388
|
-
autoload :WaitTillUp, action_root.join('wait_till_up')
|
389
|
-
autoload :PrepareNFSValidIds, action_root.join('prepare_nfs_valid_ids')
|
390
|
-
|
391
|
-
autoload :Package, 'vagrant/action/general/package'
|
392
|
-
autoload :PackageSetupFiles, 'vagrant/action/general/package_setup_files'
|
393
|
-
autoload :PackageSetupFolders, 'vagrant/action/general/package_setup_folders'
|
394
|
-
autoload :SSHRun, 'vagrant/action/builtin/ssh_run'
|
395
|
-
autoload :HandleBox, 'vagrant/action/builtin/handle_box'
|
396
|
-
autoload :SyncedFolders, 'vagrant/action/builtin/synced_folders'
|
397
|
-
autoload :SyncedFolderCleanup, 'vagrant/action/builtin/synced_folder_cleanup'
|
398
|
-
autoload :ProvisionerCleanup, 'vagrant/action/builtin/provisioner_cleanup'
|
399
|
-
autoload :WaitForCommunicator, 'vagrant/action/builtin/wait_for_communicator'
|
400
387
|
end
|
401
388
|
end
|
402
389
|
end
|