double-z
5/15/2013 - 12:44 AM

node.rb

$chefserver = "http://chef.thirdwave.local:4000"
$home = File.expand_path("~")
$user = ENV["USER"]
$time = (Time.now.getutc).to_i
$i = 0
$j = 0
$k = 0

def getNode
  box = $boxes[$i]
	if $multivm
  		if File.exist?(".node-#{box}")
  			puts "[node] Loading node for #{box}..."
  			$i += 1
  			return File.read(".node-#{box}")
  		else
  			node = "#{box}-#{$user}-#{$time}"
  			puts "[node] Using Chef Node: #{node}"
  			$i += 1
  			return node
  		end
  	else
	    if File.exist?(".node")
	    	puts "[node] Loading node for #{box}..."
	    	return File.read(".node")
	    else
	    	node = "#{box}-#{$user}-#{$time}"
	    	puts "[node] Using Chef Node: #{node}"
	    	return node
	    end
	end
end

def setNode
	box = $boxes[$j]
  	if $multivm
  		if !File.exist?(".node-#{box}")
  			File.open ".node-#{box}", "w" do |file|
  				node = "#{box}-#{$user}-#{$time}"
  			    puts "[node] Saving node to .node-#{box}..."
  			    file.write(node)
  			end
  		end
  		$j += 1
  	else
	    if !File.exist?(".node")
		    File.open ".node", "w" do |file|
		      node = "#{box}-#{$user}-#{$time}"
		      puts "[node] Saving node to .node..."
		      file.write(node)
		    end
	    end
	end
end

class NodeRegister
	def initialize app, env
		@app = app
	end

	def call env
		setNode
	end
end

class NodeReload
	def initialize app, env
		@app = app
	end

	def call env
		setNode
	end
end

class NodeRemove
  def initialize app, env
    @app = app
  end

  def call env
  	box = $boxes[$k]
  	if $multivm
  		if File.exist?(".node-#{box}")
  			puts "[node] Removing .node-#{box} file..."
  			File.delete(".node-#{box}")
  		end
  		$k += 1
	else
	    if File.exist?(".node")
	      puts "[node] Removing .node file..."
	      File.delete(".node")
	    end
	end
  end
end

Vagrant.actions[:up].insert_after(Vagrant::Action::VM::Boot, NodeRegister)

Vagrant.actions[:start].insert_after(Vagrant::Action::VM::Boot, NodeReload)

Vagrant.actions[:destroy].insert_after(Vagrant::Action::VM::Destroy, NodeRemove)