Class: Uricp::Strategy::PipedLocalDecompress

Inherits:
Object
  • Object
show all
Includes:
Common
Defined in:
lib/uricp/strategy/piped_local_decompress.rb

Constant Summary

Constants included from Common

Common::DRY_SNAP, Common::PIPE_URI, Common::VOL_REGEX

Constants included from CurlPrimitives

CurlPrimitives::ORBIT_HOSTS

Instance Attribute Summary

Attributes included from Common

#proposed_options

Attributes included from CurlPrimitives

#options

Instance Method Summary collapse

Methods included from Common

#all_local_files?, #always_write_sparse?, #compression_required?, #conversion_required?, #dry_run?, #encoding, #file_source?, #format_change?, #get_temp_filename, #in_rbd_cache, #in_rbd_cache?, #initialize, #lz4?, #lz4_source?, #not_in_rbd_cache?, #proposed_path, #qcow2?, #raw_target?, #rbd_base_name, #rbd_cache_image_exists?, #rbd_cache_image_spec, #rbd_cache_name, #rbd_cache_upload_available?, #rbd_clone_snapshot, #rbd_id, #rbd_image_spec, #rbd_sequence_complete?, #rbd_snapshot_name, #rbd_snapshot_spec?, #rbd_uri, #segmented?, #sequence_complete?, #snap_check, #supported_source?, #temp_uri, #unsupported_transfer, #xz?, #xz_source?

Methods included from CurlPrimitives

#authentication, #curl_command, #curl_download_to_pipe, #curl_manifest, #curl_upload_from, #from, #from=, #http_authentication?, #orbit?, #temp_url?, #to, #to=

Instance Method Details

#appropriate?Boolean

Returns:

  • (Boolean)


7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/uricp/strategy/piped_local_decompress.rb', line 7

def appropriate?
  case from.scheme
  when 'pipe'
    if raw_target? && lz4_source? && to.scheme == 'file'
      return proposal if always_write_sparse?

      debug "#{self.class.name}: using safe sparse expansion via stream"
    end
  end
  debug "#{self.class.name}: not appropriate"
  false
end

#commandObject



20
21
22
# File 'lib/uricp/strategy/piped_local_decompress.rb', line 20

def command
  "lz4 -qdf - #{to.path};"
end

#proposalObject



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/uricp/strategy/piped_local_decompress.rb', line 24

def proposal
  @proposed_options = options.dup
  @proposed_options.delete('source-format')
  if @proposed_options['target-format']
    @proposed_options['source-format'] = :raw
    if @proposed_options['source-format'] == @proposed_options['target-format']
      @proposed_options.delete('source-format')
      @proposed_options.delete('target-format')
    end
  end
  @proposed_options['from_uri'] = @proposed_options['to_uri']
  self
end