Class: Uricp::Strategy::LocalConvert
- Inherits:
-
Object
- Object
- Uricp::Strategy::LocalConvert
show all
- Includes:
- Common
- Defined in:
- lib/uricp/strategy/local_convert.rb
Constant Summary
Constants included
from Common
Common::DRY_SNAP, Common::PIPE_URI
Instance Attribute Summary
Attributes included from Common
#proposed_options
#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?, #supported_source?, #temp_uri, #unsupported_transfer
#authentication, #curl_command, #curl_download_to_pipe, #curl_manifest, #curl_upload_from, #from, #from=, #http_authentication?, #to, #to=
Instance Method Details
#appropriate? ⇒ Boolean
5
6
7
8
9
10
11
12
13
14
|
# File 'lib/uricp/strategy/local_convert.rb', line 5
def appropriate?
if conversion_required? && file_source? && supported_source?
return proposal if new_qemu? || supported_conversion?
raise Uricp::UnsupportedConversion,
'qemu-img does not support required conversion'
end
debug "#{self.class.name}: not appropriate"
false
end
|
#command ⇒ Object
16
17
18
|
# File 'lib/uricp/strategy/local_convert.rb', line 16
def command
qemu_img_command(proposed_path)
end
|
#compat_option ⇒ Object
57
58
59
|
# File 'lib/uricp/strategy/local_convert.rb', line 57
def compat_option
'-o compat=0.10' if new_qemu?
end
|
#compress_option ⇒ Object
61
62
63
|
# File 'lib/uricp/strategy/local_convert.rb', line 61
def compress_option
options['compress'] && '-c'
end
|
#conversion_options ⇒ Object
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/uricp/strategy/local_convert.rb', line 46
def conversion_options
case options['target-format']
when :raw
'-O raw'
when :qcow2
"#{compress_option} -O qcow2 #{compat_option}"
when :qcow3, :qcow2v3
"#{compress_option} -O qcow2 -o compat=1.1"
end
end
|
#new_qemu? ⇒ Boolean
34
35
36
|
# File 'lib/uricp/strategy/local_convert.rb', line 34
def new_qemu?
@new_qemu ||= !!(`qemu-img convert -O qcow2 -o ? a b` =~ /\bcompat\b/m)
end
|
#proposal ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/uricp/strategy/local_convert.rb', line 20
def proposal
@proposed_options = options.dup
if to.scheme == 'file'
@proposed_options['from_uri'] = @proposed_options['to_uri']
else
@proposed_options['from_uri'] = temp_uri
@proposed_options['clean'] ||= []
@proposed_options['clean'] << proposed_path
end
@proposed_options.delete('source-format')
@proposed_options.delete('target-format')
self
end
|
#qemu_img_command(target) ⇒ Object
42
43
44
|
# File 'lib/uricp/strategy/local_convert.rb', line 42
def qemu_img_command(target)
"qemu-img convert #{conversion_options} #{from.path} #{target};"
end
|
#supported_conversion? ⇒ Boolean
38
39
40
|
# File 'lib/uricp/strategy/local_convert.rb', line 38
def supported_conversion?
([:qcow3, :qcow2v3] & [options['source-format'], options['target-format']]).empty? end
|