code: func (fw *Framework) MiddlewareServers() (servers []srvcache.Server, err error) {
  	if fw.IsFederated() {
  		return fw.FederationMiddlewareServers()
  	}
  
  	configured := fw.Config.Choria.MiddlewareHosts
  	if len(configured) > 0 {
  		s, err := srvcache.StringHostsToServers(configured, "nats")
  		if err != nil {
  			return servers, fmt.Errorf("Could not parse configured Middleware: %s", err)
  		}
  
  		for _, server := range s {
  			servers = append(servers, server)
  		}
  	}
  
  	if len(servers) == 0 {
  		if servers, err = fw.QuerySrvRecords([]string{"_mcollective-server._tcp", "_x-puppet-mcollective._tcp"}); err != nil {
  			log.Warnf("Could not resolve Middleware Server SRV records: %s", err)
  		}
  	}
  
  	if len(servers) == 0 {
  		servers = []srvcache.Server{srvcache.Server{Host: "puppet", Port: 4222}}
  	}
  
  	for i, s := range servers {
  		s.Scheme = "nats"
  		servers[i] = s
  	}
  
  	return
  }
docs: // MiddlewareServers determines the correct Middleware Servers
  //
  // It does this by:
  //
  //    * looking for choria.federation_middleware_hosts configuration
  //	  * Doing SRV lookups of _mcollective-server._tcp and __x-puppet-mcollective._tcp
  //    * Defaulting to puppet:4222