vagrantup 0.4.3.dev → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (175) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/config/default.rb +6 -6
  4. data/lib/vagrant.rb +6 -3
  5. data/lib/vagrant/action.rb +77 -0
  6. data/lib/vagrant/action/action_exception.rb +16 -0
  7. data/lib/vagrant/action/box/destroy.rb +19 -0
  8. data/lib/vagrant/action/box/download.rb +78 -0
  9. data/lib/vagrant/action/box/unpackage.rb +58 -0
  10. data/lib/vagrant/action/box/verify.rb +23 -0
  11. data/lib/vagrant/action/builder.rb +151 -0
  12. data/lib/vagrant/action/builtin.rb +114 -0
  13. data/lib/vagrant/action/env/error_halt.rb +16 -0
  14. data/lib/vagrant/action/env/set.rb +18 -0
  15. data/lib/vagrant/action/environment.rb +98 -0
  16. data/lib/vagrant/action/exception_catcher.rb +14 -0
  17. data/lib/vagrant/action/vm/boot.rb +54 -0
  18. data/lib/vagrant/action/vm/check_box.rb +27 -0
  19. data/lib/vagrant/action/vm/check_guest_additions.rb +32 -0
  20. data/lib/vagrant/action/vm/clean_machine_folder.rb +43 -0
  21. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +39 -0
  22. data/lib/vagrant/action/vm/clear_nfs_exports.rb +20 -0
  23. data/lib/vagrant/action/vm/clear_shared_folders.rb +32 -0
  24. data/lib/vagrant/action/vm/customize.rb +21 -0
  25. data/lib/vagrant/action/vm/destroy.rb +20 -0
  26. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +35 -0
  27. data/lib/vagrant/action/vm/disable_networks.rb +26 -0
  28. data/lib/vagrant/action/vm/export.rb +53 -0
  29. data/lib/vagrant/action/vm/forward_ports.rb +121 -0
  30. data/lib/vagrant/action/vm/forward_ports_helpers.rb +28 -0
  31. data/lib/vagrant/action/vm/halt.rb +34 -0
  32. data/lib/vagrant/action/vm/import.rb +33 -0
  33. data/lib/vagrant/action/vm/match_mac_address.rb +19 -0
  34. data/lib/vagrant/{actions → action}/vm/network.rb +47 -55
  35. data/lib/vagrant/action/vm/nfs.rb +161 -0
  36. data/lib/vagrant/action/vm/nfs_helpers.rb +11 -0
  37. data/lib/vagrant/action/vm/package.rb +99 -0
  38. data/lib/vagrant/action/vm/persist.rb +22 -0
  39. data/lib/vagrant/action/vm/provision.rb +50 -0
  40. data/lib/vagrant/action/vm/resume.rb +20 -0
  41. data/lib/vagrant/{actions/vm/shared_folders.rb → action/vm/share_folders.rb} +48 -45
  42. data/lib/vagrant/action/vm/suspend.rb +20 -0
  43. data/lib/vagrant/box.rb +3 -7
  44. data/lib/vagrant/commands/base.rb +1 -3
  45. data/lib/vagrant/commands/package.rb +4 -9
  46. data/lib/vagrant/commands/up.rb +0 -2
  47. data/lib/vagrant/config.rb +15 -1
  48. data/lib/vagrant/downloaders/file.rb +1 -1
  49. data/lib/vagrant/downloaders/http.rb +2 -1
  50. data/lib/vagrant/environment.rb +18 -14
  51. data/lib/vagrant/hosts/base.rb +77 -0
  52. data/lib/vagrant/hosts/bsd.rb +53 -0
  53. data/lib/vagrant/hosts/linux.rb +52 -0
  54. data/lib/vagrant/provisioners/base.rb +17 -9
  55. data/lib/vagrant/provisioners/chef.rb +1 -1
  56. data/lib/vagrant/provisioners/chef_server.rb +4 -8
  57. data/lib/vagrant/provisioners/chef_solo.rb +1 -2
  58. data/lib/vagrant/ssh.rb +12 -4
  59. data/lib/vagrant/systems/base.rb +4 -0
  60. data/lib/vagrant/systems/linux.rb +12 -1
  61. data/lib/vagrant/util.rb +16 -0
  62. data/lib/vagrant/util/busy.rb +59 -0
  63. data/lib/vagrant/util/plain_logger.rb +11 -0
  64. data/lib/vagrant/util/platform.rb +18 -0
  65. data/lib/vagrant/util/resource_logger.rb +128 -0
  66. data/lib/vagrant/version.rb +6 -0
  67. data/lib/vagrant/vm.rb +10 -12
  68. data/templates/chef_solo_solo.erb +2 -1
  69. data/templates/nfs/exports.erb +3 -0
  70. data/templates/nfs/exports_linux.erb +3 -0
  71. data/templates/strings.yml +23 -3
  72. metadata +121 -196
  73. data/.gitignore +0 -11
  74. data/Gemfile +0 -18
  75. data/Rakefile +0 -41
  76. data/VERSION +0 -1
  77. data/bin/.gitignore +0 -0
  78. data/lib/vagrant/actions/base.rb +0 -130
  79. data/lib/vagrant/actions/box/add.rb +0 -23
  80. data/lib/vagrant/actions/box/destroy.rb +0 -14
  81. data/lib/vagrant/actions/box/download.rb +0 -67
  82. data/lib/vagrant/actions/box/unpackage.rb +0 -42
  83. data/lib/vagrant/actions/box/verify.rb +0 -32
  84. data/lib/vagrant/actions/collection.rb +0 -36
  85. data/lib/vagrant/actions/runner.rb +0 -131
  86. data/lib/vagrant/actions/vm/boot.rb +0 -43
  87. data/lib/vagrant/actions/vm/customize.rb +0 -19
  88. data/lib/vagrant/actions/vm/destroy.rb +0 -24
  89. data/lib/vagrant/actions/vm/down.rb +0 -22
  90. data/lib/vagrant/actions/vm/export.rb +0 -45
  91. data/lib/vagrant/actions/vm/forward_ports.rb +0 -134
  92. data/lib/vagrant/actions/vm/halt.rb +0 -24
  93. data/lib/vagrant/actions/vm/import.rb +0 -23
  94. data/lib/vagrant/actions/vm/move_hard_drive.rb +0 -51
  95. data/lib/vagrant/actions/vm/package.rb +0 -94
  96. data/lib/vagrant/actions/vm/provision.rb +0 -49
  97. data/lib/vagrant/actions/vm/reload.rb +0 -17
  98. data/lib/vagrant/actions/vm/resume.rb +0 -16
  99. data/lib/vagrant/actions/vm/start.rb +0 -26
  100. data/lib/vagrant/actions/vm/suspend.rb +0 -16
  101. data/lib/vagrant/actions/vm/up.rb +0 -53
  102. data/lib/vagrant/busy.rb +0 -79
  103. data/lib/vagrant/resource_logger.rb +0 -126
  104. data/lib/vagrant/util/error_helper.rb +0 -13
  105. data/lib/vagrant/util/output_helper.rb +0 -9
  106. data/test/test_helper.rb +0 -149
  107. data/test/vagrant/actions/base_test.rb +0 -32
  108. data/test/vagrant/actions/box/add_test.rb +0 -36
  109. data/test/vagrant/actions/box/destroy_test.rb +0 -17
  110. data/test/vagrant/actions/box/download_test.rb +0 -137
  111. data/test/vagrant/actions/box/unpackage_test.rb +0 -99
  112. data/test/vagrant/actions/box/verify_test.rb +0 -44
  113. data/test/vagrant/actions/collection_test.rb +0 -113
  114. data/test/vagrant/actions/runner_test.rb +0 -268
  115. data/test/vagrant/actions/vm/boot_test.rb +0 -49
  116. data/test/vagrant/actions/vm/customize_test.rb +0 -21
  117. data/test/vagrant/actions/vm/destroy_test.rb +0 -37
  118. data/test/vagrant/actions/vm/down_test.rb +0 -39
  119. data/test/vagrant/actions/vm/export_test.rb +0 -88
  120. data/test/vagrant/actions/vm/forward_ports_test.rb +0 -253
  121. data/test/vagrant/actions/vm/halt_test.rb +0 -65
  122. data/test/vagrant/actions/vm/import_test.rb +0 -45
  123. data/test/vagrant/actions/vm/move_hard_drive_test.rb +0 -106
  124. data/test/vagrant/actions/vm/network_test.rb +0 -291
  125. data/test/vagrant/actions/vm/package_test.rb +0 -254
  126. data/test/vagrant/actions/vm/provision_test.rb +0 -99
  127. data/test/vagrant/actions/vm/reload_test.rb +0 -46
  128. data/test/vagrant/actions/vm/resume_test.rb +0 -26
  129. data/test/vagrant/actions/vm/shared_folders_test.rb +0 -211
  130. data/test/vagrant/actions/vm/start_test.rb +0 -73
  131. data/test/vagrant/actions/vm/suspend_test.rb +0 -26
  132. data/test/vagrant/actions/vm/up_test.rb +0 -96
  133. data/test/vagrant/active_list_test.rb +0 -173
  134. data/test/vagrant/box_test.rb +0 -154
  135. data/test/vagrant/busy_test.rb +0 -78
  136. data/test/vagrant/command_test.rb +0 -53
  137. data/test/vagrant/commands/base_test.rb +0 -139
  138. data/test/vagrant/commands/box/add_test.rb +0 -34
  139. data/test/vagrant/commands/box/list_test.rb +0 -32
  140. data/test/vagrant/commands/box/remove_test.rb +0 -41
  141. data/test/vagrant/commands/destroy_test.rb +0 -44
  142. data/test/vagrant/commands/halt_test.rb +0 -50
  143. data/test/vagrant/commands/init_test.rb +0 -55
  144. data/test/vagrant/commands/package_test.rb +0 -104
  145. data/test/vagrant/commands/provision_test.rb +0 -60
  146. data/test/vagrant/commands/reload_test.rb +0 -44
  147. data/test/vagrant/commands/resume_test.rb +0 -44
  148. data/test/vagrant/commands/ssh_config_test.rb +0 -77
  149. data/test/vagrant/commands/ssh_test.rb +0 -129
  150. data/test/vagrant/commands/status_test.rb +0 -40
  151. data/test/vagrant/commands/suspend_test.rb +0 -44
  152. data/test/vagrant/commands/up_test.rb +0 -47
  153. data/test/vagrant/config_test.rb +0 -287
  154. data/test/vagrant/downloaders/base_test.rb +0 -28
  155. data/test/vagrant/downloaders/file_test.rb +0 -33
  156. data/test/vagrant/downloaders/http_test.rb +0 -62
  157. data/test/vagrant/environment_test.rb +0 -770
  158. data/test/vagrant/provisioners/base_test.rb +0 -33
  159. data/test/vagrant/provisioners/chef_server_test.rb +0 -176
  160. data/test/vagrant/provisioners/chef_solo_test.rb +0 -183
  161. data/test/vagrant/provisioners/chef_test.rb +0 -175
  162. data/test/vagrant/resource_logger_test.rb +0 -145
  163. data/test/vagrant/ssh_session_test.rb +0 -46
  164. data/test/vagrant/ssh_test.rb +0 -296
  165. data/test/vagrant/systems/linux_test.rb +0 -179
  166. data/test/vagrant/util/error_helper_test.rb +0 -5
  167. data/test/vagrant/util/output_helper_test.rb +0 -5
  168. data/test/vagrant/util/plain_logger_test.rb +0 -17
  169. data/test/vagrant/util/platform_test.rb +0 -18
  170. data/test/vagrant/util/stacked_proc_runner_test.rb +0 -43
  171. data/test/vagrant/util/template_renderer_test.rb +0 -144
  172. data/test/vagrant/util/translator_test.rb +0 -61
  173. data/test/vagrant/util_test.rb +0 -27
  174. data/test/vagrant/vm_test.rb +0 -235
  175. data/vagrant.gemspec +0 -291
@@ -1,49 +0,0 @@
1
- module Vagrant
2
- module Actions
3
- module VM
4
- class Provision < Base
5
- attr_reader :provisioner
6
-
7
- def intialize(*args)
8
- super
9
-
10
- @provisioner = nil
11
- end
12
-
13
- def prepare
14
- provisioner = @runner.env.config.vm.provisioner
15
-
16
- if provisioner.nil?
17
- logger.info("Provisioning not enabled, ignoring this step")
18
- return
19
- end
20
-
21
- if provisioner.is_a?(Class)
22
- @provisioner = provisioner.new(@runner)
23
- raise ActionException.new(:provisioner_invalid_class) unless @provisioner.is_a?(Provisioners::Base)
24
- elsif provisioner.is_a?(Symbol)
25
- # We have a few hard coded provisioners for built-ins
26
- mapping = {
27
- :chef_solo => Provisioners::ChefSolo,
28
- :chef_server => Provisioners::ChefServer
29
- }
30
-
31
- provisioner_klass = mapping[provisioner]
32
- raise ActionException.new(:provisioner_unknown_type, :provisioner => provisioner.to_s) if provisioner_klass.nil?
33
- @provisioner = provisioner_klass.new(@runner)
34
- end
35
-
36
- logger.info "Provisioning enabled with #{@provisioner.class}"
37
- @provisioner.prepare
38
- end
39
-
40
- def execute!
41
- if provisioner
42
- logger.info "Beginning provisioning process..."
43
- provisioner.provision!
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,17 +0,0 @@
1
- module Vagrant
2
- module Actions
3
- module VM
4
- class Reload < Base
5
- def prepare
6
- steps = [Customize, ForwardPorts, SharedFolders, Network, Boot]
7
- steps.unshift(Halt) if @runner.vm.running?
8
- steps << Provision if !@runner.env.config.vm.provisioner.nil?
9
-
10
- steps.each do |action_klass|
11
- @runner.add_action(action_klass)
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,16 +0,0 @@
1
- module Vagrant
2
- module Actions
3
- module VM
4
- class Resume < Base
5
- def execute!
6
- if !@runner.vm.saved?
7
- raise ActionException.new(:vm_not_suspended)
8
- end
9
-
10
- logger.info "Resuming suspended VM..."
11
- @runner.start
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,26 +0,0 @@
1
- module Vagrant
2
- module Actions
3
- module VM
4
- class Start < Base
5
- def prepare
6
- # Start is a "meta-action" so it really just queues up a bunch
7
- # of other actions in its place:
8
- steps = [Boot]
9
- if !@runner.vm || !@runner.vm.saved?
10
- steps.unshift([Customize, ForwardPorts, SharedFolders, Network])
11
- steps << Provision if provision?
12
- end
13
-
14
- steps.flatten.each do |action_klass|
15
- @runner.add_action(action_klass, options)
16
- end
17
- end
18
-
19
- def provision?
20
- enabled = options[:provision].nil? ? true : options[:provision]
21
- !@runner.env.config.vm.provisioner.nil? && enabled
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,16 +0,0 @@
1
- module Vagrant
2
- module Actions
3
- module VM
4
- class Suspend < Base
5
- def execute!
6
- if !@runner.vm.running?
7
- raise ActionException.new(:vm_not_running_for_suspend)
8
- end
9
-
10
- logger.info "Saving VM state and suspending execution..."
11
- @runner.vm.save_state
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,53 +0,0 @@
1
- module Vagrant
2
- module Actions
3
- module VM
4
- class Up < Base
5
- def prepare
6
- # If the dotfile is not a file, raise error
7
- if File.exist?(@runner.env.dotfile_path) && !File.file?(@runner.env.dotfile_path)
8
- raise ActionException.new(:dotfile_error, :env => @runner.env)
9
- end
10
-
11
- # Up is a "meta-action" so it really just queues up a bunch
12
- # of other actions in its place:
13
- steps = [Import, Start]
14
- steps.insert(0, MoveHardDrive) if @runner.env.config.vm.hd_location
15
-
16
- steps.each do |action_klass|
17
- @runner.add_action(action_klass, options)
18
- end
19
- end
20
-
21
- def after_import
22
- update_dotfile
23
- setup_mac_address
24
- check_guest_additions
25
- end
26
-
27
- def update_dotfile
28
- logger.info "Persisting the VM UUID (#{@runner.uuid})..."
29
- @runner.env.update_dotfile
30
- end
31
-
32
- def setup_mac_address
33
- logger.info "Matching MAC addresses..."
34
- @runner.vm.network_adapters.first.mac_address = @runner.env.config.vm.base_mac
35
- @runner.vm.save
36
- end
37
-
38
- def check_guest_additions
39
- # Use the raw interface for now, while the virtualbox gem
40
- # doesn't support guest properties (due to cross platform issues)
41
- version = @runner.vm.interface.get_guest_property_value("/VirtualBox/GuestAdd/Version")
42
- if version.empty?
43
- logger.error Translator.t(:vm_additions_not_detected)
44
- elsif version != VirtualBox.version
45
- logger.error Translator.t(:vm_additions_version_mismatch,
46
- :guest_additions_version => version,
47
- :virtualbox_version => VirtualBox.version)
48
- end
49
- end
50
- end
51
- end
52
- end
53
- end
@@ -1,79 +0,0 @@
1
- module Vagrant
2
- def self.busy?
3
- Busy.busy?
4
- end
5
-
6
- def self.busy(&block)
7
- Busy.busy(&block)
8
- end
9
-
10
- class Busy
11
- extend Vagrant::Util
12
-
13
- @@busy = false
14
- @@mutex = Mutex.new
15
- @@trap_thread = nil
16
-
17
- class << self
18
- def busy?
19
- @@busy
20
- end
21
-
22
- def busy=(val)
23
- @@busy = val
24
- end
25
-
26
- def busy(&block)
27
- @@mutex.synchronize do
28
- begin
29
- Signal.trap("INT") { wait_for_not_busy }
30
- Busy.busy = true
31
- block.call
32
- ensure
33
- # In the case an exception is thrown, make sure we restore
34
- # busy back to some sane state.
35
- Busy.busy = false
36
-
37
- # Make sure that the trap thread completes, if it is running
38
- trap_thread.join if trap_thread
39
-
40
- # And restore the INT trap to the default
41
- Signal.trap("INT", "DEFAULT")
42
- end
43
- end
44
- end
45
-
46
- def wait_for_not_busy(sleeptime=5)
47
- if @@trap_thread
48
- # logger.info "Exiting vagrant immediately!"
49
- Thread.kill(@@trap_thread)
50
- abort
51
- return # for tests
52
- end
53
-
54
- @@trap_thread ||= Thread.new do
55
- # Wait while the app is busy
56
- loop do
57
- break unless busy?
58
- # logger.info "Waiting for vagrant to clean itself up..."
59
- sleep sleeptime
60
- end
61
-
62
- # Exit out of the entire script
63
- # logger.info "Exiting vagrant..."
64
- exit
65
- end
66
- end
67
-
68
- # Used for testing
69
- def reset_trap_thread!
70
- @@trap_thread = nil
71
- end
72
-
73
- # Returns the trap thread
74
- def trap_thread
75
- @@trap_thread
76
- end
77
- end
78
- end
79
- end
@@ -1,126 +0,0 @@
1
- require 'thread'
2
-
3
- module Vagrant
4
- # Represents a logger for a specific resource within Vagrant. Each
5
- # logger should be initialized and set to represent a single
6
- # resource. Each logged message will then appear in the following
7
- # format:
8
- #
9
- # [resource] message
10
- #
11
- # This class is thread safe. The backing class which actually does
12
- # all the logging IO is protected.
13
- #
14
- # This class also handles progress meters of multiple resources and
15
- # handles all the proper interleaving and console updating to
16
- # display the progress meters in a way which doesn't conflict with
17
- # other incoming log messages.
18
- class ResourceLogger
19
- @@singleton_logger = nil
20
- @@progress_reporters = nil
21
- @@writer_lock = Mutex.new
22
-
23
- # The resource which this logger represents.
24
- attr_reader :resource
25
-
26
- # The environment that this logger is part of
27
- attr_reader :env
28
-
29
- # The backing logger which actually handles the IO. This logger
30
- # should be a subclass of the standard library Logger, in general.
31
- # IMPORTANT: This logger must be thread-safe.
32
- attr_reader :logger
33
-
34
- class << self
35
- # Returns a singleton logger. If one has not yet be
36
- # instantiated, then the given environment will be used to
37
- # create a new logger.
38
- def singleton_logger(env=nil)
39
- if env && env.config && env.config.loaded?
40
- @@singleton_logger ||= Util::PlainLogger.new(env.config.vagrant.log_output)
41
- else
42
- Util::PlainLogger.new(nil)
43
- end
44
- end
45
-
46
- # Resets the singleton logger (only used for testing).
47
- def reset_singleton_logger!
48
- @@singleton_logger = nil
49
- end
50
-
51
- # Returns the progress parts array which contains the various
52
- # progress reporters.
53
- def progress_reporters
54
- @@progress_reporters ||= {}
55
- end
56
- end
57
-
58
- def initialize(resource, env)
59
- @resource = resource
60
- @env = env
61
- @logger = self.class.singleton_logger(env)
62
- end
63
-
64
- [:debug, :info, :error, :fatal].each do |method|
65
- define_method(method) do |message|
66
- @@writer_lock.synchronize do
67
- # We clear the line in case progress reports have been going
68
- # out.
69
- print(cl_reset)
70
- logger.send(method, "[#{resource}] #{message}")
71
- end
72
-
73
- # Once again flush the progress reporters since we probably
74
- # cleared any existing ones.
75
- flush_progress
76
- end
77
- end
78
-
79
- # Sets a progress report for the resource that this logger
80
- # represents. This progress report is interleaved within the output.
81
- def report_progress(progress, total, show_parts=true)
82
- # Simply add the progress reporter to the list of progress
83
- # reporters
84
- self.class.progress_reporters[resource] = {
85
- :progress => progress,
86
- :total => total,
87
- :show_parts => show_parts
88
- }
89
-
90
- # And force an update to occur
91
- flush_progress
92
- end
93
-
94
- # Clears the progress report for this resource
95
- def clear_progress
96
- self.class.progress_reporters.delete(resource)
97
- end
98
-
99
- def flush_progress
100
- # Don't do anything if there are no progress reporters
101
- return if self.class.progress_reporters.length <= 0
102
-
103
- @@writer_lock.synchronize do
104
- reports = []
105
-
106
- # First generate all the report percentages and output
107
- self.class.progress_reporters.each do |name, data|
108
- percent = (data[:progress].to_f / data[:total].to_f) * 100
109
- line = "#{name}: #{percent.to_i}%"
110
- line << " (#{data[:progress]} / #{data[:total]})" if data[:show_parts]
111
- reports << line
112
- end
113
-
114
- # Output it to stdout
115
- print "#{cl_reset}[progress] #{reports.join(" ")}"
116
- $stdout.flush
117
- end
118
- end
119
-
120
- def cl_reset
121
- reset = "\r"
122
- reset += "\e[0K" unless Mario::Platform.windows?
123
- reset
124
- end
125
- end
126
- end
@@ -1,13 +0,0 @@
1
- module Vagrant
2
- module Util
3
- def error_and_exit(key, data = {})
4
- abort <<-error
5
- =====================================================================
6
- Vagrant experienced an error!
7
-
8
- #{Translator.t(key, data).chomp}
9
- =====================================================================
10
- error
11
- end
12
- end
13
- end
@@ -1,9 +0,0 @@
1
- module Vagrant
2
- module Util
3
- def wrap_output
4
- puts "====================================================================="
5
- yield
6
- puts "====================================================================="
7
- end
8
- end
9
- end
@@ -1,149 +0,0 @@
1
- begin
2
- require File.expand_path('../.bundle/environment', __FILE__)
3
- rescue LoadError
4
- # Fallback on doing the resolve at runtime.
5
- require "rubygems"
6
- end
7
-
8
- # ruby-debug, not necessary, but useful if we have it
9
- begin
10
- require 'ruby-debug'
11
- rescue LoadError; end
12
-
13
-
14
- require File.join(File.dirname(__FILE__), '..', 'lib', 'vagrant')
15
- require 'contest'
16
- require 'mocha'
17
-
18
- class Test::Unit::TestCase
19
- # Mocks an environment, setting it up with the given config.
20
- def mock_environment
21
- environment = Vagrant::Environment.new
22
-
23
- Vagrant::Config.reset!(environment)
24
-
25
- Vagrant::Config.run do |config|
26
- config.vagrant.home = '~/.home'
27
- config.vagrant.dotfile_name = ".vagrant"
28
- config.vagrant.log_output = nil
29
-
30
- config.ssh.username = "foo"
31
- config.ssh.host = "baz"
32
- config.ssh.port = 22
33
- config.ssh.forwarded_port_key = "ssh"
34
- config.ssh.max_tries = 10
35
- config.ssh.timeout = 10
36
- config.ssh.private_key_path = '~/foo'
37
-
38
- config.vm.box = "foo"
39
- config.vm.box_ovf = "box.ovf"
40
- config.vm.base_mac = "42"
41
- config.vm.disk_image_format = 'VMDK'
42
- config.vm.forward_port("ssh", 22, 2222)
43
- config.vm.shared_folder_uid = nil
44
- config.vm.shared_folder_gid = nil
45
- config.vm.system = :linux
46
- config.vm.share_folder("v-root", "/vagrant", ".")
47
-
48
- config.package.name = 'vagrant'
49
- config.package.extension = '.box'
50
-
51
- # Unison
52
- config.unison.folder_suffix = ".sync"
53
- config.unison.log_file = "foo-%s"
54
-
55
- # Chef
56
- config.chef.chef_server_url = "http://localhost:4000"
57
- config.chef.validation_key_path = "validation.pem"
58
- config.chef.client_key_path = "/zoo/foo/bar.pem"
59
- config.chef.node_name = "baz"
60
- config.chef.cookbooks_path = "cookbooks"
61
- config.chef.provisioning_path = "/tmp/vagrant-chef"
62
- config.chef.log_level = :info
63
- config.chef.json = {
64
- :recipes => ["vagrant_main"]
65
- }
66
- end
67
-
68
- if block_given?
69
- Vagrant::Config.run do |config|
70
- yield config
71
- end
72
- end
73
-
74
- config = Vagrant::Config.execute!
75
-
76
- environment.instance_variable_set(:@config, config)
77
-
78
- # Setup the logger. We create it then reset it so that subsequent
79
- # calls will recreate it for us.
80
- environment.load_logger!
81
- environment.logger.class.reset_singleton_logger!
82
- environment.logger.stubs(:flush_progress)
83
- environment.logger.stubs(:cl_reset).returns("")
84
-
85
- environment
86
- end
87
-
88
- # Sets up the mocks for a VM
89
- def mock_vm(env=nil)
90
- env ||= mock_environment
91
- vm = Vagrant::VM.new
92
- vm.stubs(:env).returns(env)
93
- vm.stubs(:ssh).returns(Vagrant::SSH.new(vm.env))
94
- vm
95
- end
96
-
97
- # Sets up the mocks and instantiates an action for testing
98
- def mock_action(action_klass, *args)
99
- vm = mock("vboxvm")
100
- mock_vm = mock("vm")
101
- action = action_klass.new(mock_vm, *args)
102
- stub_default_action_dependecies(action)
103
-
104
- mock_vm.stubs(:name).returns("foo")
105
- mock_vm.stubs(:vm).returns(vm)
106
- mock_vm.stubs(:vm=)
107
- mock_vm.stubs(:invoke_callback)
108
- mock_vm.stubs(:invoke_around_callback).yields
109
- mock_vm.stubs(:actions).returns([action])
110
- mock_vm.stubs(:env).returns(mock_environment)
111
- mock_vm.env.stubs(:logger).returns(quiet_logger("mock"))
112
-
113
- mock_ssh = Vagrant::SSH.new(mock_vm.env)
114
- mock_ssh.stubs(:execute)
115
-
116
- mock_vm.stubs(:ssh).returns(mock_ssh)
117
-
118
- vm.stubs(:env).returns(mock_vm.env)
119
-
120
- [mock_vm, vm, action]
121
- end
122
-
123
- # Returns a resource logger which is safe for tests
124
- def quiet_logger(resource, env=nil)
125
- logger = Vagrant::ResourceLogger.new(resource, env)
126
- logger.stubs(:flush_progress)
127
- logger.stubs(:cl_reset).returns("")
128
- logger
129
- end
130
-
131
- # Returns a linux system
132
- def linux_system(vm)
133
- Vagrant::Systems::Linux.new(vm)
134
- end
135
-
136
- def stub_default_action_dependecies(mock)
137
- mock.stubs(:precedes).returns([])
138
- mock.stubs(:follows).returns([])
139
- end
140
-
141
- # Sets up the mocks and stubs for a downloader
142
- def mock_downloader(downloader_klass)
143
- tempfile = mock("tempfile")
144
- tempfile.stubs(:write)
145
-
146
- [downloader_klass.new(mock_environment), tempfile]
147
- end
148
- end
149
-