def create_volume(name, cpg_name, size_MiB, optional = nil)
      if @current_version < @min_version_with_compression && !optional.nil?
        optional.delete_if { |key, _value| key == :compression }
      end
      begin
        @volume.create_volume(name, cpg_name, size_MiB, optional)
      rescue => ex
        Util.log_exception(ex, caller_locations(1, 1)[0].label)
        raise ex
      end
    end
def create_volume(name, cpg_name, size_MiB, optional = nil)
      if @current_version < @min_version_with_compression && !optional.nil?
        optional.delete_if { |key, _value| key == :compression }
      end
      begin
        @volume.create_volume(name, cpg_name, size_MiB, optional)
      rescue => ex
        Util.log_exception(ex, caller_locations(1, 1)[0].label)
        raise ex
      end
    end
Creates a new volume.

 ==== Attributes

 * name - the name of the volume
      type name: String
 * cpg_name - the name of the destination CPG
      type cpg_name: String
 * size_MiB - size in MiB for the volume
      type size_MiB: Integer
 * optional - hash of other optional items
      type optional: hash

      optional = {
         'id' => 12,                     # Volume ID. If not specified, next
                                         # available is chosen
         'comment' => 'some comment',    # Additional information up to 511
                                         # characters
         'policies: {                    # Specifies VV policies
            'staleSS' => false,          # True allows stale snapshots.
            'oneHost' => true,           # True constrains volume export to
                                         # single host or host cluster
            'zeroDetect' => true,        # True requests Storage System to
                                         # scan for zeros in incoming write
                                         # data
            'system' => false,           # True special volume used by system
                                         # False is normal user volume
            'caching' => true},          # Read-only. True indicates write &
                                         # read caching & read ahead enabled
         'snapCPG' => 'CPG name',        # CPG Used for snapshots
         'ssSpcAllocWarningPct' => 12,   # Snapshot space allocation warning
         'ssSpcAllocLimitPct' => 22,     # Snapshot space allocation limit
         'tpvv' => true,                 # True: Create TPVV
                                         # False (default) Create FPVV
         'usrSpcAllocWarningPct' => 22,  # Enable user space allocation
                                         # warning
         'usrSpcAllocLimitPct' => 22,    # User space allocation limit
         'expirationHours' => 256,       # Relative time from now to expire
                                         # volume (max 43,800 hours)
         'retentionHours' => 256         # Relative time from now to retain
    }

 ==== Raises

 * Hpe3parSdk::HTTPBadRequest
        - INV_INPUT - Invalid Parameter
 * Hpe3parSdk::HTTPBadRequest
        - TOO_LARGE - Volume size above limit
 * Hpe3parSdk::HTTPBadRequest
        - NO_SPACE - Not Enough space is available
 * Hpe3parSdk::HTTPForbidden
        - PERM_DENIED - Permission denied
 * Hpe3parSdk::HTTPConflict
        - EXISTENT_SV - Volume Exists already