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)