foreman_bootdisk 19.0.6 → 21.0.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e45f52942dcc02997951e5994c28cf2225e2a7843b4c7f7df5105ea6298ad8b
4
- data.tar.gz: a6cdb77d4f5bf6ff0e4cbb425a054ea9dd0f4cb21cb2e44b68919b5886c700c9
3
+ metadata.gz: 66231c8d3a35aa4ebbbe3ef624a629c309d74ea4d95a39a009b1b07b60f9ce3f
4
+ data.tar.gz: 350ccaf1150dd3bfb2e6db920706f6f077783619b2a455f21b9f644a38bda4ca
5
5
  SHA512:
6
- metadata.gz: fff8a878907faca8d28fb33026879db8d94be2c2fb8655dedc84447cc0210a053e29115bbbe95da8126b62256028e07c11aa5f44b821eb4f2091304b125b768a
7
- data.tar.gz: 5cf6cdd0fff635f0c88500bd5489cc5402de8ef899637dfd9915da42780ecb8690209b735663df074aa0826edc31c77238ea54268e67c106e4d6b16b0764c943
6
+ metadata.gz: '082d9c32af3239beec631cccaf7ff418ce42b74dee910be2fa4ae28cb44fc94193a7d2c6ee3365611823e115f20ac4a311aa196eee3cf98beb4066c116fb2406'
7
+ data.tar.gz: 8fb0981f8d0cd18d4b40aa7592f15d5f3be3f9acf7c71962491160e4d92527f747ccbb4dbb190c1c4d3b2a70142a1e4e857bae5b47eec321916af644dbc11f7a
@@ -9,10 +9,6 @@ module ForemanBootdisk
9
9
  include ::Api::Version2
10
10
  include AllowedActions
11
11
 
12
- resource_description do
13
- api_base_url '/bootdisk/api'
14
- end
15
-
16
12
  before_action :bootdisk_type_allowed?, only: :generic
17
13
  before_action :find_resource, only: :host
18
14
  skip_after_action :log_response_body
@@ -9,10 +9,6 @@ module ForemanBootdisk
9
9
  include ::Api::Version2
10
10
  include AllowedActions
11
11
 
12
- resource_description do
13
- api_base_url '/bootdisk/api'
14
- end
15
-
16
12
  rescue_from ActiveRecord::RecordNotFound, :with => :subnet_not_found
17
13
  before_action :bootdisk_type_allowed?, only: :subnet
18
14
  before_action :find_resource, only: :subnet
@@ -121,16 +121,18 @@ module ForemanBootdisk
121
121
  disable_full_host = action == 'full_host' && !host.build?
122
122
  actions << {
123
123
  title: title,
124
- link: "/bootdisk/disks/#{action}s/#{host.id}",
124
+ link: "/disks/#{action}s/#{host.id}",
125
125
  disabled: disable_full_host ? true : false,
126
- description: disable_full_host ? _('Host is not in build mode') : nil
126
+ description: disable_full_host ? _('Host is not in build mode') : nil,
127
+ icon: action,
127
128
  }
128
129
  end
129
130
  return allowed unless User.current.allowed_to?({controller: 'foreman_bootdisk/disks', action: 'help'})
130
131
 
131
132
  allowed.push({
132
133
  title: _('Boot disk help'),
133
- link: '/bootdisk/disks/help'
134
+ link: '/disks/help',
135
+ icon: 'help'
134
136
  })
135
137
  end
136
138
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Foreman::Application.routes.draw do
4
- mount ForemanBootdisk::Engine, at: '/bootdisk'
4
+ mount ForemanBootdisk::Engine, at: '/'
5
5
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class FixBootdiskSettingsCategoryToDsl < ActiveRecord::Migration[6.0]
4
+ def up
5
+ Setting.where(category: 'Setting::Bootdisk').update_all(category: 'Setting')
6
+ end
7
+ end
@@ -6,6 +6,7 @@ require 'gettext_i18n_rails'
6
6
 
7
7
  module ForemanBootdisk
8
8
  class Engine < ::Rails::Engine
9
+ engine_name 'foreman_bootdisk'
9
10
  isolate_namespace ForemanBootdisk
10
11
 
11
12
  config.autoload_paths += Dir["#{config.root}/app/controllers/concerns"]
@@ -29,7 +30,7 @@ module ForemanBootdisk
29
30
 
30
31
  initializer 'foreman_bootdisk.register_plugin', before: :finisher_hook do |_app|
31
32
  Foreman::Plugin.register :foreman_bootdisk do
32
- requires_foreman '>= 3.3'
33
+ requires_foreman '>= 3.4'
33
34
  # Add Global files for extending foreman-core components and routes
34
35
  register_global_js_file 'global'
35
36
 
@@ -48,7 +49,6 @@ module ForemanBootdisk
48
49
  "#{ForemanBootdisk::Engine.root}/app/lib/foreman_bootdisk/scope/*.rb"
49
50
  ]
50
51
  provision_method 'bootdisk', N_('Boot disk based')
51
- template_labels 'Bootdisk' => N_('Boot disk embedded template')
52
52
  allowed_template_helpers :bootdisk_chain_url, :bootdisk_raise
53
53
 
54
54
  extend_page "subnets/index" do |cx|
@@ -139,12 +139,16 @@ module ForemanBootdisk
139
139
  Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
140
140
  end
141
141
 
142
+ # Temporary workaround fix for helpers
143
+ initializer 'foreman_bootdisk.rails_loading_workaround' do
144
+ HostsHelper.prepend ForemanBootdisk::HostsHelperExt
145
+ SubnetsHelper.prepend ForemanBootdisk::SubnetsHelperExt
146
+ end
147
+
142
148
  config.to_prepare do
143
149
  begin
144
150
  Host::Managed.prepend ForemanBootdisk::HostExt
145
151
  Host::Managed.include ForemanBootdisk::Orchestration::Compute
146
- HostsHelper.prepend ForemanBootdisk::HostsHelperExt
147
- SubnetsHelper.prepend ForemanBootdisk::SubnetsHelperExt
148
152
  Foreman::Model::Vmware.prepend ForemanBootdisk::ComputeResources::Vmware if Foreman::Model::Vmware.available?
149
153
  rescue StandardError => e
150
154
  Rails.logger.warn "#{ForemanBootdisk::ENGINE_NAME}: skipping engine hook (#{e})"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ForemanBootdisk
4
- VERSION = '19.0.6'
4
+ VERSION = '21.0.1'
5
5
  end
data/package.json CHANGED
@@ -26,12 +26,11 @@
26
26
  "devDependencies": {
27
27
  "@babel/core": "^7.7.0",
28
28
  "@sheerun/mutationobserver-shim": "^0.3.3",
29
- "@theforeman/builder": "^8.15.0",
30
- "@theforeman/eslint-plugin-foreman": "8.15.0",
31
- "@theforeman/find-foreman": "^8.15.0",
32
- "@theforeman/stories": "^8.15.0",
33
- "@theforeman/test": "^8.15.0",
34
- "@theforeman/vendor-dev": "^8.15.0",
29
+ "@theforeman/builder": ">= 8.15.0",
30
+ "@theforeman/eslint-plugin-foreman": ">= 8.15.0",
31
+ "@theforeman/find-foreman": ">= 8.15.0",
32
+ "@theforeman/stories": ">= 8.15.0",
33
+ "@theforeman/test": ">= 8.15.0",
35
34
  "babel-eslint": "^10.0.3",
36
35
  "eslint": "^6.7.2",
37
36
  "prettier": "^1.19.1",
@@ -2,6 +2,12 @@ import React, { useEffect } from 'react';
2
2
  import { useSelector, useDispatch } from 'react-redux';
3
3
 
4
4
  import { DropdownItem, DropdownGroup } from '@patternfly/react-core';
5
+ import {
6
+ BanIcon,
7
+ BuildIcon,
8
+ BuilderImageIcon,
9
+ OutlinedQuestionCircleIcon,
10
+ } from '@patternfly/react-icons';
5
11
 
6
12
  import { get } from 'foremanReact/redux/API';
7
13
  import { foremanUrl } from 'foremanReact/common/helpers';
@@ -23,11 +29,24 @@ const HostBootdiskButtons = () => {
23
29
  const isLoading = useSelector(selectIsLoading);
24
30
  const options = useSelector(selectBootdiskOptions);
25
31
 
32
+ const iconComponent = icon => {
33
+ switch (icon) {
34
+ case 'host':
35
+ return <BuildIcon />;
36
+ case 'full_host':
37
+ return <BuilderImageIcon />;
38
+ case 'help':
39
+ return <OutlinedQuestionCircleIcon />;
40
+ default:
41
+ return null;
42
+ }
43
+ };
44
+
26
45
  useEffect(() => {
27
46
  dispatch(
28
47
  get({
29
48
  key: HOST_BOOTDISK_BUTTONS_REQUEST_KEY,
30
- url: foremanUrl(`/bootdisk/disks/bootdisk_options/${hostId}`),
49
+ url: foremanUrl(`/disks/bootdisk_options/${hostId}`),
31
50
  })
32
51
  );
33
52
  }, [dispatch, hostId]);
@@ -40,6 +59,7 @@ const HostBootdiskButtons = () => {
40
59
  href={foremanUrl(action.link)}
41
60
  isDisabled={action.disabled}
42
61
  description={action.description}
62
+ icon={iconComponent(action.icon)}
43
63
  >
44
64
  {action.title}
45
65
  </DropdownItem>
@@ -55,6 +75,7 @@ const HostBootdiskButtons = () => {
55
75
  options.architectureName
56
76
  )}
57
77
  tooltipProps={{ entryDelay: 0, exitDelay: 0 }}
78
+ icon={<BanIcon />}
58
79
  >
59
80
  {__('Not available')}
60
81
  </DropdownItem>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_bootdisk
3
3
  version: !ruby/object:Gem::Version
4
- version: 19.0.6
4
+ version: 21.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominic Cleal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-08 00:00:00.000000000 Z
11
+ date: 2022-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: theforeman-rubocop
@@ -72,10 +72,6 @@ files:
72
72
  - app/services/foreman_bootdisk/iso_generator.rb
73
73
  - app/services/foreman_bootdisk/renderer.rb
74
74
  - app/views/foreman_bootdisk/disks/help.html.erb
75
- - app/views/foreman_bootdisk/generic_efi_host.erb
76
- - app/views/foreman_bootdisk/generic_host.erb
77
- - app/views/foreman_bootdisk/generic_static_host.erb
78
- - app/views/foreman_bootdisk/host.erb
79
75
  - app/views/hosts/provision_method/bootdisk/_form.html.erb
80
76
  - app/views/subnets/_bootdisk_action_buttons.erb
81
77
  - app/views/subnets/_bootdisk_title_buttons.erb
@@ -88,7 +84,7 @@ files:
88
84
  - db/migrate/20131021095100_edit_host_bootdisk_template_dns_secondary.rb
89
85
  - db/migrate/20140522185700_change_templatekind_to_bootdisk.rb
90
86
  - db/migrate/20171009225200_remove_duplicate_bootdisk_templates.rb
91
- - db/seeds.d/50-bootdisk_templates.rb
87
+ - db/migrate/20221102105354_fix_bootdisk_settings_category_to_dsl.rb
92
88
  - lib/foreman_bootdisk.rb
93
89
  - lib/foreman_bootdisk/engine.rb
94
90
  - lib/foreman_bootdisk/version.rb
@@ -1,76 +0,0 @@
1
- <%#
2
- name: Boot disk Grub2 EFI - generic host
3
- snippet: false
4
- model: ProvisioningTemplate
5
- kind: Bootdisk
6
- description: |
7
- Boot disk Grub2 EFI - generic host
8
- -%>
9
- #
10
- # Boot disk Grub2 EFI - generic host
11
- #
12
- #set debug="http,efinet,net"
13
- #set debug=all
14
- echo "Foreman Bootdisk: 'Boot disk Grub2 EFI - generic host' template"
15
- echo
16
- echo "********************************************************"
17
- echo " REQUIREMENTS:"
18
- echo " * SUBNET GENERIC IMAGE ONLY (host image not supported)"
19
- echo " * HOST PARAM default_grub_install_entry set to efi_http"
20
- echo " * PROXY WITH HTTPBOOT FEATURE"
21
- echo " * HTTP UEFI BOOT ONLY (Legacy/PXE not supported)"
22
- echo " * IPv4 ONLY (IPv6 not tested, change the template)"
23
- echo " * HTTP ONLY (change the template for HTTPS)"
24
- echo " * ISC DHCP (other servers not tested)"
25
- echo " * GRUB FROM RHEL 8.3+/7.9+ (when generating the image)"
26
- echo " * EFI HTTP or HTTPS grub entry must be selected in menu"
27
- echo " * DNS must resolve proxy hostname via DNS proxy if set"
28
- echo "*******************************************************"
29
- sleep 5
30
- <%
31
- # possible values are: "http" or "https"
32
- proxy_proto = "http"
33
-
34
- @subnet || bootdisk_raise("Generic disk not supported for EFI, use subnet disk")
35
- @subnet.template? || bootdisk_raise("Requires a proxy with template feature")
36
- proxy_port = if proxy_proto == "http"
37
- @subnet.httpboot.httpboot_http_port
38
- else
39
- @subnet.httpboot.httpboot_https_port
40
- end
41
- # Workaround for "no DNS server configured" https://bugzilla.redhat.com/show_bug.cgi?id=1842509
42
- proxy_httpboot_host = dns_lookup(@subnet.httpboot.hostname)
43
- proxy_template_host = dns_lookup(@subnet.template.hostname)
44
- -%>
45
- echo
46
- net_ls_cards
47
- echo "Configuring ALL cards via BOOTP/IPv4"
48
- net_bootp
49
- # uncomment here for IPv6 support (not tested)
50
- #echo "Configuring ALL cards via BOOTP/IPv6"
51
- #net_ipv6_autoconf
52
- net_ls_addr
53
- net_ls_routes
54
- net_ls_dns
55
- echo Trying to ping proxy_httpboot_host: <%= proxy_httpboot_host %>
56
- ping --count 1 <%= proxy_httpboot_host %> || echo Ping to proxy_httpboot_host failed or ping command not available.
57
- echo Trying to ping proxy_template_host: <%= proxy_template_host %>
58
- ping --count 1 <%= proxy_template_host %> || echo Ping to proxy_template_host failed or ping command not available.
59
- sleep 5
60
- set root=(<%= proxy_proto %>,<%= proxy_httpboot_host %>:<%= proxy_port %>)
61
- # The variable will not survive configfile fetch, therefore absolute path
62
- # must be used in the chainloaded template.
63
- # https://bugzilla.redhat.com/show_bug.cgi?id=1842893
64
- set http_path=/httpboot/
65
- set default=efi_<%= proxy_proto %>
66
- <% (0..32).each do |i| -%>
67
- echo "Trying efinet<%= i %> via <%= proxy_proto %>://<%= proxy_template_host %>:<%= proxy_port %>/unattended/PXEGrub2?mac=$net_efinet<%= i %>_dhcp_mac"
68
- set net_default_mac=$net_efinet<%= i %>_dhcp_mac
69
- sleep 5
70
- configfile (<%= proxy_proto %>,<%= proxy_template_host %>:<%= proxy_port %>)/unattended/PXEGrub2?mac=$net_efinet<%= i %>_dhcp_mac
71
- <% end -%>
72
-
73
- echo "Could not find a host with PXEGrub2 template and one of the MAC addresses!"
74
- echo "The system will poweroff in few minutes..."
75
- sleep 500
76
- poweroff
@@ -1,51 +0,0 @@
1
- <%#
2
- name: Boot disk iPXE - generic host
3
- snippet: false
4
- model: ProvisioningTemplate
5
- kind: Bootdisk
6
- description: |
7
- Example foreman_bootdisk generic host template
8
-
9
- This template is generic, but it will chainload to Foreman so expects the
10
- host to be registered already.
11
-
12
- It loops through all interfaces using DHCP, requesting a template from
13
- Foreman in the hope that one of the MACs or IPs matches.
14
- -%>
15
- #!ipxe
16
-
17
- echo Foreman Bootdisk: Generic image
18
-
19
- # loop over net* until we can get a template
20
- <% url = bootdisk_chain_url %>
21
- <% (0..32).each do |i| -%>
22
- :net<%= i %>
23
- isset ${net<%= i -%>/mac} || goto no_nic
24
- echo net<%= i -%> is a ${net<%= i -%>/chip} with MAC ${net<%= i -%>/mac}
25
- dhcp net<%= i %> || goto net<%= i+1 %>
26
- chain <%= url %>${net<%= i -%>/mac} || goto net<%= i+1 %>
27
- exit 0
28
- <% end -%>
29
- echo Failed to chainload from any network interface, fallback to static.
30
- ifstat
31
-
32
- :no_nic
33
- echo -n Enter interface name to boot from (e.g. net0): && read interface
34
- isset ${${interface}/mac} && goto get_static_ip
35
- echo Interface ${interface} is not initialized, try again
36
- goto no_nic
37
-
38
- :get_static_ip
39
- ifopen ${interface}
40
- echo Please enter IP details for ${interface}
41
- echo
42
- echo -n IP address : && read ${interface}/ip
43
- echo -n Subnet mask : && read ${interface}/netmask
44
- echo -n Default gateway : && read ${interface}/gateway
45
- echo -n DNS server : && read dns
46
- chain <%= url %>${${interface}/mac} || goto boot_failure
47
- exit 0
48
-
49
- :boot_failure
50
- echo Cannot continue, spawning shell
51
- shell
@@ -1,39 +0,0 @@
1
- <%#
2
- name: Boot disk iPXE - generic static host
3
- snippet: false
4
- model: ProvisioningTemplate
5
- kind: Bootdisk
6
- description: |
7
- Generic host template with interactive static IP configuration. Tokens
8
- must be disabled in order to access templates via MAC addresses.
9
- -%>
10
- #!ipxe
11
-
12
- <% (0..32).each do |i| -%>
13
- :net<%= i %>
14
- isset ${net<%= i -%>/mac} || goto configure
15
- echo Found ${net<%= i -%>/mac} as net<%= i -%> on a ${net<%= i -%>/chip}
16
- goto net<%= i+1 %>
17
- <% end -%>
18
-
19
- :configure
20
- echo -n Interface (e.g. net0): && read interface
21
- iseq ${interface} n && goto reboot ||
22
- iseq ${interface} N && goto reboot ||
23
-
24
- ifopen ${interface}
25
- echo Please enter IPv4 details for ${interface}
26
- echo
27
-
28
- echo -n IP address: && read ${interface}/ip
29
- echo -n Subnet mask: && read ${interface}/netmask
30
- echo -n Default gateway: && read ${interface}/gateway
31
- echo -n DNS server: && read dns
32
-
33
- chain <%= bootdisk_chain_url %>${${interface}/mac} || goto reboot
34
- exit 0
35
-
36
- :reboot
37
- echo Unable to continue, rebooting...
38
- sleep 30
39
- exit 1
@@ -1,80 +0,0 @@
1
- <%#
2
- name: Boot disk iPXE - host
3
- snippet: false
4
- model: ProvisioningTemplate
5
- kind: Bootdisk
6
- description: |
7
- Example foreman_bootdisk host template
8
- This template is rendered for use inside a host-specific boot disk.
9
- -%>
10
- #!ipxe
11
-
12
- <%
13
- interface = @host.provision_interface
14
- bootdisk_raise(N_('Host has no provisioning interface defined')) unless interface
15
- bootdisk_raise(N_('Host has no IPv4 or IPv6 address defined')) unless interface.ip.present? || interface.ip6.present?
16
- bootdisk_raise(N_('Host has no subnet defined')) unless interface.subnet || interface.subnet6
17
- bootdisk_raise(N_('Host has no domain defined')) unless interface.domain
18
- if interface.ip.present? && interface.subnet
19
- ip = interface.ip
20
- subnet = interface.subnet
21
- elsif interface.ip6.present? && interface.subnet6
22
- ip = interface.ip6
23
- subnet = interface.subnet6
24
- bootdisk_raise(N_('Host bootdisk does not work with static IPv6'))
25
- else
26
- bootdisk_raise(N_('Both IP and Subnet must be set'))
27
- end
28
-
29
- mask = subnet.mask
30
- gw = subnet.gateway
31
- dns = subnet.dns_servers.first
32
- %>
33
-
34
- echo Foreman Bootdisk: Host image (<%= @host.name %>)
35
-
36
- # loop over net* until the host's MAC matches
37
- <% (0..32).each do |i| -%>
38
- :net<%= i %>
39
- isset ${net<%= i -%>/mac} || goto no_nic
40
- echo net<%= i -%> is a ${net<%= i -%>/chip} with MAC ${net<%= i -%>/mac}
41
- iseq ${net<%= i -%>/mac} <%= interface.mac -%> || goto net<%= i+1 %>
42
- set idx:int32 <%= i %>
43
- goto loop_success
44
- <% end -%>
45
-
46
- :loop_success
47
- echo Configuring net${idx} for static IP address <%= ip %>
48
- ifopen net${idx}
49
- # netX = last opened NIC
50
- set netX/ip <%= ip %>
51
- set netX/netmask <%= mask %>
52
- <% if gw.present? %>
53
- set netX/gateway <%= gw %>
54
- <% end %>
55
- ifstat net${idx}
56
- route
57
-
58
- # Note: When multiple DNS servers are specified, only the first
59
- # server will be used. See: http://ipxe.org/cfg/dns
60
- <% if dns.present? -%>
61
- echo Using DNS <%= dns %>
62
- set dns <%= dns %>
63
- set domain <%= interface.domain.to_s %>
64
- <% end %>
65
-
66
- echo Trying to ping Gateway: ${netX/gateway}
67
- ping --count 1 ${netX/gateway} || echo Ping to Gateway failed or ping command not available.
68
- <% if dns.present? -%>
69
- echo Trying to ping DNS: ${netX/dns}
70
- ping --count 1 ${netX/dns} || echo Ping to DNS failed or ping command not available.
71
- <% end %>
72
-
73
- # Chainload from Foreman rather than embedding OS info here, so the behaviour
74
- # is entirely dynamic.
75
- chain <%= bootdisk_chain_url %>
76
- exit 0
77
-
78
- :no_nic
79
- echo Cannot find interface with MAC <%= interface.mac %>, spawning shell
80
- shell
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- def read_bootdisk_template(filename)
4
- File.read(File.join(ForemanBootdisk::Engine.root, 'app', 'views', 'foreman_bootdisk', filename))
5
- end
6
-
7
- def ensure_bootdisk_template(name, content)
8
- kind = TemplateKind.unscoped.where(name: 'Bootdisk').first_or_create
9
- tmpl = ProvisioningTemplate.unscoped.where(name: name).first_or_create do |template|
10
- template.attributes = {
11
- template_kind_id: kind.id,
12
- snippet: false,
13
- template: content
14
- }
15
- end
16
- tmpl.attributes = {
17
- template: content,
18
- default: true,
19
- vendor: "Foreman boot disk"
20
- }
21
- tmpl.locked = true
22
- tmpl.organizations = Organization.unscoped.all if SETTINGS[:organizations_enabled]
23
- tmpl.locations = Location.unscoped.all if SETTINGS[:locations_enabled]
24
-
25
- metadata = Template.parse_metadata(content)
26
- tmpl.description = metadata['description']
27
-
28
- tmpl.save!(validate: false) if tmpl.changes.present?
29
- end
30
-
31
- ProvisioningTemplate.without_auditing do
32
- ensure_bootdisk_template("Boot disk iPXE - host", read_bootdisk_template("host.erb"))
33
- ensure_bootdisk_template("Boot disk iPXE - generic host", read_bootdisk_template("generic_host.erb"))
34
- ensure_bootdisk_template("Boot disk Grub2 EFI - generic host", read_bootdisk_template("generic_efi_host.erb"))
35
- ensure_bootdisk_template("Boot disk iPXE - generic static host", read_bootdisk_template("generic_static_host.erb"))
36
- end