rrichards
6/10/2013 - 5:42 PM

middleware.rb

class OnDestroyMiddleware
  def initialize(app, env)
    @app = app
  end
    
  def call(env)
    env["config"].vm.provisioners.each do |provisioner|
      env.ui.info "Attempting to remove client #{provisioner.config.node_name}"
      `knife client show #{provisioner.config.node_name}`
      if $?.to_i == 0
        env.ui.info "Removing client #{provisioner.config.node_name}"
        `knife client delete #{provisioner.config.node_name} -y`
      end
      env.ui.info "Attempting to remove node #{provisioner.config.node_name}"
      `knife node show #{provisioner.config.node_name}`
      if $?.to_i == 0
        env.ui.info "Removing node #{provisioner.config.node_name}"
        `knife node delete #{provisioner.config.node_name} -y`
      end
    end
    @app.call(env)
  end
end

Vagrant::Action[:destroy].use(OnDestroyMiddleware)