def run
      @ok = true
      if @run_list.empty?
        # Deliberately avoid auditing anything since we did not run any recipes
        # Still download the cookbooks repos if in dev mode
        checkout_cookbook_repos
        download_cookbooks if CookState.cookbooks_path
        report_success(nil)
      else
        configure_ohai
        configure_logging
        configure_chef
        download_attachments if @ok
        install_packages if @ok
        checkout_cookbook_repos if @ok
        download_cookbooks if @ok
        update_cookbook_path if @ok

        # note that chef normally enforces path sanity before executing ohai in
        # the client run method. we create ohai before client run and some ohai
        # plugins behave badly when there is no ruby on the PATH. we need to do
        # a pre-emptive path sanity here before we start ohai and chef.
        enforce_path_sanity
        check_ohai { |o| converge(o) } if @ok
      end
      true
    rescue Exception => e
      report_failure('Execution failed', "The following exception was caught while preparing for execution: (#{e.message}) from\n#{e.backtrace.join("\n")}")
    end
def run
      @ok = true
      if @run_list.empty?
        # Deliberately avoid auditing anything since we did not run any recipes
        # Still download the cookbooks repos if in dev mode
        checkout_cookbook_repos
        download_cookbooks if CookState.cookbooks_path
        report_success(nil)
      else
        configure_ohai
        configure_logging
        configure_chef
        download_attachments if @ok
        install_packages if @ok
        checkout_cookbook_repos if @ok
        download_cookbooks if @ok
        update_cookbook_path if @ok

        # note that chef normally enforces path sanity before executing ohai in
        # the client run method. we create ohai before client run and some ohai
        # plugins behave badly when there is no ruby on the PATH. we need to do
        # a pre-emptive path sanity here before we start ohai and chef.
        enforce_path_sanity
        check_ohai { |o| converge(o) } if @ok
      end
      true
    rescue Exception => e
      report_failure('Execution failed', "The following exception was caught while preparing for execution: (#{e.message}) from\n#{e.backtrace.join("\n")}")
    end
Run given executable bundle
 Asynchronous, set deferrable object's disposition

 === Return
 true:: Always return true