foreman_bootdisk 12.0.1 → 16.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/AUTHORS +26 -0
  3. data/CHANGES.md +9 -0
  4. data/README.md +19 -0
  5. data/app/controllers/foreman_bootdisk/api/v2/disks_controller.rb +11 -9
  6. data/app/controllers/foreman_bootdisk/api/v2/subnet_disks_controller.rb +37 -31
  7. data/app/controllers/foreman_bootdisk/disks_controller.rb +24 -19
  8. data/app/helpers/concerns/foreman_bootdisk/hosts_helper_ext.rb +86 -45
  9. data/app/lib/foreman_bootdisk/scope/bootdisk.rb +23 -0
  10. data/app/lib/foreman_bootdisk/scope/full_host_bootdisk.rb +15 -0
  11. data/app/models/concerns/foreman_bootdisk/compute_resources/vmware.rb +4 -2
  12. data/app/models/concerns/foreman_bootdisk/host_ext.rb +33 -22
  13. data/app/models/concerns/foreman_bootdisk/orchestration/compute.rb +14 -10
  14. data/app/models/setting/bootdisk.rb +21 -23
  15. data/app/services/foreman_bootdisk/iso_generator.rb +144 -104
  16. data/app/services/foreman_bootdisk/renderer.rb +40 -21
  17. data/app/views/foreman_bootdisk/generic_host.erb +21 -3
  18. data/app/views/foreman_bootdisk/generic_static_host.erb +34 -0
  19. data/app/views/foreman_bootdisk/host.erb +29 -14
  20. data/config/routes.rb +15 -13
  21. data/config/routes/mount_engine.rb +3 -1
  22. data/db/migrate/20130914211030_create_host_bootdisk_template.rb +4 -4
  23. data/db/migrate/20130915104500_edit_host_bootdisk_template_multinic.rb +4 -4
  24. data/db/migrate/20130915133321_create_kickstart_bootdisk_template.rb +4 -4
  25. data/db/migrate/20130915201457_create_generic_host_bootdisk_template.rb +4 -4
  26. data/db/migrate/20131021095100_edit_host_bootdisk_template_dns_secondary.rb +4 -4
  27. data/db/migrate/20140522185700_change_templatekind_to_bootdisk.rb +16 -14
  28. data/db/migrate/20171009225200_remove_duplicate_bootdisk_templates.rb +4 -2
  29. data/db/seeds.d/50-bootdisk_templates.rb +21 -36
  30. data/lib/foreman_bootdisk.rb +2 -0
  31. data/lib/foreman_bootdisk/engine.rb +25 -37
  32. data/lib/foreman_bootdisk/version.rb +3 -1
  33. data/lib/tasks/bootdisk.rake +34 -17
  34. data/locale/ca/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  35. data/locale/ca/foreman_bootdisk.po +31 -15
  36. data/locale/de/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  37. data/locale/de/foreman_bootdisk.po +40 -22
  38. data/locale/en/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  39. data/locale/en/foreman_bootdisk.po +24 -9
  40. data/locale/en_GB/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  41. data/locale/en_GB/foreman_bootdisk.po +31 -16
  42. data/locale/es/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  43. data/locale/es/foreman_bootdisk.po +46 -31
  44. data/locale/foreman_bootdisk.pot +82 -54
  45. data/locale/fr/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  46. data/locale/fr/foreman_bootdisk.po +30 -15
  47. data/locale/gemspec.rb +3 -1
  48. data/locale/it/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  49. data/locale/it/foreman_bootdisk.po +27 -12
  50. data/locale/ja/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  51. data/locale/ja/foreman_bootdisk.po +30 -15
  52. data/locale/ko/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  53. data/locale/ko/foreman_bootdisk.po +27 -12
  54. data/locale/pt_BR/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  55. data/locale/pt_BR/foreman_bootdisk.po +43 -27
  56. data/locale/ru/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  57. data/locale/ru/foreman_bootdisk.po +28 -13
  58. data/locale/sv_SE/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  59. data/locale/sv_SE/foreman_bootdisk.po +26 -11
  60. data/locale/zh_CN/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  61. data/locale/zh_CN/foreman_bootdisk.po +46 -31
  62. data/locale/zh_TW/LC_MESSAGES/foreman_bootdisk.mo +0 -0
  63. data/locale/zh_TW/foreman_bootdisk.po +27 -12
  64. data/release-gem +84 -0
  65. data/test/functional/foreman_bootdisk/api/v2/disks_controller_test.rb +35 -33
  66. data/test/functional/foreman_bootdisk/api/v2/subnet_disks_controller_test.rb +9 -7
  67. data/test/functional/foreman_bootdisk/disks_controller_test.rb +27 -25
  68. data/test/models/host/managed_test.rb +26 -0
  69. data/test/test_plugin_helper.rb +11 -7
  70. data/test/unit/access_permissions_test.rb +2 -0
  71. data/test/unit/concerns/compute_resources/vmware_test.rb +67 -63
  72. data/test/unit/concerns/host_test.rb +54 -46
  73. data/test/unit/concerns/orchestration/compute_test.rb +41 -39
  74. data/test/unit/foreman_bootdisk/renderer_test.rb +36 -0
  75. data/test/unit/foreman_bootdisk/scope/bootdisk_test.rb +31 -0
  76. data/test/unit/foreman_bootdisk/scope/full_host_bootdisk_test.rb +30 -0
  77. data/test/unit/iso_generator_test.rb +67 -40
  78. metadata +69 -5
  79. data/app/services/foreman_bootdisk/renderer_methods.rb +0 -27
@@ -1,65 +1,73 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_plugin_helper'
2
4
 
3
- class ForemanBootdisk::HostTest < ActiveSupport::TestCase
4
- test "#bootdisk_build? must be true when provision_method is bootdisk" do
5
- host = FactoryBot.build(:host, :managed)
6
- host.provision_method = 'bootdisk'
7
- assert host.bootdisk_build?
8
- refute host.image_build?
9
- refute host.pxe_build?
10
- end
5
+ module ForemanBootdisk
6
+ class HostTest < ActiveSupport::TestCase
7
+ test '#bootdisk_build? must be true when provision_method is bootdisk' do
8
+ host = FactoryBot.build(:host, :managed)
9
+ host.provision_method = 'bootdisk'
10
+ assert host.bootdisk_build?
11
+ assert_not host.image_build?
12
+ assert_not host.pxe_build?
13
+ end
11
14
 
12
- test "#can_be_built? must be true when provision_method is bootdisk" do
13
- host = FactoryBot.build(:host, :managed,
14
- :provision_method => "bootdisk"
15
- )
16
- assert host.can_be_built?
17
- end
15
+ test '#validate_media? must be true when provision_method is bootdisk' do
16
+ host = FactoryBot.build(:host, :managed,
17
+ provision_method: 'bootdisk',
18
+ build: true)
19
+ assert host.validate_media?
20
+ end
18
21
 
22
+ test '#can_be_built? must be true when provision_method is bootdisk' do
23
+ host = FactoryBot.build(:host, :managed,
24
+ provision_method: 'bootdisk')
25
+ assert host.can_be_built?
26
+ end
19
27
 
20
- test "host should have bootdisk" do
21
- if unattended?
22
- h = FactoryBot.build(:host, :managed,
23
- :provision_method => "bootdisk"
24
- )
25
- assert h.bootdisk?
28
+ test 'host should have bootdisk' do
29
+ if unattended?
30
+ h = FactoryBot.build(:host, :managed,
31
+ provision_method: 'bootdisk')
32
+ assert h.bootdisk?
33
+ end
26
34
  end
27
- end
28
35
 
29
- test "host should not have bootdisk" do
30
- if unattended?
31
- h = FactoryBot.create(:host)
32
- assert_equal false, h.bootdisk?
36
+ test 'host should not have bootdisk' do
37
+ if unattended?
38
+ h = FactoryBot.create(:host)
39
+ assert_equal false, h.bootdisk?
40
+ end
33
41
  end
34
- end
35
42
 
36
- context "#bootdisk_downloadable?" do
37
- test "should be true for 64 bit architecture" do
38
- architecture = Architecture.where(:name => 'x86_64').first
39
- host = FactoryBot.build(:host, :managed, :architecture => architecture)
43
+ context '#bootdisk_downloadable?' do
44
+ test 'should be true for 64 bit architecture' do
45
+ architecture = Architecture.where(name: 'x86_64').first
46
+ host = FactoryBot.build(:host, :managed, architecture: architecture)
40
47
 
41
- assert host.bootdisk_downloadable?
42
- end
48
+ assert host.bootdisk_downloadable?
49
+ end
43
50
 
44
- test "should be true for 32 bit architecture" do
45
- architecture = FactoryBot.create(:architecture, :name => 'i386')
46
- host = FactoryBot.build(:host, :managed, :architecture => architecture)
51
+ test 'should be true for 32 bit architecture' do
52
+ architecture = FactoryBot.create(:architecture, name: 'i386')
53
+ host = FactoryBot.build(:host, :managed, architecture: architecture)
47
54
 
48
- assert host.bootdisk_downloadable?
49
- end
55
+ assert host.bootdisk_downloadable?
56
+ end
50
57
 
51
- test "should be false for non-intel architecture" do
52
- architecture = Architecture.where(:name => 's390').first
53
- host = FactoryBot.build(:host, :managed, :architecture => architecture)
58
+ test 'should be false for non-intel architecture' do
59
+ architecture = Architecture.where(name: 's390').first
60
+ host = FactoryBot.build(:host, :managed, architecture: architecture)
54
61
 
55
- assert_not host.bootdisk_downloadable?
56
- end
62
+ assert_not host.bootdisk_downloadable?
63
+ end
57
64
 
58
- test 'should be true if architecture is absent' do
59
- host = FactoryBot.build(:host, :managed, :architecture => nil)
65
+ test 'should be true if architecture is absent' do
66
+ host = FactoryBot.build(:host, :managed, architecture: nil)
60
67
 
61
- assert_nil host.architecture
62
- assert host.bootdisk_downloadable?
68
+ assert_nil host.architecture
69
+ assert host.bootdisk_downloadable?
70
+ end
63
71
  end
64
72
  end
65
73
  end
@@ -1,48 +1,50 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_plugin_helper'
2
4
 
3
- class ForemanBootdisk::OrchestrationComputeTest < ActiveSupport::TestCase
4
- setup do
5
- disable_orchestration
6
- @cr = FactoryBot.build(:vmware_cr)
7
- @host = FactoryBot.build(:host, :managed,
8
- :compute_resource => @cr,
9
- :provision_method => "bootdisk",
10
- )
11
- end
5
+ module ForemanBootdisk
6
+ class OrchestrationComputeTest < ActiveSupport::TestCase
7
+ setup do
8
+ disable_orchestration
9
+ @cr = FactoryBot.build(:vmware_cr)
10
+ @host = FactoryBot.build(:host, :managed,
11
+ compute_resource: @cr,
12
+ provision_method: 'bootdisk')
13
+ end
12
14
 
13
- test "provisioning a host with provision method bootdisk should upload iso" do
14
- @cr.expects(:iso_upload)
15
- @host.send(:setIsoImage)
16
- end
15
+ test 'provisioning a host with provision method bootdisk should upload iso' do
16
+ @cr.expects(:iso_upload)
17
+ @host.send(:setIsoImage)
18
+ end
17
19
 
18
- test "provisioning a host with provision method bootdisk should attach iso" do
19
- @cr.expects(:iso_attach)
20
- @host.send(:setAttachIsoImage)
21
- end
20
+ test 'provisioning a host with provision method bootdisk should attach iso' do
21
+ @cr.expects(:iso_attach)
22
+ @host.send(:setAttachIsoImage)
23
+ end
22
24
 
23
- test "provisioning a host with provision method bootdisk should queue bootdisk tasks" do
24
- @host.stubs(:compute?).returns(true)
25
- @host.send(:queue_bootdisk_compute)
26
- tasks = @host.queue.all.map { |t| t.name }
27
- assert_includes tasks, "Generating ISO image for #{@host.name}"
28
- assert_includes tasks, "Upload ISO image to datastore for #{@host.name}"
29
- assert_includes tasks, "Attach ISO image to CDROM drive for #{@host.name}"
30
- end
25
+ test 'provisioning a host with provision method bootdisk should queue bootdisk tasks' do
26
+ @host.stubs(:compute?).returns(true)
27
+ @host.send(:queue_bootdisk_compute)
28
+ tasks = @host.queue.all.map(&:name)
29
+ assert_includes tasks, "Generating ISO image for #{@host.name}"
30
+ assert_includes tasks, "Upload ISO image to datastore for #{@host.name}"
31
+ assert_includes tasks, "Attach ISO image to CDROM drive for #{@host.name}"
32
+ end
31
33
 
32
- test "should rebuild bootdisk" do
33
- @host.expects(:bootdisk_generate_iso_image).returns(true)
34
- @host.expects(:bootdisk_upload_iso).returns(true)
35
- @host.expects(:bootdisk_attach_iso).returns(true)
36
- assert @host.rebuild_with_bootdisk
37
- end
34
+ test 'should rebuild bootdisk' do
35
+ @host.expects(:bootdisk_generate_iso_image).returns(true)
36
+ @host.expects(:bootdisk_upload_iso).returns(true)
37
+ @host.expects(:bootdisk_attach_iso).returns(true)
38
+ assert @host.rebuild_with_bootdisk
39
+ end
38
40
 
39
- test "should skip rebuild bootdisk" do
40
- host = FactoryBot.build(:host,
41
- :compute_resource => @cr
42
- )
43
- host.expects(:bootdisk_generate_iso_image).never
44
- host.expects(:bootdisk_upload_iso).never
45
- host.expects(:bootdisk_attach_iso).never
46
- assert host.rebuild_with_bootdisk
41
+ test 'should skip rebuild bootdisk' do
42
+ host = FactoryBot.build(:host,
43
+ compute_resource: @cr)
44
+ host.expects(:bootdisk_generate_iso_image).never
45
+ host.expects(:bootdisk_upload_iso).never
46
+ host.expects(:bootdisk_attach_iso).never
47
+ assert host.rebuild_with_bootdisk
48
+ end
47
49
  end
48
50
  end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_plugin_helper'
4
+
5
+ module ForemanBootdisk
6
+ class RendererTest < ActiveSupport::TestCase
7
+ include ForemanBootdiskTestHelper
8
+
9
+ setup do
10
+ User.current = users(:admin)
11
+ setup_bootdisk
12
+ end
13
+
14
+ let(:renderer) { ForemanBootdisk::Renderer.new }
15
+
16
+ describe 'a generic template' do
17
+ test 'can be rendered' do
18
+ rendered_template = renderer.generic_template_render
19
+ assert_includes rendered_template, 'ifstat'
20
+ end
21
+
22
+ test 'does not include a host token' do
23
+ rendered_template = renderer.generic_template_render
24
+ assert_includes rendered_template, 'http://foreman.some.host.fqdn/unattended/iPXE?mac=${net0/mac}'
25
+ assert_not_includes rendered_template, 'token'
26
+ end
27
+ end
28
+
29
+ context 'with a subnet' do
30
+ let(:subnet) { FactoryBot.create(:subnet_ipv4) }
31
+ test 'renders a subnet template' do
32
+ assert_includes renderer.generic_template_render(subnet), 'ifstat'
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_plugin_helper'
4
+
5
+ module ForemanBootdisk
6
+ module Scope
7
+ class BootdiskTest < ActiveSupport::TestCase
8
+ let(:host) { FactoryBot.build(:host, :managed) }
9
+ let(:source) { Foreman::Renderer::Source::String.new(content: 'Test') }
10
+ let(:scope) { ForemanBootdisk::Scope::Bootdisk.new(host: host, source: source) }
11
+
12
+ describe '#bootdisk_chain_url' do
13
+ test 'should render bootdisk chain url' do
14
+ assert_equal "http://foreman.some.host.fqdn/unattended/iPXE?mac=#{URI.encode_www_form_component(host.mac)}", scope.bootdisk_chain_url
15
+ end
16
+
17
+ test 'should render bootdisk chain url with custom mac' do
18
+ assert_equal 'http://foreman.some.host.fqdn/unattended/iPXE?mac=00%3A11%3A22%3A33%3A44%3A55', scope.bootdisk_chain_url('00:11:22:33:44:55')
19
+ end
20
+ end
21
+
22
+ describe '#bootdisk_raise' do
23
+ test 'should raise a Foreman::Exception' do
24
+ assert_raise ::Foreman::Exception do
25
+ scope.bootdisk_raise('Some error.')
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_plugin_helper'
4
+
5
+ module ForemanBootdisk
6
+ module Scope
7
+ class BootdiskTest < ActiveSupport::TestCase
8
+ let(:operatingsystem) { FactoryBot.create(:ubuntu14_10, :with_media, :with_archs) }
9
+ let(:host) { FactoryBot.build(:host, :managed, operatingsystem: operatingsystem) }
10
+ let(:source) { Foreman::Renderer::Source::String.new(content: 'Test') }
11
+ let(:scope) { ForemanBootdisk::Scope::FullHostBootdisk.new(host: host, source: source) }
12
+
13
+ setup do
14
+ MediumProviders::Default.any_instance.stubs(:unique_id).returns('MyMedium01-ZYHBD6OPET')
15
+ end
16
+
17
+ describe '@kernel' do
18
+ test 'should match filename on bootdisk' do
19
+ assert_equal 'BOOT/MYMEDIUM01_ZYHBD6OPET_LINUX', scope.instance_variable_get('@kernel')
20
+ end
21
+ end
22
+
23
+ describe '@initrd' do
24
+ test 'should match filename on bootdisk' do
25
+ assert_equal 'BOOT/EDIUM01_ZYHBD6OPET_INITRD_GZ', scope.instance_variable_get('@initrd')
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,48 +1,75 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_plugin_helper'
2
4
 
3
- class ForemanBootdisk::IsoGeneratorTest < ActiveSupport::TestCase
4
- include ForemanBootdiskTestHelper
5
- setup :setup_bootdisk
6
- setup :setup_org_loc
7
- setup :setup_subnet
8
- setup :setup_host
5
+ module ForemanBootdisk
6
+ class IsoGeneratorTest < ActiveSupport::TestCase
7
+ include ForemanBootdiskTestHelper
8
+ setup :setup_bootdisk
9
9
 
10
- setup do
11
- @host.build = true
12
- end
10
+ describe '#generate_full_host' do
11
+ let(:medium) { FactoryBot.create(:medium, name: 'Red Hat Enterprise Linux Atomic Mirror') }
12
+ let(:operatingsystem) { FactoryBot.create(:ubuntu14_10, :with_archs, :with_ptables, media: [medium]) }
13
+ let(:host) { FactoryBot.create(:host, :managed, operatingsystem: operatingsystem, build: true) }
14
+ let(:template) { FactoryBot.create(:provisioning_template, template: 'Fake kernel line <%= @kernel %> - <%= @initrd %>') }
13
15
 
14
- test "generate_full_host creates with ISO-compatible file names" do
15
- @host.expects(:generate_pxe_template).with(:PXELinux).returns("Fake kernel line boot/Debian-8.1-x86_64-vmlinuz")
16
- boot_files = [
17
- {:"boot/Debian-8.1-x86_64"=>"/tmp/pxeboot/vmlinuz"},
18
- {:"boot/Debian-8.1-x86_64"=>"/tmp/pxeboot/initrd.img"}
19
- ]
20
- @host.operatingsystem.expects(:pxe_files).returns(boot_files)
21
- ForemanBootdisk::ISOGenerator.expects(:generate).with({
22
- :isolinux => 'Fake kernel line BOOT/DEBIAN_8_1_X86_64_VMLINUZ',
23
- :files => [[['BOOT/DEBIAN_8_1_X86_64_VMLINUZ', '/tmp/pxeboot/vmlinuz']],
24
- [['BOOT/DEBIAN_8_1_X86_64_INITRD_IMG', '/tmp/pxeboot/initrd.img']]] }, anything)
25
- ForemanBootdisk::ISOGenerator.generate_full_host(@host)
26
- end
16
+ setup do
17
+ host.stubs(:provisioning_template).with(kind: :PXELinux).returns(template)
18
+ end
27
19
 
28
- test "generate_full_host creates with ISO-compatible long file names" do
29
- @host.expects(:generate_pxe_template).with(:PXELinux).returns("Fake kernel line boot/RedHatEnterpriseLinuxAtomic-7.3-x86_64-vmlinuz")
30
- boot_files = [
31
- {:"boot/RedHatEnterpriseLinuxAtomic-7.3-x86_64"=>"/tmp/pxeboot/vmlinuz"},
32
- {:"boot/RedHatEnterpriseLinuxAtomic-7.3-x86_64"=>"/tmp/pxeboot/initrd.img"}
33
- ]
34
- @host.operatingsystem.expects(:pxe_files).returns(boot_files)
35
- ForemanBootdisk::ISOGenerator.expects(:generate).with({
36
- :isolinux => 'Fake kernel line BOOT/NUXATOMIC_7_3_X86_64_VMLINUZ',
37
- :files => [[['BOOT/NUXATOMIC_7_3_X86_64_VMLINUZ', '/tmp/pxeboot/vmlinuz']],
38
- [['BOOT/ATOMIC_7_3_X86_64_INITRD_IMG', '/tmp/pxeboot/initrd.img']]]}, anything)
39
- ForemanBootdisk::ISOGenerator.generate_full_host(@host)
40
- end
20
+ test 'fetch handles redirect' do
21
+ Dir.mktmpdir do |dir|
22
+ url = 'http://example.com/request'
23
+ redirection = 'http://example.com/redirect'
24
+ stub_request(:get, url).to_return(status: 301, headers: { 'Location' => redirection })
25
+ stub_request(:get, redirection)
26
+ ForemanBootdisk::ISOGenerator.fetch(File.join(dir, 'test'), url)
27
+ end
28
+ end
29
+
30
+ test 'generate_full_host creates with ISO-compatible file names' do
31
+ urls = host.operatingsystem.boot_file_sources(host.medium_provider)
32
+
33
+ kernel = ForemanBootdisk::ISOGenerator.iso9660_filename(
34
+ host.operatingsystem.kernel(host.medium_provider)
35
+ )
36
+ kernel_url = urls[:kernel]
37
+
38
+ initrd = ForemanBootdisk::ISOGenerator.iso9660_filename(
39
+ host.operatingsystem.initrd(host.medium_provider)
40
+ )
41
+ initrd_url = urls[:initrd]
42
+
43
+ ForemanBootdisk::ISOGenerator.expects(:generate).with({
44
+ isolinux: "Fake kernel line #{kernel} - #{initrd}",
45
+ files: { kernel => kernel_url,
46
+ initrd => initrd_url }
47
+ }, anything)
48
+
49
+ ForemanBootdisk::ISOGenerator.generate_full_host(host)
50
+ end
51
+ end
52
+
53
+ describe '#generate' do
54
+ test 'generates an iso image' do
55
+ ForemanBootdisk::ISOGenerator.expects(:system).with(
56
+ regexp_matches(/genisoimage -o .*output.iso -iso-level 2 -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .*build/)
57
+ ).returns(true)
58
+ ForemanBootdisk::ISOGenerator.expects(:system).with('isohybrid', anything).returns(true)
59
+ ForemanBootdisk::ISOGenerator.generate do |iso|
60
+ assert_not_nil iso
61
+ end
62
+ end
63
+ end
64
+
65
+ describe '#iso9660_filename' do
66
+ test 'converts path to iso9660' do
67
+ assert_equal 'BOOT/SOME_FILE_N_A_M_E123_', ForemanBootdisk::ISOGenerator.iso9660_filename('boot/some-File-n_a_m_e123Ä')
68
+ end
41
69
 
42
- test "full host image generation generates via PXELinux type" do
43
- @host.expects(:generate_pxe_template).with(:PXELinux).returns("Template")
44
- @host.operatingsystem.expects(:pxe_files).returns([])
45
- ForemanBootdisk::ISOGenerator.expects(:generate).with({:isolinux => "Template", :files => []}, anything)
46
- ForemanBootdisk::ISOGenerator.generate_full_host(@host)
70
+ test 'shortens long filenames' do
71
+ assert_equal 'BOOT/RPRISELINUXATOMIC_7_3_X86_64', ForemanBootdisk::ISOGenerator.iso9660_filename('boot/RedHatEnterpriseLinuxAtomic-7.3-x86_64')
72
+ end
73
+ end
47
74
  end
48
75
  end
metadata CHANGED
@@ -1,15 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_bootdisk
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.0.1
4
+ version: 16.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominic Cleal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-15 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2019-11-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rubocop
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubocop-performance
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: webmock
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
13
69
  description: Plugin for Foreman that creates iPXE-based boot disks to provision hosts
14
70
  without the need for PXE infrastructure.
15
71
  email: dcleal@redhat.com
@@ -21,6 +77,7 @@ extra_rdoc_files:
21
77
  - README.md
22
78
  files:
23
79
  - ".tx/config"
80
+ - AUTHORS
24
81
  - CHANGES.md
25
82
  - LICENSE
26
83
  - README.md
@@ -29,15 +86,17 @@ files:
29
86
  - app/controllers/foreman_bootdisk/api/v2/subnet_disks_controller.rb
30
87
  - app/controllers/foreman_bootdisk/disks_controller.rb
31
88
  - app/helpers/concerns/foreman_bootdisk/hosts_helper_ext.rb
89
+ - app/lib/foreman_bootdisk/scope/bootdisk.rb
90
+ - app/lib/foreman_bootdisk/scope/full_host_bootdisk.rb
32
91
  - app/models/concerns/foreman_bootdisk/compute_resources/vmware.rb
33
92
  - app/models/concerns/foreman_bootdisk/host_ext.rb
34
93
  - app/models/concerns/foreman_bootdisk/orchestration/compute.rb
35
94
  - app/models/setting/bootdisk.rb
36
95
  - app/services/foreman_bootdisk/iso_generator.rb
37
96
  - app/services/foreman_bootdisk/renderer.rb
38
- - app/services/foreman_bootdisk/renderer_methods.rb
39
97
  - app/views/foreman_bootdisk/disks/help.html.erb
40
98
  - app/views/foreman_bootdisk/generic_host.erb
99
+ - app/views/foreman_bootdisk/generic_static_host.erb
41
100
  - app/views/foreman_bootdisk/host.erb
42
101
  - app/views/hosts/provision_method/bootdisk/_form.html.erb
43
102
  - config/routes.rb
@@ -86,14 +145,19 @@ files:
86
145
  - locale/zh_CN/foreman_bootdisk.po
87
146
  - locale/zh_TW/LC_MESSAGES/foreman_bootdisk.mo
88
147
  - locale/zh_TW/foreman_bootdisk.po
148
+ - release-gem
89
149
  - test/functional/foreman_bootdisk/api/v2/disks_controller_test.rb
90
150
  - test/functional/foreman_bootdisk/api/v2/subnet_disks_controller_test.rb
91
151
  - test/functional/foreman_bootdisk/disks_controller_test.rb
152
+ - test/models/host/managed_test.rb
92
153
  - test/test_plugin_helper.rb
93
154
  - test/unit/access_permissions_test.rb
94
155
  - test/unit/concerns/compute_resources/vmware_test.rb
95
156
  - test/unit/concerns/host_test.rb
96
157
  - test/unit/concerns/orchestration/compute_test.rb
158
+ - test/unit/foreman_bootdisk/renderer_test.rb
159
+ - test/unit/foreman_bootdisk/scope/bootdisk_test.rb
160
+ - test/unit/foreman_bootdisk/scope/full_host_bootdisk_test.rb
97
161
  - test/unit/iso_generator_test.rb
98
162
  homepage: http://github.com/theforeman/foreman_bootdisk
99
163
  licenses:
@@ -115,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
179
  version: '0'
116
180
  requirements: []
117
181
  rubyforge_project:
118
- rubygems_version: 2.7.6
182
+ rubygems_version: 2.7.6.2
119
183
  signing_key:
120
184
  specification_version: 4
121
185
  summary: Create boot disks to provision hosts with Foreman