lib/vagrant-windows/guest/windows.rb in vagrant-windows-0.0.1 vs lib/vagrant-windows/guest/windows.rb in vagrant-windows-0.0.2

- old
+ new

@@ -13,21 +13,26 @@ def change_host_name(name) #### on windows, renaming a computer seems to require a reboot vm.channel.execute("wmic computersystem where name=\"%COMPUTERNAME%\" call rename name=\"#{name}\"") end + # TODO: I am sure that ciphering windows versions will be important at some point + def distro_dispatch + :windows + end + def halt @vm.channel.execute("shutdown /s /t 1 /c \"Vagrant Halt\" /f /d p:4:1") # Wait until the VM's state is actually powered off. If this doesn't # occur within a reasonable amount of time (15 seconds by default), # then simply return and allow Vagrant to kill the machine. count = 0 while @vm.state != :poweroff count += 1 - return if count >= @vm.config.linux.halt_timeout + return if count >= @vm.config.windows.halt_timeout sleep @vm.config.windows.halt_check_interval end end def mount_shared_folder(name, guestpath, options) @@ -35,18 +40,82 @@ :options => {:mount_point => guestpath, :name => name}) @vm.channel.execute(mount_script,{:shell => :powershell}) end + def mount_nfs(ip, folders) + raise NotImplementedError, "Mounting NFS Shares on windows is not implemented" + # TODO: Maybe check for nfs support on the guest, since its often + # not installed by default + #folders.each do |name, opts| + # # Expand the guestpath, so we can handle things like "~/vagrant" + # real_guestpath = expanded_guest_path(opts[:guestpath]) + + # Do the actual creating and mounting + # @vm.channel.sudo("mkdir -p #{real_guestpath}") + # @vm.channel.sudo("mount -o vers=#{opts[:nfs_version]} #{ip}:'#{opts[:hostpath]}' #{real_guestpath}", + # :error_class => LinuxError, + # :error_key => :mount_nfs_fail) + #end + end + + def configure_networks(networks) + raise NotImplementedError, "Advanced Networking is not supported" + # First, remove any previous network modifications + # from the interface file. + #vm.channel.sudo("sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/network/interfaces > /tmp/vagrant-network-interfaces") + #vm.channel.sudo("su -c 'cat /tmp/vagrant-network-interfaces > /etc/network/interfaces'") + #vm.channel.sudo("rm /tmp/vagrant-network-interfaces") + + # Accumulate the configurations to add to the interfaces file as + # well as what interfaces we're actually configuring since we use that + # later. + #interfaces = Set.new + #entries = [] + #networks.each do |network| + # interfaces.add(network[:interface]) + # entry = TemplateRenderer.render("guests/debian/network_#{network[:type]}", + # :options => network) + + # entries << entry + #end + + # Perform the careful dance necessary to reconfigure + # the network interfaces + #temp = Tempfile.new("vagrant") + #temp.binmode + #temp.write(entries.join("\n")) + #temp.close + + #vm.channel.upload(temp.path, "/tmp/vagrant-network-entry") + + # Bring down all the interfaces we're reconfiguring. By bringing down + # each specifically, we avoid reconfiguring eth0 (the NAT interface) so + # SSH never dies. + #interfaces.each do |interface| + # vm.channel.sudo("/sbin/ifdown eth#{interface} 2> /dev/null") + #end + + #vm.channel.sudo("cat /tmp/vagrant-network-entry >> /etc/network/interfaces") + #vm.channel.sudo("rm /tmp/vagrant-network-entry") + + # Bring back up each network interface, reconfigured + #interfaces.each do |interface| + # vm.channel.sudo("/sbin/ifup eth#{interface}") + #end + end + def windows_path(path) p = '' if path =~ /^\// p << 'C:\\' end p << path p.gsub! /\//, "\\" p.gsub /\\\\{0,}/, "\\" end + + end end end \ No newline at end of file