vagrant-mutate 0.2.2 → 0.2.3
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/CHANGELOG.md +6 -0
- data/README.md +1 -1
- data/lib/vagrant-mutate/box/box.rb +14 -2
- data/lib/vagrant-mutate/box_loader.rb +9 -5
- data/lib/vagrant-mutate/converter/converter.rb +2 -1
- data/lib/vagrant-mutate/errors.rb +6 -2
- data/lib/vagrant-mutate/qemu.rb +8 -4
- data/lib/vagrant-mutate/version.rb +1 -1
- data/locales/en.yml +5 -2
- metadata +2 -2
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
# 0.2.3 (2014-01-20)
|
2
|
+
* Warn when qemu version cannot read vmdk3 files (#29)
|
3
|
+
* Fix errors in how box name and provider were parsed (#35)
|
4
|
+
* Load box from file based on existence not name (#36)
|
5
|
+
* Warn when image is not the expected type for the provider (#38)
|
6
|
+
|
1
7
|
# 0.2.2 (2014-01-05)
|
2
8
|
* Determine virtualbox disk filename from ovf (#30)
|
3
9
|
* Move Qemu checks to own class
|
data/README.md
CHANGED
@@ -21,7 +21,7 @@ Vagrant-mutate has been tested against the following versions. It may work with
|
|
21
21
|
|
22
22
|
### qemu-img
|
23
23
|
|
24
|
-
First, you must install [qemu-img](http://wiki.qemu.org/Main_Page).
|
24
|
+
First, you must install [qemu-img](http://wiki.qemu.org/Main_Page). Information on supported versions is listed at [QEMU Version Compatibility](https://github.com/sciurus/vagrant-mutate/wiki/QEMU-Version-Compatibility).
|
25
25
|
|
26
26
|
#### Debian and derivatives
|
27
27
|
|
@@ -12,13 +12,25 @@ module VagrantMutate
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def virtual_size
|
15
|
+
extract_from_qemu_info( /(\d+) bytes/ )
|
16
|
+
end
|
17
|
+
|
18
|
+
def verify_format
|
19
|
+
format_found = extract_from_qemu_info( /file format: (\w+)/ )
|
20
|
+
unless format_found == @image_format
|
21
|
+
@env.ui.warn "Expected input image format to be #{@image_format} but "\
|
22
|
+
"it is #{format_found}. Attempting conversion anyway."
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def extract_from_qemu_info(expression)
|
15
27
|
input_file = File.join( @dir, image_name )
|
16
28
|
info = `qemu-img info #{input_file}`
|
17
29
|
@logger.debug "qemu-img info output\n#{info}"
|
18
|
-
if info =~
|
30
|
+
if info =~ expression
|
19
31
|
return $1
|
20
32
|
else
|
21
|
-
raise Errors::
|
33
|
+
raise Errors::QemuInfoFailed
|
22
34
|
end
|
23
35
|
end
|
24
36
|
|
@@ -28,7 +28,7 @@ module VagrantMutate
|
|
28
28
|
def load(box_arg)
|
29
29
|
if box_arg =~ /:\/\//
|
30
30
|
box = load_from_url(box_arg)
|
31
|
-
elsif box_arg
|
31
|
+
elsif File.file?(box_arg)
|
32
32
|
box = load_from_file(box_arg)
|
33
33
|
else
|
34
34
|
box = load_from_boxes_path(box_arg)
|
@@ -173,12 +173,16 @@ module VagrantMutate
|
|
173
173
|
end
|
174
174
|
|
175
175
|
def parse_identifier(identifier)
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
176
|
+
split_id = identifier.split('/')
|
177
|
+
case split_id.length
|
178
|
+
when 2
|
179
|
+
@logger.info "Parsed provider name as #{split_id[0]} and box name as #{split_id[1]}"
|
180
|
+
return split_id[0], split_id[1]
|
181
|
+
when 1
|
180
182
|
@logger.info "Parsed provider name as not given and box name as #{identifier}"
|
181
183
|
return nil, identifier
|
184
|
+
else
|
185
|
+
raise Errors::ParseIdentifierFailed, :identifier => identifier
|
182
186
|
end
|
183
187
|
end
|
184
188
|
|
@@ -32,6 +32,7 @@ module VagrantMutate
|
|
32
32
|
@env.ui.info "Converting #{@input_box.name} from #{@input_box.provider_name} "\
|
33
33
|
"to #{@output_box.provider_name}."
|
34
34
|
|
35
|
+
@input_box.verify_format
|
35
36
|
write_metadata
|
36
37
|
copy_vagrantfile
|
37
38
|
write_specific_files
|
@@ -95,7 +96,7 @@ module VagrantMutate
|
|
95
96
|
# S for sparse file
|
96
97
|
qemu_options = '-p -S 16k'
|
97
98
|
|
98
|
-
command = "qemu-img convert #{qemu_options} -
|
99
|
+
command = "qemu-img convert #{qemu_options} -O #{output_format} #{input_file} #{output_file}"
|
99
100
|
@logger.info "Running #{command}"
|
100
101
|
unless system(command)
|
101
102
|
raise Errors::WriteDiskFailed, :error_message => "qemu-img exited with status #{$?.exitstatus}"
|
@@ -30,6 +30,10 @@ module VagrantMutate
|
|
30
30
|
error_key(:extract_box_failed)
|
31
31
|
end
|
32
32
|
|
33
|
+
class ParseIdentifierFailed < VagrantMutateError
|
34
|
+
error_key(:parse_identifier_failed)
|
35
|
+
end
|
36
|
+
|
33
37
|
class DetermineProviderFailed < VagrantMutateError
|
34
38
|
error_key(:determine_provider_failed)
|
35
39
|
end
|
@@ -54,8 +58,8 @@ module VagrantMutate
|
|
54
58
|
error_key(:parse_qemu_version_failed)
|
55
59
|
end
|
56
60
|
|
57
|
-
class
|
58
|
-
error_key(:
|
61
|
+
class QemuInfoFailed < VagrantMutateError
|
62
|
+
error_key(:qemu_info_failed)
|
59
63
|
end
|
60
64
|
|
61
65
|
class BoxAttributeError < VagrantMutateError
|
data/lib/vagrant-mutate/qemu.rb
CHANGED
@@ -21,12 +21,16 @@ module VagrantMutate
|
|
21
21
|
def self.verify_qemu_version(env)
|
22
22
|
usage = `qemu-img`
|
23
23
|
if usage =~ /(\d+\.\d+\.\d+)/
|
24
|
-
recommended_version = Gem::Version.new('1.2.0')
|
25
24
|
installed_version = Gem::Version.new($1)
|
26
|
-
|
25
|
+
# will need to change test once a version > 1.6 has a fix
|
26
|
+
if installed_version < Gem::Version.new('1.2.0') or
|
27
|
+
installed_version >= Gem::Version.new('1.6.0')
|
28
|
+
|
27
29
|
env.ui.warn "You have qemu #{installed_version} installed. "\
|
28
|
-
"This version
|
29
|
-
"If conversion fails,
|
30
|
+
"This version cannot read some virtualbox boxes. "\
|
31
|
+
"If conversion fails, see below for recommendations. "\
|
32
|
+
"https://github.com/sciurus/vagrant-mutate/wiki/QEMU-Version-Compatibility"
|
33
|
+
|
30
34
|
end
|
31
35
|
else
|
32
36
|
raise Errors::ParseQemuVersionFailed
|
data/locales/en.yml
CHANGED
@@ -14,6 +14,9 @@ en:
|
|
14
14
|
extract_box_failed: |-
|
15
15
|
Extracting box failed with error:
|
16
16
|
%{error_message}
|
17
|
+
parse_identifier_failed: |-
|
18
|
+
Expected name or provider/name but you gave %{identifier}.
|
19
|
+
If you meant to specify a box by name fix this. If you meant to specify a box by path make sure the file exists.
|
17
20
|
determine_provider_failed: |-
|
18
21
|
Determining provider for box failed with error:
|
19
22
|
%{error_message}
|
@@ -31,8 +34,8 @@ en:
|
|
31
34
|
%{error_message}
|
32
35
|
parse_qemu_version_failed: |-
|
33
36
|
Determining the version of qemu-img installed failed
|
34
|
-
|
35
|
-
|
37
|
+
qemu_info_failed: |-
|
38
|
+
Getting information about the disk image via qemu-info failed
|
36
39
|
box_attribute_error: |-
|
37
40
|
Error determining information about the input box:
|
38
41
|
%{error_message}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-mutate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-01-
|
12
|
+
date: 2014-01-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|