func validateConfigRegion()

in cli/pkg/config/config.go [260:296]


func validateConfigRegion(projectID, region string) error {
	ctx := context.Background()
	c, err := compute.NewZonesRESTClient(ctx)
	if err != nil {
		return err
	}
	defer c.Close()

	req := &computepb.ListZonesRequest{
		Project: projectID,
	}
	it := c.List(ctx, req)
	// Use zones to populate a map of valid regions for this project
	regions := map[string]bool{}
	for {
		resp, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		r := resp.GetRegion()
		spl := strings.Split(r, "/")
		if len(spl) < 2 {
			return fmt.Errorf("error validating region (%s) - GCP region (%s) is invalid\n", region, r)
		}
		sanitizedRegion := spl[len(spl)-1]
		regions[sanitizedRegion] = true
	}

	// check if Config.Region is in the map.
	if _, ok := regions[region]; !ok {
		return fmt.Errorf("config-wide region %s not found. Must be one of: %v\n", region, regions)
	}
	return nil
}