code: func UpdatePools(c context.Context) error {
  	host, err := getHost(c)
  	if err != nil {
  		return err
  	}
  	sc, err := newSwarmbucketClient(c, host)
  	if err != nil {
  		return err
  	}
  	r, err := sc.GetBuilders().Do()
  	if err != nil {
  		return err
  	}
  	// Process builders and save them.  We get back the descriptors that we have
  	// to fetch next.
  	descriptors, err := processBuilders(c, r)
  	if err != nil {
  		return errors.Annotate(err, "processing builders").Err()
  	}
  	// And now also fetch and save the BotPools.
  	return processBots(c, descriptors)
  }
docs: // UpdatePools is a cron job endpoint that:
  // 1. Fetches all the builders from our associated Swarmbucket instance.
  // 2. Consolidates all known descriptors (host+dimensions), saves BuilderPool.
  // 3. Fetches and saves BotPool data from swarming for all known descriptors.