def run_recipe_command(opts)
      payload = opts[:options] || {}
      target = {}
      target[:tags] = payload.delete(:tags) if payload[:tags]
      target[:scope] = payload.delete(:scope) if payload[:scope]
      target[:selector] = payload.delete(:selector) if payload[:selector]
      if (target[:tags] && !target[:tags].empty?) || target[:scope] || (target[:selector] == :all)
        send_push("/instance_scheduler/execute", opts[:conn], payload, target)
      else
        run_request("/forwarder/schedule_recipe", opts[:conn], payload)
      end
    end
def run_recipe_command(opts)
      payload = opts[:options] || {}
      target = {}
      target[:tags] = payload.delete(:tags) if payload[:tags]
      target[:scope] = payload.delete(:scope) if payload[:scope]
      target[:selector] = payload.delete(:selector) if payload[:selector]
      if (target[:tags] && !target[:tags].empty?) || target[:scope] || (target[:selector] == :all)
        send_push("/instance_scheduler/execute", opts[:conn], payload, target)
      else
        run_request("/forwarder/schedule_recipe", opts[:conn], payload)
      end
    end
Run recipe command implementation

 === Parameters
 opts[:conn](EM::Connection):: Connection used to send reply
 opts[:options](Hash):: Pass-through options sent to forwarder or instance_scheduler
   with a :tags value indicating tag-based routing instead of local execution

 === Return
 true:: Always return true