code: func (os *OpenStack) ExpandVolume(volumeID string, oldSize resource.Quantity, newSize resource.Quantity) (resource.Quantity, error) {
  	volume, err := os.getVolume(volumeID)
  	if err != nil {
  		return oldSize, err
  	}
  	if volume.Status != volumeAvailableStatus {
  		// cinder volume can not be expanded if its status is not available
  		return oldSize, fmt.Errorf("volume status is not available")
  	}
  
  	// Cinder works with gigabytes, convert to GiB with rounding up
  	volSizeGiB, err := volumehelpers.RoundUpToGiBInt(newSize)
  	if err != nil {
  		return oldSize, err
  	}
  	newSizeQuant := resource.MustParse(fmt.Sprintf("%dGi", volSizeGiB))
  
  	// if volume size equals to or greater than the newSize, return nil
  	if volume.Size >= volSizeGiB {
  		return newSizeQuant, nil
  	}
  
  	volumes, err := os.volumeService("")
  	if err != nil {
  		return oldSize, err
  	}
  
  	err = volumes.expandVolume(volumeID, volSizeGiB)
  	if err != nil {
  		return oldSize, err
  	}
  	return newSizeQuant, nil
  }
docs: // ExpandVolume expands the size of specific cinder volume (in GiB)