code: func (s *server) disconnectClusters() error {
  	connectedRemoteClusters := s.getRemoteClusters()
  	if len(connectedRemoteClusters) == 0 {
  		return nil
  	}
  	remoteClusters, err := s.localAuthClient.GetRemoteClusters()
  	if err != nil {
  		return trace.Wrap(err)
  	}
  	remoteMap := remoteClustersMap(remoteClusters)
  	for _, cluster := range connectedRemoteClusters {
  		if _, ok := remoteMap[cluster.GetName()]; !ok {
  			s.Infof("Remote cluster %q has been deleted. Disconnecting it from the proxy.", cluster.GetName())
  			s.RemoveSite(cluster.GetName())
  			err := cluster.Close()
  			if err != nil {
  				s.Debugf("Failure closing cluster %q: %v.", cluster.GetName(), err)
  			}
  		}
  	}
  	return nil
  }
docs: // disconnectClusters disconnects reverse tunnel connections from remote clusters
  // that were deleted from the the local cluster side and cleans up in memory objects.
  // In this case all local trust has been deleted, so all the tunnel connections have to be dropped.