foreman_m2 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +619 -0
  3. data/README.md +48 -0
  4. data/Rakefile +47 -0
  5. data/app/controllers/foreman_m2/hosts_controller.rb +19 -0
  6. data/app/helpers/concerns/foreman_m2/hosts_helper_extensions.rb +12 -0
  7. data/app/helpers/concerns/foreman_m2/images_helper_extensions.rb +24 -0
  8. data/app/lib/proxy_api/m2.rb +35 -0
  9. data/app/models/concerns/foreman_m2/compute_resource_extensions.rb +23 -0
  10. data/app/models/concerns/foreman_m2/host_extensions.rb +110 -0
  11. data/app/models/concerns/foreman_m2/host_orchestration_extensions.rb +52 -0
  12. data/app/models/concerns/foreman_m2/nic_extensions.rb +17 -0
  13. data/app/models/concerns/foreman_m2/nic_orchestration_extensions.rb +75 -0
  14. data/app/models/foreman_m2/m2.rb +20 -0
  15. data/app/overrides/give_ids.rb +14 -0
  16. data/app/overrides/hybrid_js.rb +4 -0
  17. data/app/overrides/update_media_selection.rb +6 -0
  18. data/app/views/compute_resources/edit/_m2.html.erb +0 -0
  19. data/app/views/compute_resources/form/_m2.html.erb +1 -0
  20. data/app/views/compute_resources/show/_m2.html.erb +0 -0
  21. data/app/views/compute_resources_vms/form/m2/_base.html.erb +16 -0
  22. data/app/views/dashboard/_foreman_m2_widget.erb +2 -0
  23. data/app/views/foreman_m2/hosts/hosts/new_action.html.erb +1 -0
  24. data/app/views/foreman_m2/hosts/new_action.html.erb +15 -0
  25. data/app/views/foreman_m2/layouts/layouts/new_layout.html.erb +0 -0
  26. data/app/views/foreman_m2/layouts/new_layout.html.erb +0 -0
  27. data/app/views/hosts/provisioning_method/hybrid/_form.html.erb +6 -0
  28. data/app/views/images/form/_m2.html.erb +6 -0
  29. data/app/views/overrides/host_creation/_add_bm_div.html.erb +12 -0
  30. data/app/views/overrides/host_creation/_add_hybrid_js.html.erb +85 -0
  31. data/app/views/overrides/host_creation/_add_ptable_div.html.erb +4 -0
  32. data/app/views/overrides/image_selection/_host_media_type_select.html.erb +28 -0
  33. data/app/views/unattended/provisioning_templates/PXELinux/m2_default_pxelinux.erb +18 -0
  34. data/app/views/unattended/provisioning_templates/iPXE/m2_default_ipxe.erb +22 -0
  35. data/config/routes.rb +3 -0
  36. data/db/seeds.d/071-m2_prov_templates.rb +59 -0
  37. data/db/seeds.d/111-m2_sp_features.rb +6 -0
  38. data/lib/foreman_m2/engine.rb +80 -0
  39. data/lib/foreman_m2/version.rb +3 -0
  40. data/lib/foreman_m2.rb +5 -0
  41. data/lib/tasks/foreman_m2_tasks.rake +47 -0
  42. data/locale/Makefile +60 -0
  43. data/locale/en/foreman_m2.po +19 -0
  44. data/locale/foreman_m2.pot +19 -0
  45. data/locale/gemspec.rb +2 -0
  46. data/test/factories/foreman_m2_factories.rb +2 -0
  47. data/test/test_plugin_helper.rb +7 -0
  48. data/test/unit/foreman_m2_test.rb +11 -0
  49. metadata +136 -0
@@ -0,0 +1,28 @@
1
+ <% media_selection = using_hostgroups_page? ? use_install_media(@hostgroup) : use_install_media(@host, :selected_host_group => @hostgroup)
2
+ install_media_radio = media_selection ? 'checked="checked"':''
3
+ synced_content_radio = media_selection ? '' : 'checked="checked"'
4
+ install_media_disabled = os_media.empty? ? 'disabled = true' : ''
5
+ kickstart_options = using_hostgroups_page? ? kickstart_repository_options(@hostgroup) : kickstart_repository_options(@host, :selected_host_group => @hostgroup)
6
+ synced_content_disabled = kickstart_options.empty? ? 'disabled = true' : ''
7
+ %>
8
+
9
+ <div class="clear-fix" id="media_selection_section">
10
+ <div class="form-group ">
11
+ <label class="col-md-2 control-label" for="use_install_media">Media Selection</label>
12
+ <div class="col-md-4">
13
+ <label class="radio-inline">
14
+ <input data-media-selector="true" id="host_use_synced_content" name="media_selector" value="synced_content" type="radio" <%= synced_content_radio %> <%= synced_content_disabled %>/> <%= _('Synced Content') %>
15
+ </label>
16
+ <label class="radio-inline">
17
+ <input data-media-selector="true" id="host_use_install_media" name="media_selector" value="install_media" type="radio" <%= install_media_radio %> <%= install_media_disabled %>/> <%= _('All Media') %>
18
+ </label>
19
+ <label class="radio-inline">
20
+ <input data-media-selector="true" id="host_use_m2_media" name="media_selector" value="m2_media" type="radio" <%= synced_content_radio %> <%= synced_content_disabled %>/> <%= _('M2 Media') %>
21
+ </label>
22
+ <span class="help-block">
23
+ <%= _("Select the installation media that will be used to provision this host. Choose 'Synced Content' for Synced Kickstart Repositories or 'All Media' for other media.") %>
24
+ </span>
25
+ </div>
26
+ <span class="help-block help-inline"></span>
27
+ </div>
28
+ </div>
@@ -0,0 +1,18 @@
1
+ <%#
2
+ kind: PXELinux
3
+ name: M2 default PXELinux
4
+ model: ProvisioningTemplate
5
+ %>
6
+ <%#
7
+ Chainboots iPXE/gPXE from PXELinux. Make sure the OS has iPXE template
8
+ associated and file ipxe.lkrn was copied in the TFTP directory (e.g. from
9
+ /usr/share/ipxe/ipxe.lkrn or iPXE project web site).
10
+
11
+ For more info visit:
12
+ http://projects.theforeman.org/projects/foreman/wiki/Fetch_boot_files_via_http_instead_of_TFTP
13
+ %>
14
+ DEFAULT linux
15
+ LABEL linux
16
+ KERNEL ipxe.lkrn
17
+ APPEND sleep 23 && dhcp && chain <%= foreman_url('iPXE') %>
18
+ IPAPPEND 2
@@ -0,0 +1,22 @@
1
+ #!gpxe
2
+ <%#
3
+ kind: iPXE
4
+ name: M2 default iPXE
5
+ model: ProvisioningTemplate
6
+ oses:
7
+ -All
8
+ %>
9
+ <% subnet = @host.subnet -%>
10
+ <% if subnet.respond_to?(:dhcp_boot_mode?) && subnet.dhcp_boot_mode? -%>
11
+ <% static = '' -%>
12
+ <% else -%>
13
+ <% static_arg = 'static=yes' -%>
14
+ <% static = (@host.token.nil? ? '?' : '&') + static_arg -%>
15
+ <% end -%>
16
+
17
+ # Assuming we're using the M2 PXELinux BIOS template...
18
+
19
+ #sleep 23
20
+ set keep-san 1
21
+ sanboot --keep <%= @host.iscsi_target %> || shell
22
+ boot
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do
2
+ get 'new_action', to: 'foreman_m2/hosts#new_action'
3
+ end
@@ -0,0 +1,59 @@
1
+ # Provisioning templates
2
+ pxelinux_kind = TemplateKind.unscoped.where(:name => 'PXELinux').first_or_create
3
+ ipxe_kind = TemplateKind.unscoped.where(:name => 'iPXE').first_or_create
4
+ organizations = Organization.unscoped.all
5
+ locations = Location.unscoped.all
6
+ created = []
7
+
8
+ ProvisioningTemplate.without_auditing do
9
+ contents_pxelinux = File.read(File.join(ForemanM2::Engine.root, 'app',
10
+ 'views', 'unattended',
11
+ 'provisioning_templates', 'PXELinux',
12
+ 'm2_default_pxelinux.erb'))
13
+ created << 'M2 default PXELinux' unless
14
+ ProvisioningTemplate.find_by(name: 'M2 default PXELinux')
15
+ temp_pxelinux = ProvisioningTemplate.unscoped
16
+ .where(:name => 'M2 default PXELinux')
17
+ .first_or_create do |template|
18
+ template.attributes = {
19
+ :template_kind_id => pxelinux_kind.id,
20
+ :snippet => false,
21
+ :template => contents_pxelinux
22
+ }
23
+ end
24
+ temp_pxelinux.attributes = {
25
+ :template => contents_pxelinux,
26
+ :default => true,
27
+ :vendor => 'Foreman M2'
28
+ }
29
+ temp_pxelinux.locked = true
30
+ temp_pxelinux.save!(:validate => false) if temp_pxelinux.changes.present?
31
+
32
+ contents_ipxe = File.read(File.join(ForemanM2::Engine.root, 'app',
33
+ 'views', 'unattended',
34
+ 'provisioning_templates', 'iPXE',
35
+ 'm2_default_ipxe.erb'))
36
+ created << 'M2 default iPXE' unless
37
+ ProvisioningTemplate.find_by(name: 'M2 default iPXE')
38
+ temp_ipxe = ProvisioningTemplate.unscoped.where(:name => 'M2 default iPXE')
39
+ .first_or_create do |template|
40
+ template.attributes = {
41
+ :template_kind_id => ipxe_kind.id,
42
+ :snippet => false,
43
+ :template => contents_ipxe
44
+ }
45
+ end
46
+ temp_ipxe.attributes = {
47
+ :template => contents_ipxe,
48
+ :default => true,
49
+ :vendor => 'Foreman M2'
50
+ }
51
+ temp_ipxe.locked = true
52
+ temp_ipxe.save!(:validate => false) if temp_ipxe.changes.present?
53
+
54
+ ProvisioningTemplate.unscoped.where(:name => created,
55
+ :default => true).each do |template|
56
+ template.organizations = organizations if SETTINGS[:organizations_enabled]
57
+ template.locations = locations if SETTINGS[:locations_enabled]
58
+ end
59
+ end
@@ -0,0 +1,6 @@
1
+ # Proxy features
2
+ ['M2'].each do |input|
3
+ f = Feature.where(:name => input).first_or_create
4
+ raise "Unable to create proxy feature: #{format_errors f}" \
5
+ if f.nil? || f.errors.any?
6
+ end
@@ -0,0 +1,80 @@
1
+ module ForemanM2
2
+ # class BareMetalM2 < ComputeResource
3
+ # end
4
+
5
+ class Engine < ::Rails::Engine
6
+ engine_name 'foreman_m2'
7
+
8
+ config.autoload_paths += Dir["#{config.root}/app/controllers/concerns"]
9
+ config.autoload_paths += Dir["#{config.root}/app/helpers/concerns"]
10
+ config.autoload_paths += Dir["#{config.root}/app/models/concerns"]
11
+ config.autoload_paths += Dir["#{config.root}/app/models/foreman_m2"]
12
+ config.autoload_paths += Dir["#{config.root}/app/overrides"]
13
+
14
+ # Add any db migrations
15
+ initializer 'foreman_m2.load_app_instance_data' do |app|
16
+ ForemanM2::Engine.paths['db/migrate'].existent.each do |path|
17
+ app.config.paths['db/migrate'] << path
18
+ end
19
+ end
20
+
21
+ initializer 'foreman_m2.register_plugin',
22
+ :before => :finisher_hook do |_app|
23
+ Foreman::Plugin.register :foreman_m2 do
24
+ requires_foreman '>= 1.16'
25
+
26
+ compute_resource M2
27
+ parameter_filter ComputeResource, :url, :user, :password
28
+
29
+ # Add permissions
30
+ security_block :foreman_m2 do
31
+ permission :view_foreman_m2, :'foreman_m2/hosts' => [:new_action]
32
+ end
33
+
34
+ # Add a new role called 'Discovery' if it doesn't exist
35
+ role 'ForemanM2', [:view_foreman_m2]
36
+
37
+ # add menu entry
38
+ menu :top_menu, :template,
39
+ url_hash: { controller: :'foreman_m2/hosts', action: :new_action },
40
+ caption: 'ForemanM2',
41
+ parent: :hosts_menu,
42
+ after: :hosts
43
+
44
+ # add dashboard widget
45
+ widget 'foreman_m2_widget', name: N_('Foreman plugin template widget'),
46
+ sizex: 4, sizey: 1
47
+
48
+ provision_method 'hybrid', 'Network & Image Based'
49
+ end
50
+ end
51
+
52
+ # Include concerns in this config.to_prepare block
53
+ config.to_prepare do
54
+ begin
55
+ ComputeResource.send(:prepend, ForemanM2::ComputeResourceExtensions)
56
+ Host::Managed.send(:prepend, ForemanM2::HostExtensions)
57
+ Nic::Managed.send(:prepend, ForemanM2::NicOrchestrationExtensions)
58
+ Nic::Managed.send(:prepend, ForemanM2::NicExtensions)
59
+ Host::Managed.send(:prepend, ForemanM2::HostOrchestrationExtensions)
60
+ HostsHelper.send(:include, ForemanM2::HostsHelperExtensions)
61
+ ImagesHelper.send(:prepend, ForemanM2::ImagesHelperExtensions)
62
+ rescue StandardError => e
63
+ Rails.logger.warn "ForemanM2: skipping engine hook (#{e})"
64
+ end
65
+ end
66
+
67
+ rake_tasks do
68
+ Rake::Task['db:seed'].enhance do
69
+ ForemanM2::Engine.load_seed
70
+ end
71
+ end
72
+
73
+ initializer 'foreman_m2.register_gettext',
74
+ after: :load_config_initializers do |_app|
75
+ locale_dir = File.join(File.expand_path('../..', __dir__), 'locale')
76
+ locale_domain = 'foreman_m2'
77
+ Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,3 @@
1
+ module ForemanM2
2
+ VERSION = '0.0.1'.freeze
3
+ end
data/lib/foreman_m2.rb ADDED
@@ -0,0 +1,5 @@
1
+ require 'foreman_m2/engine'
2
+ require 'deface'
3
+
4
+ module ForemanM2
5
+ end
@@ -0,0 +1,47 @@
1
+ require 'rake/testtask'
2
+
3
+ # Tasks
4
+ namespace :foreman_m2 do
5
+ namespace :example do
6
+ desc 'Example Task'
7
+ task task: :environment do
8
+ # Task goes here
9
+ end
10
+ end
11
+ end
12
+
13
+ # Tests
14
+ namespace :test do
15
+ desc 'Test ForemanM2'
16
+ Rake::TestTask.new(:foreman_m2) do |t|
17
+ test_dir = File.join(File.dirname(__FILE__), '../..', 'test')
18
+ t.libs << ['test', test_dir]
19
+ t.pattern = "#{test_dir}/**/*_test.rb"
20
+ t.verbose = true
21
+ t.warning = false
22
+ end
23
+ end
24
+
25
+ namespace :foreman_m2 do
26
+ task :rubocop do
27
+ begin
28
+ require 'rubocop/rake_task'
29
+ RuboCop::RakeTask.new(:rubocop_foreman_m2) do |task|
30
+ task.patterns = ["#{ForemanM2::Engine.root}/app/**/*.rb",
31
+ "#{ForemanM2::Engine.root}/lib/**/*.rb",
32
+ "#{ForemanM2::Engine.root}/test/**/*.rb"]
33
+ end
34
+ rescue StandardError
35
+ puts 'Rubocop not loaded.'
36
+ end
37
+
38
+ Rake::Task['rubocop_foreman_m2'].invoke
39
+ end
40
+ end
41
+
42
+ Rake::Task[:test].enhance ['test:foreman_m2']
43
+
44
+ load 'tasks/jenkins.rake'
45
+ if Rake::Task.task_defined?(:'jenkins:unit')
46
+ Rake::Task['jenkins:unit'].enhance ['test:foreman_m2', 'foreman_m2:rubocop']
47
+ end
data/locale/Makefile ADDED
@@ -0,0 +1,60 @@
1
+ #
2
+ # Makefile for PO merging and MO generation. More info in the README.
3
+ #
4
+ # make all-mo (default) - generate MO files
5
+ # make check - check translations using translate-tool
6
+ # make tx-update - download and merge translations from Transifex
7
+ # make clean - clean everything
8
+ #
9
+ DOMAIN = foreman_m2
10
+ VERSION = $(shell ruby -e 'require "rubygems";spec = Gem::Specification::load(Dir.glob("../*.gemspec")[0]);puts spec.version')
11
+ POTFILE = $(DOMAIN).pot
12
+ MOFILE = $(DOMAIN).mo
13
+ POFILES = $(shell find . -name '$(DOMAIN).po')
14
+ MOFILES = $(patsubst %.po,%.mo,$(POFILES))
15
+ POXFILES = $(patsubst %.po,%.pox,$(POFILES))
16
+ EDITFILES = $(patsubst %.po,%.edit.po,$(POFILES))
17
+
18
+ %.mo: %.po
19
+ mkdir -p $(shell dirname $@)/LC_MESSAGES
20
+ msgfmt -o $(shell dirname $@)/LC_MESSAGES/$(MOFILE) $<
21
+
22
+ # Generate MO files from PO files
23
+ all-mo: $(MOFILES)
24
+
25
+ # Check for malformed strings
26
+ %.pox: %.po
27
+ msgfmt -c $<
28
+ pofilter --nofuzzy -t variables -t blank -t urls -t emails -t long -t newlines \
29
+ -t endwhitespace -t endpunc -t puncspacing -t options -t printf -t validchars --gnome $< > $@
30
+ cat $@
31
+ ! grep -q msgid $@
32
+
33
+ %.edit.po:
34
+ touch $@
35
+
36
+ check: $(POXFILES)
37
+
38
+ # Unify duplicate translations
39
+ uniq-po:
40
+ for f in $(shell find ./ -name "*.po") ; do \
41
+ msguniq $$f -o $$f ; \
42
+ done
43
+
44
+ tx-pull: $(EDITFILES)
45
+ tx pull -f
46
+ for f in $(EDITFILES) ; do \
47
+ sed -i 's/^\("Project-Id-Version: \).*$$/\1$(DOMAIN) $(VERSION)\\n"/' $$f; \
48
+ done
49
+
50
+ tx-update: tx-pull
51
+ @echo
52
+ @echo Run rake plugin:gettext[$(DOMAIN)] from the Foreman installation, then make -C locale mo-files to finish
53
+ @echo
54
+
55
+ mo-files: $(MOFILES)
56
+ git add $(POFILES) $(POTFILE) ../locale/*/LC_MESSAGES
57
+ git commit -m "i18n - pulling from tx"
58
+ @echo
59
+ @echo Changes commited!
60
+ @echo
@@ -0,0 +1,19 @@
1
+ # foreman_m2
2
+ #
3
+ # This file is distributed under the same license as foreman_m2.
4
+ #
5
+ #, fuzzy
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: version 0.0.1\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2014-08-20 08:46+0100\n"
11
+ "PO-Revision-Date: 2014-08-20 08:54+0100\n"
12
+ "Last-Translator: Foreman Team <foreman-dev@googlegroups.com>\n"
13
+ "Language-Team: Foreman Team <foreman-dev@googlegroups.com>\n"
14
+ "Language: \n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=UTF-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
+
@@ -0,0 +1,19 @@
1
+ # foreman_m2
2
+ #
3
+ # This file is distributed under the same license as foreman_m2.
4
+ #
5
+ #, fuzzy
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: version 0.0.1\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2014-08-20 08:46+0100\n"
11
+ "PO-Revision-Date: 2014-08-20 08:46+0100\n"
12
+ "Last-Translator: Foreman Team <foreman-dev@googlegroups.com>\n"
13
+ "Language-Team: Foreman Team <foreman-dev@googlegroups.com>\n"
14
+ "Language: \n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=UTF-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
19
+
data/locale/gemspec.rb ADDED
@@ -0,0 +1,2 @@
1
+ # Matches foreman_m2.gemspec
2
+ _('TODO: Description of ForemanM2.')
@@ -0,0 +1,2 @@
1
+ FactoryBot.define do
2
+ end
@@ -0,0 +1,7 @@
1
+ # This calls the main test_helper in Foreman-core
2
+ require 'test_helper'
3
+
4
+ # Add plugin to FactoryBot's paths
5
+ FactoryBot.definition_file_paths <<
6
+ File.join(File.dirname(__FILE__), 'factories')
7
+ FactoryBot.reload
@@ -0,0 +1,11 @@
1
+ require 'test_plugin_helper'
2
+
3
+ class ForemanM2Test < ActiveSupport::TestCase
4
+ setup do
5
+ User.current = User.find_by login: 'admin'
6
+ end
7
+
8
+ test 'the truth' do
9
+ assert true
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: foreman_m2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ian Ballou
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-09-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rdoc
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
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: deface
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: M2 bare metal provisioning plugin for Foreman
56
+ email:
57
+ - iballou@redhat.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - LICENSE
63
+ - README.md
64
+ - Rakefile
65
+ - app/controllers/foreman_m2/hosts_controller.rb
66
+ - app/helpers/concerns/foreman_m2/hosts_helper_extensions.rb
67
+ - app/helpers/concerns/foreman_m2/images_helper_extensions.rb
68
+ - app/lib/proxy_api/m2.rb
69
+ - app/models/concerns/foreman_m2/compute_resource_extensions.rb
70
+ - app/models/concerns/foreman_m2/host_extensions.rb
71
+ - app/models/concerns/foreman_m2/host_orchestration_extensions.rb
72
+ - app/models/concerns/foreman_m2/nic_extensions.rb
73
+ - app/models/concerns/foreman_m2/nic_orchestration_extensions.rb
74
+ - app/models/foreman_m2/m2.rb
75
+ - app/overrides/give_ids.rb
76
+ - app/overrides/hybrid_js.rb
77
+ - app/overrides/update_media_selection.rb
78
+ - app/views/compute_resources/edit/_m2.html.erb
79
+ - app/views/compute_resources/form/_m2.html.erb
80
+ - app/views/compute_resources/show/_m2.html.erb
81
+ - app/views/compute_resources_vms/form/m2/_base.html.erb
82
+ - app/views/dashboard/_foreman_m2_widget.erb
83
+ - app/views/foreman_m2/hosts/hosts/new_action.html.erb
84
+ - app/views/foreman_m2/hosts/new_action.html.erb
85
+ - app/views/foreman_m2/layouts/layouts/new_layout.html.erb
86
+ - app/views/foreman_m2/layouts/new_layout.html.erb
87
+ - app/views/hosts/provisioning_method/hybrid/_form.html.erb
88
+ - app/views/images/form/_m2.html.erb
89
+ - app/views/overrides/host_creation/_add_bm_div.html.erb
90
+ - app/views/overrides/host_creation/_add_hybrid_js.html.erb
91
+ - app/views/overrides/host_creation/_add_ptable_div.html.erb
92
+ - app/views/overrides/image_selection/_host_media_type_select.html.erb
93
+ - app/views/unattended/provisioning_templates/PXELinux/m2_default_pxelinux.erb
94
+ - app/views/unattended/provisioning_templates/iPXE/m2_default_ipxe.erb
95
+ - config/routes.rb
96
+ - db/seeds.d/071-m2_prov_templates.rb
97
+ - db/seeds.d/111-m2_sp_features.rb
98
+ - lib/foreman_m2.rb
99
+ - lib/foreman_m2/engine.rb
100
+ - lib/foreman_m2/version.rb
101
+ - lib/tasks/foreman_m2_tasks.rake
102
+ - locale/Makefile
103
+ - locale/en/foreman_m2.po
104
+ - locale/foreman_m2.pot
105
+ - locale/gemspec.rb
106
+ - test/factories/foreman_m2_factories.rb
107
+ - test/test_plugin_helper.rb
108
+ - test/unit/foreman_m2_test.rb
109
+ homepage: https://github.com/ianballou/foreman_m2
110
+ licenses:
111
+ - GPL-3.0
112
+ metadata: {}
113
+ post_install_message:
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubyforge_project:
129
+ rubygems_version: 2.6.14
130
+ signing_key:
131
+ specification_version: 4
132
+ summary: M2 bare metal provisioning plugin for Foreman
133
+ test_files:
134
+ - test/test_plugin_helper.rb
135
+ - test/unit/foreman_m2_test.rb
136
+ - test/factories/foreman_m2_factories.rb