def create_snapshot(name, copy_of_name, optional = nil)
      if @current_version < @min_version_with_compression && !optional.nil?
        optional.delete_if { |key, _value| key == :allowRemoteCopyParent }
      end
      begin
        @volume.create_snapshot(name, copy_of_name, optional)
      rescue => ex
        Util.log_exception(ex, caller_locations(1, 1)[0].label)
        raise ex
      end
    end
def create_snapshot(name, copy_of_name, optional = nil)
      if @current_version < @min_version_with_compression && !optional.nil?
        optional.delete_if { |key, _value| key == :allowRemoteCopyParent }
      end
      begin
        @volume.create_snapshot(name, copy_of_name, optional)
      rescue => ex
        Util.log_exception(ex, caller_locations(1, 1)[0].label)
        raise ex
      end
    end
Creates a snapshot of an existing Volume.

 ==== Attributes

 * name - the name of the Snapshot
      type name: String
 * copy_of_name - the name of the parent volume
      type copy_of_name: String
 * optional - Hash of other optional items
      type optional: Hash

      optional = {
             'id' => 12,                   # Specifies the ID of the volume,
                                           # next by default
             'comment' => "some comment",
             'readOnly' => true,           # Read Only
             'expirationHours' => 36,      # time from now to expire
             'retentionHours' => 12        # time from now to expire
      }

 ==== Raises

 * Hpe3parSdk::HTTPNotFound
        - INON_EXISTENT_VOL - The volume does not exist
 * Hpe3parSdk::HTTPForbidden
        - PERM_DENIED - Permission denied