uricp 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/uricp.rb +1 -1
- data/lib/uricp/strategy/local_convert.rb +38 -2
- data/lib/uricp/version.rb +1 -1
- metadata +1 -2
- data/lib/uricp/strategy/local_convert_common.rb +0 -29
data/lib/uricp.rb
CHANGED
@@ -2,7 +2,6 @@ require 'uricp/version'
|
|
2
2
|
require 'uricp/curl_primitives'
|
3
3
|
require 'uricp/strategy/common'
|
4
4
|
require 'uricp/strategy/cache_common'
|
5
|
-
require 'uricp/strategy/local_convert_common'
|
6
5
|
require 'uricp/strategy/local_convert'
|
7
6
|
require 'uricp/strategy/local_link'
|
8
7
|
require 'uricp/strategy/piped_cache'
|
@@ -25,6 +24,7 @@ module Uricp
|
|
25
24
|
|
26
25
|
UnsupportedURLtype = Class.new(ArgumentError)
|
27
26
|
MissingCache = Class.new(ArgumentError)
|
27
|
+
UnsupportedConversion = Class.new(ArgumentError)
|
28
28
|
|
29
29
|
end
|
30
30
|
|
@@ -2,11 +2,16 @@ module Uricp::Strategy
|
|
2
2
|
|
3
3
|
class LocalConvert
|
4
4
|
|
5
|
-
include Uricp::Strategy::
|
5
|
+
include Uricp::Strategy::Common
|
6
6
|
|
7
7
|
def appropriate?
|
8
8
|
if conversion_required? && file_source? && supported_source?
|
9
|
-
|
9
|
+
if new_qemu? || supported_conversion?
|
10
|
+
return proposal
|
11
|
+
else
|
12
|
+
raise Uricp::UnsupportedConversion,
|
13
|
+
"qemu-img does not support required conversion"
|
14
|
+
end
|
10
15
|
end
|
11
16
|
debug "#{self.class.name}: not appropriate"
|
12
17
|
false
|
@@ -30,6 +35,37 @@ module Uricp::Strategy
|
|
30
35
|
self
|
31
36
|
end
|
32
37
|
|
38
|
+
def new_qemu?
|
39
|
+
@new_qemu ||= !!(`qemu-img convert -O qcow2 -o ? a b` =~ /^compat/m)
|
40
|
+
end
|
41
|
+
|
42
|
+
def supported_conversion?
|
43
|
+
([:qcow3, :qcow2v3] & [options['source-format'], options['target-format']]).empty?
|
44
|
+
end
|
45
|
+
|
46
|
+
def qemu_img_command(target)
|
47
|
+
"qemu-img convert #{conversion_options} #{from.path} #{target};"
|
48
|
+
end
|
49
|
+
|
50
|
+
def conversion_options
|
51
|
+
case options['target-format']
|
52
|
+
when :raw
|
53
|
+
'-O raw'
|
54
|
+
when :qcow2
|
55
|
+
"#{compress_option} -O qcow2 #{compat_option}"
|
56
|
+
when :qcow3, :qcow2v3
|
57
|
+
"#{compress_option} -O qcow2 -o compat=1.1"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def compat_option
|
62
|
+
"-o compat=0.10" if new_qemu?
|
63
|
+
end
|
64
|
+
|
65
|
+
def compress_option
|
66
|
+
options['compress'] && '-c'
|
67
|
+
end
|
68
|
+
|
33
69
|
end
|
34
70
|
|
35
71
|
end
|
data/lib/uricp/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uricp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -224,7 +224,6 @@ files:
|
|
224
224
|
- lib/uricp/strategy/cleaner.rb
|
225
225
|
- lib/uricp/strategy/common.rb
|
226
226
|
- lib/uricp/strategy/local_convert.rb
|
227
|
-
- lib/uricp/strategy/local_convert_common.rb
|
228
227
|
- lib/uricp/strategy/local_link.rb
|
229
228
|
- lib/uricp/strategy/piped_cache.rb
|
230
229
|
- lib/uricp/strategy/piped_cache_convert.rb
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module Uricp::Strategy
|
2
|
-
|
3
|
-
module LocalConvertCommon
|
4
|
-
|
5
|
-
include Uricp::Strategy::Common
|
6
|
-
|
7
|
-
def qemu_img_command(target)
|
8
|
-
"qemu-img convert #{conversion_options} #{from.path} #{target};"
|
9
|
-
end
|
10
|
-
|
11
|
-
def conversion_options
|
12
|
-
case options['target-format']
|
13
|
-
when :raw
|
14
|
-
'-O raw'
|
15
|
-
when :qcow2
|
16
|
-
"#{compress_option} -O qcow2 -o compat=0.10"
|
17
|
-
when :qcow3, :qcow2v3
|
18
|
-
"#{compress_option} -O qcow2 -o compat=1.1"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def compress_option
|
23
|
-
options['compress'] && '-c'
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|