code: func (c *Coordinate) ListDatacenters(args *struct{}, reply *[]structs.DatacenterMap) error {
  	maps, err := c.srv.router.GetDatacenterMaps()
  	if err != nil {
  		return err
  	}
  
  	// Strip the datacenter suffixes from all the node names.
  	for i := range maps {
  		suffix := fmt.Sprintf(".%s", maps[i].Datacenter)
  		for j := range maps[i].Coordinates {
  			node := maps[i].Coordinates[j].Node
  			maps[i].Coordinates[j].Node = strings.TrimSuffix(node, suffix)
  		}
  	}
  
  	*reply = maps
  	return nil
  }
docs: // ListDatacenters returns the list of datacenters and their respective nodes
  // and the raw coordinates of those nodes (if no coordinates are available for
  // any of the nodes, the node list may be empty).