foreman_bootdisk 13.0.0 → 14.0.0
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 +4 -4
- data/CHANGES.md +4 -0
- data/README.md +3 -2
- data/app/controllers/foreman_bootdisk/api/v2/disks_controller.rb +11 -9
- data/app/controllers/foreman_bootdisk/api/v2/subnet_disks_controller.rb +37 -31
- data/app/controllers/foreman_bootdisk/disks_controller.rb +20 -19
- data/app/helpers/concerns/foreman_bootdisk/hosts_helper_ext.rb +86 -45
- data/app/lib/foreman_bootdisk/scope/bootdisk.rb +2 -0
- data/app/lib/foreman_bootdisk/scope/full_host_bootdisk.rb +15 -0
- data/app/models/concerns/foreman_bootdisk/compute_resources/vmware.rb +4 -2
- data/app/models/concerns/foreman_bootdisk/host_ext.rb +43 -31
- data/app/models/concerns/foreman_bootdisk/orchestration/compute.rb +14 -10
- data/app/models/setting/bootdisk.rb +28 -23
- data/app/services/foreman_bootdisk/iso_generator.rb +127 -104
- data/app/services/foreman_bootdisk/renderer.rb +16 -13
- data/config/routes.rb +15 -13
- data/config/routes/mount_engine.rb +3 -1
- data/db/migrate/20130914211030_create_host_bootdisk_template.rb +4 -4
- data/db/migrate/20130915104500_edit_host_bootdisk_template_multinic.rb +4 -4
- data/db/migrate/20130915133321_create_kickstart_bootdisk_template.rb +4 -4
- data/db/migrate/20130915201457_create_generic_host_bootdisk_template.rb +4 -4
- data/db/migrate/20131021095100_edit_host_bootdisk_template_dns_secondary.rb +4 -4
- data/db/migrate/20140522185700_change_templatekind_to_bootdisk.rb +16 -14
- data/db/migrate/20171009225200_remove_duplicate_bootdisk_templates.rb +4 -2
- data/db/seeds.d/50-bootdisk_templates.rb +24 -22
- data/lib/foreman_bootdisk.rb +2 -0
- data/lib/foreman_bootdisk/engine.rb +22 -33
- data/lib/foreman_bootdisk/version.rb +3 -1
- data/lib/tasks/bootdisk.rake +34 -17
- data/locale/gemspec.rb +3 -1
- data/test/functional/foreman_bootdisk/api/v2/disks_controller_test.rb +35 -33
- data/test/functional/foreman_bootdisk/api/v2/subnet_disks_controller_test.rb +9 -7
- data/test/functional/foreman_bootdisk/disks_controller_test.rb +27 -25
- data/test/models/host/managed_test.rb +17 -13
- data/test/test_plugin_helper.rb +9 -7
- data/test/unit/access_permissions_test.rb +2 -0
- data/test/unit/concerns/compute_resources/vmware_test.rb +67 -63
- data/test/unit/concerns/host_test.rb +54 -54
- data/test/unit/concerns/orchestration/compute_test.rb +41 -39
- data/test/unit/foreman_bootdisk/renderer_test.rb +3 -1
- data/test/unit/foreman_bootdisk/scope/bootdisk_test.rb +3 -1
- data/test/unit/foreman_bootdisk/scope/full_host_bootdisk_test.rb +30 -0
- data/test/unit/iso_generator_test.rb +57 -40
- metadata +19 -3
@@ -1,30 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'uri'
|
2
4
|
|
3
5
|
module ForemanBootdisk
|
4
6
|
class Renderer
|
5
7
|
def generic_template_render(subnet = nil)
|
6
|
-
if subnet.present?
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
host = if subnet.present?
|
9
|
+
# rendering a subnet-level bootdisk requires tricking the renderer into thinking it has a
|
10
|
+
# valid host, without a token, but with a tftp proxy
|
11
|
+
Struct.new(:token, :provision_interface).new(
|
12
|
+
nil,
|
13
|
+
Struct.new(:subnet).new(subnet)
|
14
|
+
)
|
15
|
+
else
|
16
|
+
Struct.new(:token, :subnet).new(nil, nil)
|
17
|
+
end
|
16
18
|
|
17
19
|
render_template(template: generic_host_template, host: host)
|
18
20
|
end
|
19
21
|
|
20
|
-
def render_template(template
|
22
|
+
def render_template(template:, host:, scope_class: renderer_scope)
|
21
23
|
source = Foreman::Renderer.get_source(
|
22
24
|
template: template,
|
23
25
|
host: host
|
24
26
|
)
|
25
27
|
scope = Foreman::Renderer.get_scope(
|
26
28
|
host: host,
|
27
|
-
klass:
|
29
|
+
klass: scope_class
|
28
30
|
)
|
29
31
|
Foreman::Renderer.render(source, scope)
|
30
32
|
end
|
@@ -36,8 +38,9 @@ module ForemanBootdisk
|
|
36
38
|
end
|
37
39
|
|
38
40
|
def generic_host_template
|
39
|
-
template = ProvisioningTemplate.unscoped.
|
41
|
+
template = ProvisioningTemplate.unscoped.find_by(name: Setting[:bootdisk_generic_host_template])
|
40
42
|
raise ::Foreman::Exception.new(N_('Unable to find template specified by %s setting'), 'bootdisk_generic_host_template') unless template
|
43
|
+
|
41
44
|
template
|
42
45
|
end
|
43
46
|
end
|
data/config/routes.rb
CHANGED
@@ -1,20 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
ForemanBootdisk::Engine.routes.draw do
|
2
|
-
resources :disks, :
|
3
|
-
get 'generic', :
|
4
|
-
get 'help', :
|
5
|
-
constraints(:
|
6
|
-
get 'hosts/:id', :
|
7
|
-
get 'full_hosts/:id', :
|
8
|
-
get 'subnet/:id', :
|
4
|
+
resources :disks, only: [] do
|
5
|
+
get 'generic', on: :collection
|
6
|
+
get 'help', on: :collection
|
7
|
+
constraints(id: %r{[^/]+}) do
|
8
|
+
get 'hosts/:id', on: :collection, to: 'disks#host'
|
9
|
+
get 'full_hosts/:id', on: :collection, to: 'disks#full_host'
|
10
|
+
get 'subnet/:id', on: :collection, to: 'disks#subnet'
|
9
11
|
end
|
10
12
|
end
|
11
13
|
|
12
|
-
namespace :api, :
|
13
|
-
scope
|
14
|
-
get 'generic', :
|
15
|
-
constraints(:
|
16
|
-
get 'hosts/:id', :
|
17
|
-
get 'subnets/:id', :
|
14
|
+
namespace :api, defaults: { format: 'json' } do
|
15
|
+
scope '(:apiv)', module: :v2, defaults: { apiv: 'v2' }, apiv: /v1|v2/, constraints: ApiConstraints.new(version: 2, default: true) do
|
16
|
+
get 'generic', to: 'disks#generic'
|
17
|
+
constraints(id: %r{[^/]+}) do
|
18
|
+
get 'hosts/:id', to: 'disks#host'
|
19
|
+
get 'subnets/:id', to: 'subnet_disks#subnet'
|
18
20
|
end
|
19
21
|
end
|
20
22
|
end
|
@@ -1,29 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class ChangeTemplatekindToBootdisk < ActiveRecord::Migration[4.2]
|
2
4
|
class FakeConfigTemplate < ApplicationRecord
|
3
|
-
if ActiveRecord::Base.connection.migration_context.get_all_versions.include?(
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
self.table_name = if ActiveRecord::Base.connection.migration_context.get_all_versions.include?(20_150_514_072_626)
|
6
|
+
'templates'
|
7
|
+
else
|
8
|
+
'config_templates'
|
9
|
+
end
|
8
10
|
end
|
9
11
|
|
10
12
|
def self.up
|
11
|
-
kind = TemplateKind.where(:
|
13
|
+
kind = TemplateKind.where(name: 'Bootdisk').first_or_create
|
12
14
|
|
13
|
-
tmpl_h = Setting.
|
14
|
-
tmpl_g = Setting.
|
15
|
+
tmpl_h = Setting.find_by(name: 'bootdisk_host_template').try(:value)
|
16
|
+
tmpl_g = Setting.find_by(name: 'bootdisk_generic_host_template').try(:value)
|
15
17
|
|
16
18
|
(FakeConfigTemplate.unscoped.where('name LIKE ?', '%Boot disk%') |
|
17
|
-
FakeConfigTemplate.unscoped.where(:
|
19
|
+
FakeConfigTemplate.unscoped.where(name: [tmpl_h, tmpl_g].compact)).each do |tmpl|
|
18
20
|
tmpl.update_attribute(:template_kind_id, kind.id)
|
19
21
|
end
|
20
22
|
end
|
21
23
|
|
22
24
|
def self.down
|
23
|
-
old_kind = TemplateKind.
|
24
|
-
new_kind = TemplateKind.
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
old_kind = TemplateKind.find_by(name: 'Bootdisk')
|
26
|
+
new_kind = TemplateKind.find_by(name: 'iPXE')
|
27
|
+
return unless old_kind.present? && new_kind.present?
|
28
|
+
|
29
|
+
FakeConfigTemplate.unscoped.where(template_kind_id: old_kind.id).update_all(template_kind_id: new_kind.id)
|
28
30
|
end
|
29
31
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class RemoveDuplicateBootdiskTemplates < ActiveRecord::Migration[4.2]
|
2
4
|
def up
|
3
5
|
template_names = ['Boot disk iPXE - host', 'Boot disk iPXE - generic host']
|
4
6
|
template_names.each do |template_name|
|
5
|
-
duplicate_template_ids = ProvisioningTemplate.unscoped.where(:
|
6
|
-
ProvisioningTemplate.unscoped.where(:
|
7
|
+
duplicate_template_ids = ProvisioningTemplate.unscoped.where(name: template_name, locked: true).order(created_at: :asc).pluck(:id).drop(1)
|
8
|
+
ProvisioningTemplate.unscoped.where(id: duplicate_template_ids).destroy_all if duplicate_template_ids.any?
|
7
9
|
end
|
8
10
|
end
|
9
11
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
kind = TemplateKind.unscoped.where(name: 'Bootdisk').first_or_create
|
2
4
|
|
3
5
|
organizations = Organization.all
|
4
6
|
locations = Location.all
|
@@ -6,41 +8,41 @@ created = []
|
|
6
8
|
|
7
9
|
ProvisioningTemplate.without_auditing do
|
8
10
|
content = File.read(File.join(ForemanBootdisk::Engine.root, 'app', 'views', 'foreman_bootdisk', 'host.erb'))
|
9
|
-
created << 'Boot disk iPXE - host' unless ProvisioningTemplate.
|
10
|
-
tmpl = ProvisioningTemplate.unscoped.where(:
|
11
|
+
created << 'Boot disk iPXE - host' unless ProvisioningTemplate.find_by(name: 'Boot disk iPXE - host')
|
12
|
+
tmpl = ProvisioningTemplate.unscoped.where(name: 'Boot disk iPXE - host').first_or_create do |template|
|
11
13
|
template.attributes = {
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
14
|
+
template_kind_id: kind.id,
|
15
|
+
snippet: false,
|
16
|
+
template: content
|
15
17
|
}
|
16
18
|
end
|
17
19
|
tmpl.attributes = {
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
20
|
+
template: content,
|
21
|
+
default: true,
|
22
|
+
vendor: 'Foreman boot disk'
|
21
23
|
}
|
22
24
|
tmpl.locked = true
|
23
|
-
tmpl.save!(:
|
25
|
+
tmpl.save!(validate: false) if tmpl.changes.present?
|
24
26
|
|
25
27
|
content = File.read(File.join(ForemanBootdisk::Engine.root, 'app', 'views', 'foreman_bootdisk', 'generic_host.erb'))
|
26
|
-
created << 'Boot disk iPXE - generic host' unless ProvisioningTemplate.
|
27
|
-
tmpl = ProvisioningTemplate.unscoped.where(:
|
28
|
+
created << 'Boot disk iPXE - generic host' unless ProvisioningTemplate.find_by(name: 'Boot disk iPXE - generic host')
|
29
|
+
tmpl = ProvisioningTemplate.unscoped.where(name: 'Boot disk iPXE - generic host').first_or_create do |template|
|
28
30
|
template.attributes = {
|
29
|
-
:
|
30
|
-
:
|
31
|
-
:
|
31
|
+
template_kind_id: kind.id,
|
32
|
+
snippet: false,
|
33
|
+
template: content
|
32
34
|
}
|
33
35
|
end
|
34
36
|
tmpl.attributes = {
|
35
|
-
:
|
36
|
-
:
|
37
|
-
:
|
37
|
+
template: content,
|
38
|
+
default: true,
|
39
|
+
vendor: 'Foreman boot disk'
|
38
40
|
}
|
39
41
|
tmpl.locked = true
|
40
|
-
tmpl.save!(:
|
42
|
+
tmpl.save!(validate: false) if tmpl.changes.present?
|
41
43
|
|
42
|
-
ProvisioningTemplate.unscoped.where(:
|
43
|
-
|
44
|
-
|
44
|
+
ProvisioningTemplate.unscoped.where(name: created, default: true).each do |template|
|
45
|
+
template.organizations = organizations if SETTINGS[:organizations_enabled]
|
46
|
+
template.locations = locations if SETTINGS[:locations_enabled]
|
45
47
|
end
|
46
48
|
end
|
data/lib/foreman_bootdisk.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'foreman_bootdisk'
|
2
4
|
require 'fast_gettext'
|
3
5
|
require 'gettext_i18n_rails'
|
@@ -15,49 +17,36 @@ module ForemanBootdisk
|
|
15
17
|
app.routes_reloader.paths << "#{ForemanBootdisk::Engine.root}/config/routes/mount_engine.rb"
|
16
18
|
end
|
17
19
|
|
18
|
-
initializer 'foreman_bootdisk.load_default_settings', :
|
19
|
-
|
20
|
+
initializer 'foreman_bootdisk.load_default_settings', before: :load_config_initializers do |_app|
|
21
|
+
table_exists = begin
|
22
|
+
Setting.table_exists?
|
23
|
+
rescue StandardError
|
24
|
+
false
|
25
|
+
end
|
26
|
+
require_dependency File.expand_path('../../app/models/setting/bootdisk.rb', __dir__) if table_exists
|
20
27
|
end
|
21
28
|
|
22
|
-
initializer
|
29
|
+
initializer 'foreman_bootdisk.load_app_instance_data' do |app|
|
23
30
|
ForemanBootdisk::Engine.paths['db/migrate'].existent.each do |path|
|
24
31
|
app.config.paths['db/migrate'] << path
|
25
32
|
end
|
26
33
|
end
|
27
34
|
|
28
|
-
initializer
|
35
|
+
initializer 'foreman_bootdisk.apipie' do
|
29
36
|
Apipie.configuration.checksum_path += ['/bootdisk/api/']
|
30
37
|
end
|
31
38
|
|
32
|
-
|
33
|
-
# If requiring files from each other, list them explicitly here to avoid precompiling the same
|
34
|
-
# content twice.
|
35
|
-
assets_to_precompile =
|
36
|
-
Dir.chdir(root) do
|
37
|
-
Dir['app/assets/javascripts/**/*', 'app/assets/stylesheets/**/*'].map do |f|
|
38
|
-
f.split(File::SEPARATOR, 4).last
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
initializer 'foreman_bootdisk.assets.precompile' do |app|
|
43
|
-
app.config.assets.precompile += assets_to_precompile
|
44
|
-
end
|
45
|
-
|
46
|
-
initializer 'foreman_bootdisk.configure_assets', group: :assets do
|
47
|
-
SETTINGS[:foreman_bootdisk] = { assets: { precompile: assets_to_precompile } }
|
48
|
-
end
|
49
|
-
|
50
|
-
initializer 'foreman_bootdisk.register_plugin', :before => :finisher_hook do |app|
|
39
|
+
initializer 'foreman_bootdisk.register_plugin', before: :finisher_hook do |_app|
|
51
40
|
Foreman::Plugin.register :foreman_bootdisk do
|
52
|
-
requires_foreman '>= 1.
|
41
|
+
requires_foreman '>= 1.20'
|
53
42
|
|
54
|
-
security_block :bootdisk do |
|
55
|
-
permission :download_bootdisk,
|
56
|
-
|
57
|
-
|
43
|
+
security_block :bootdisk do |_map|
|
44
|
+
permission :download_bootdisk, 'foreman_bootdisk/disks': %i[generic host full_host subnet help],
|
45
|
+
'foreman_bootdisk/api/v2/disks': %i[generic host],
|
46
|
+
'foreman_bootdisk/api/v2/subnet_disks': [:subnet]
|
58
47
|
end
|
59
48
|
|
60
|
-
role
|
49
|
+
role 'Boot disk access', [:download_bootdisk]
|
61
50
|
|
62
51
|
add_all_permissions_to_default_roles
|
63
52
|
|
@@ -68,8 +57,8 @@ module ForemanBootdisk
|
|
68
57
|
end
|
69
58
|
end
|
70
59
|
|
71
|
-
initializer 'foreman_bootdisk.register_gettext', :
|
72
|
-
locale_dir = File.join(File.expand_path('
|
60
|
+
initializer 'foreman_bootdisk.register_gettext', after: :load_config_initializers do |_app|
|
61
|
+
locale_dir = File.join(File.expand_path('../..', __dir__), 'locale')
|
73
62
|
locale_domain = 'foreman_bootdisk'
|
74
63
|
Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
|
75
64
|
end
|
@@ -80,8 +69,8 @@ module ForemanBootdisk
|
|
80
69
|
Host::Managed.send(:include, ForemanBootdisk::Orchestration::Compute) if SETTINGS[:unattended]
|
81
70
|
HostsHelper.send(:prepend, ForemanBootdisk::HostsHelperExt)
|
82
71
|
Foreman::Model::Vmware.send(:prepend, ForemanBootdisk::ComputeResources::Vmware) if Foreman::Model::Vmware.available?
|
83
|
-
rescue => e
|
84
|
-
|
72
|
+
rescue StandardError => e
|
73
|
+
Rails.logger.warn "#{ForemanBootdisk::ENGINE_NAME}: skipping engine hook (#{e})"
|
85
74
|
end
|
86
75
|
end
|
87
76
|
end
|
data/lib/tasks/bootdisk.rake
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'date'
|
2
4
|
require 'rake/testtask'
|
3
5
|
require 'tmpdir'
|
@@ -15,12 +17,12 @@ namespace :bootdisk do
|
|
15
17
|
|
16
18
|
namespace :generate do
|
17
19
|
desc 'Generate a static boot disk for a specific host. NAME=fqdn, OUTPUT path'
|
18
|
-
task :
|
20
|
+
task host: :environment do
|
19
21
|
User.as_anonymous_admin do
|
20
|
-
host = Host::Base.unscoped.
|
22
|
+
host = Host::Base.unscoped.find_by(name: ENV['NAME']) || raise("cannot find host '#{ENV['NAME']}', specify NAME=fqdn")
|
21
23
|
tmpl = host.bootdisk_template_render
|
22
24
|
|
23
|
-
ForemanBootdisk::ISOGenerator.generate(:
|
25
|
+
ForemanBootdisk::ISOGenerator.generate(ipxe: tmpl, dir: outputdir) do |image|
|
24
26
|
output = ENV['OUTPUT'] || File.join(outputdir, "#{host.name}.iso")
|
25
27
|
FileUtils.mv image, output
|
26
28
|
puts "Wrote #{output}"
|
@@ -29,10 +31,10 @@ namespace :bootdisk do
|
|
29
31
|
end
|
30
32
|
|
31
33
|
desc 'Generate a full boot disk for a specific host with the OS bootloader included. NAME=fqdn, OUTPUT path'
|
32
|
-
task :
|
34
|
+
task full_host: :environment do
|
33
35
|
User.as_anonymous_admin do
|
34
|
-
host = Host::Base.unscoped.
|
35
|
-
ForemanBootdisk::ISOGenerator.generate_full_host(host, :
|
36
|
+
host = Host::Base.unscoped.find_by(name: ENV['NAME']) || raise("cannot find host '#{ENV['NAME']}', specify NAME=fqdn")
|
37
|
+
ForemanBootdisk::ISOGenerator.generate_full_host(host, dir: outputdir) do |image|
|
36
38
|
output = ENV['OUTPUT'] || File.join(outputdir, "#{host.name}_#{Date.today.strftime('%Y%m%d')}.iso")
|
37
39
|
FileUtils.cp image, output
|
38
40
|
puts "Wrote #{output}"
|
@@ -41,11 +43,11 @@ namespace :bootdisk do
|
|
41
43
|
end
|
42
44
|
|
43
45
|
desc 'Generate a generic boot disk. OUTPUT=path'
|
44
|
-
task :
|
46
|
+
task generic: :environment do
|
45
47
|
User.as_anonymous_admin do
|
46
48
|
tmpl = ForemanBootdisk::Renderer.new.generic_template_render
|
47
49
|
|
48
|
-
ForemanBootdisk::ISOGenerator.generate(:
|
50
|
+
ForemanBootdisk::ISOGenerator.generate(ipxe: tmpl, dir: outputdir) do |image|
|
49
51
|
output = ENV['OUTPUT'] || File.join(outputdir, "bootdisk_#{URI.parse(Setting[:foreman_url]).host}.iso")
|
50
52
|
FileUtils.cp image, output
|
51
53
|
puts "Wrote #{output}"
|
@@ -54,12 +56,12 @@ namespace :bootdisk do
|
|
54
56
|
end
|
55
57
|
|
56
58
|
desc 'Generate a subnet disk for a specific subnet. NAME=subnet, OUTPUT=path'
|
57
|
-
task :
|
59
|
+
task subnet: :environment do
|
58
60
|
User.as_anonymous_admin do
|
59
|
-
subnet = Subnet.unscoped.
|
60
|
-
subnet.tftp || raise(::Foreman::Exception.new(N_(
|
61
|
+
subnet = Subnet.unscoped.find_by(name: ENV['NAME']) || raise("cannot find subnet '#{ENV['NAME']}', specify NAME=subnet")
|
62
|
+
subnet.tftp || raise(::Foreman::Exception.new(N_('TFTP feature not enabled for subnet %s'), subnet.name))
|
61
63
|
tmpl = ForemanBootdisk::Renderer.new.generic_template_render(subnet)
|
62
|
-
ForemanBootdisk::ISOGenerator.generate(:
|
64
|
+
ForemanBootdisk::ISOGenerator.generate(ipxe: tmpl, dir: outputdir) do |image|
|
63
65
|
output = ENV['OUTPUT'] || File.join(outputdir, "bootdisk_subnet_#{subnet.name}.iso")
|
64
66
|
FileUtils.cp image, output
|
65
67
|
puts "Wrote #{output}"
|
@@ -71,10 +73,10 @@ end
|
|
71
73
|
|
72
74
|
# Tests
|
73
75
|
namespace :test do
|
74
|
-
desc
|
76
|
+
desc 'Test foreman_bootdisk'
|
75
77
|
Rake::TestTask.new(:foreman_bootdisk) do |t|
|
76
78
|
test_dir = File.join(File.dirname(__FILE__), '../..', 'test')
|
77
|
-
t.libs << [
|
79
|
+
t.libs << ['test', test_dir]
|
78
80
|
t.pattern = "#{test_dir}/**/*_test.rb"
|
79
81
|
t.verbose = true
|
80
82
|
t.warning = false
|
@@ -83,7 +85,22 @@ end
|
|
83
85
|
|
84
86
|
Rake::Task[:test].enhance ['test:foreman_bootdisk']
|
85
87
|
|
86
|
-
|
87
|
-
|
88
|
-
|
88
|
+
namespace :foreman_bootdisk do
|
89
|
+
task :rubocop do
|
90
|
+
begin
|
91
|
+
require 'rubocop/rake_task'
|
92
|
+
RuboCop::RakeTask.new(:rubocop_foreman_bootdisk) do |task|
|
93
|
+
task.patterns = ["#{ForemanBootdisk::Engine.root}/app/**/*.rb",
|
94
|
+
"#{ForemanBootdisk::Engine.root}/lib/**/*.rb",
|
95
|
+
"#{ForemanBootdisk::Engine.root}/test/**/*.rb"]
|
96
|
+
end
|
97
|
+
rescue StandardError
|
98
|
+
puts 'Rubocop not loaded.'
|
99
|
+
end
|
100
|
+
|
101
|
+
Rake::Task['rubocop_foreman_bootdisk'].invoke
|
102
|
+
end
|
89
103
|
end
|
104
|
+
|
105
|
+
load 'tasks/jenkins.rake'
|
106
|
+
Rake::Task['jenkins:unit'].enhance ['test:foreman_bootdisk', 'foreman_bootdisk:rubocop'] if Rake::Task.task_defined?(:'jenkins:unit')
|