diff --git a/lib/fog/libvirt/models/compute/server.rb b/lib/fog/libvirt/models/compute/server.rb index 805898f..2059669 100644 --- a/lib/fog/libvirt/models/compute/server.rb +++ b/lib/fog/libvirt/models/compute/server.rb @@ -254,12 +254,14 @@ def generate_config_iso(user_data, &blk) end def generate_config_iso_in_dir(dir_path, user_data, &blk) - FileUtils.touch(File.join(dir_path, "meta-data")) - File.open(File.join(dir_path, 'user-data'), 'w') { |f| f.write user_data } + meta_data_path = File.join(dir_path, 'meta-data') + FileUtils.touch(meta_data_path) + user_data_path = File.join(dir_path, 'user-data') + File.write(user_data_path, user_data) isofile = Tempfile.new(['init', '.iso']).path - unless system("genisoimage -output #{isofile} -volid cidata -joliet -rock #{File.join(dir_path, 'user-data')} #{File.join(dir_path, 'meta-data')}") - raise Fog::Errors::Error.new("Couldn't generate cloud-init iso disk with genisoimage.") + unless system('xorrisofs', '-output', isofile, '-volid', 'cidata', '-joliet', '-rock', user_data_path, meta_data_path) + raise Fog::Errors::Error.new("Couldn't generate cloud-init iso disk with xorrisofs.") end blk.call(isofile) end diff --git a/minitests/server/user_data_iso_test.rb b/minitests/server/user_data_iso_test.rb index 936ba00..553be30 100644 --- a/minitests/server/user_data_iso_test.rb +++ b/minitests/server/user_data_iso_test.rb @@ -26,7 +26,7 @@ def test_contains_user_data_file def test_iso_is_generated in_a_temp_dir do |d| - @server.expects(:system).with(regexp_matches(/^genisoimage/)).returns(true) + @server.expects(:system).with { |command, *_args| command == 'xorrisofs' }.returns(true) @server.generate_config_iso_in_dir(d, @test_data) {|iso| } end end