code: func (g *Cloud) CreateDisk(
  	name string, diskType string, zone string, sizeGb int64, tags map[string]string) error {
  	// Do not allow creation of PDs in zones that are do not have nodes. Such PDs
  	// are not currently usable.
  	curZones, err := g.GetAllCurrentZones()
  	if err != nil {
  		return err
  	}
  	if !curZones.Has(zone) {
  		return fmt.Errorf("kubernetes does not have a node in zone %q", zone)
  	}
  
  	tagsStr, err := g.encodeDiskTags(tags)
  	if err != nil {
  		return err
  	}
  
  	diskType, err = getDiskType(diskType)
  	if err != nil {
  		return err
  	}
  
  	mc := newDiskMetricContextZonal("create", g.region, zone)
  
  	err = g.manager.CreateDiskOnCloudProvider(
  		name, sizeGb, tagsStr, diskType, zone)
  
  	mc.Observe(err)
  	if isGCEError(err, "alreadyExists") {
  		klog.Warningf("GCE PD %q already exists, reusing", name)
  		return nil
  	}
  	return err
  }
docs: // CreateDisk creates a new Persistent Disk, with the specified name &
  // size, in the specified zone. It stores specified tags encoded in
  // JSON in Description field.