code: func (r *realisClient) SLADrainHosts(policy *aurora.SlaPolicy, timeout int64, hosts ...string) (*aurora.DrainHostsResult_, error) {
  	var result *aurora.DrainHostsResult_
  
  	if len(hosts) == 0 {
  		return nil, errors.New("no hosts provided to drain")
  	}
  
  	drainList := aurora.NewHosts()
  	drainList.HostNames = hosts
  
  	r.logger.DebugPrintf("SLADrainHosts Thrift Payload: %v\n", drainList)
  
  	resp, retryErr := r.thriftCallWithRetries(func() (*aurora.Response, error) {
  		return r.adminClient.SlaDrainHosts(nil, drainList, policy, timeout)
  	})
  
  	if retryErr != nil {
  		return result, errors.Wrap(retryErr, "Unable to recover connection")
  	}
  
  	if resp.GetResult_() != nil {
  		result = resp.GetResult_().GetDrainHostsResult_()
  	}
  
  	return result, nil
  }
docs: // Start SLA Aware Drain.
  // defaultSlaPolicy is the fallback SlaPolicy to use if a task does not have an SlaPolicy.
  // After timeoutSecs, tasks will be forcefully drained without checking SLA.