foreman_discovery 22.0.2 → 23.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/app/assets/javascripts/foreman_discovery/locale/ca/foreman_discovery.js +847 -0
- data/app/assets/javascripts/foreman_discovery/locale/cs_CZ/foreman_discovery.js +847 -0
- data/app/assets/javascripts/foreman_discovery/locale/de/foreman_discovery.js +847 -0
- data/app/assets/javascripts/foreman_discovery/locale/en/foreman_discovery.js +846 -0
- data/app/assets/javascripts/foreman_discovery/locale/en_GB/foreman_discovery.js +847 -0
- data/app/assets/javascripts/foreman_discovery/locale/es/foreman_discovery.js +850 -0
- data/app/assets/javascripts/foreman_discovery/locale/fr/foreman_discovery.js +850 -0
- data/app/assets/javascripts/foreman_discovery/locale/gl/foreman_discovery.js +847 -0
- data/app/assets/javascripts/foreman_discovery/locale/it/foreman_discovery.js +847 -0
- data/app/assets/javascripts/foreman_discovery/locale/ja/foreman_discovery.js +844 -0
- data/app/assets/javascripts/foreman_discovery/locale/ka/foreman_discovery.js +847 -0
- data/app/assets/javascripts/foreman_discovery/locale/ko/foreman_discovery.js +847 -0
- data/app/assets/javascripts/foreman_discovery/locale/pt_BR/foreman_discovery.js +850 -0
- data/app/assets/javascripts/foreman_discovery/locale/ru/foreman_discovery.js +851 -0
- data/app/assets/javascripts/foreman_discovery/locale/sv_SE/foreman_discovery.js +847 -0
- data/app/assets/javascripts/foreman_discovery/locale/zh_CN/foreman_discovery.js +844 -0
- data/app/assets/javascripts/foreman_discovery/locale/zh_TW/foreman_discovery.js +847 -0
- data/app/controllers/discovered_hosts_controller.rb +5 -1
- data/app/helpers/discovered_hosts_helper.rb +9 -2
- data/app/models/host/discovered.rb +3 -3
- data/app/services/foreman_discovery/import_hooks/lock_templates.rb +1 -1
- data/app/services/foreman_discovery/node_api/node_resource.rb +5 -5
- data/app/services/foreman_discovery/ui_notifications/failed_discovery.rb +1 -1
- data/app/views/discovered_hosts/_discovered_host.html.erb +1 -1
- data/app/views/discovered_hosts/_discovered_hosts_list.html.erb +1 -1
- data/db/migrate/20221102065954_fix_discovery_settings_category_to_dsl.rb +1 -1
- data/db/migrate/20221102075151_migrate_discovery_hostname_and_fact_column_to_array.rb +13 -0
- data/extra/discover-host +1 -1
- data/lib/foreman_discovery/engine.rb +8 -20
- data/lib/foreman_discovery/version.rb +1 -1
- data/locale/ca/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ca/foreman_discovery.edit.po +1122 -0
- data/locale/ca/foreman_discovery.po +22 -10
- data/locale/cs_CZ/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/cs_CZ/foreman_discovery.edit.po +1120 -0
- data/locale/cs_CZ/foreman_discovery.po +846 -0
- data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/de/foreman_discovery.edit.po +1129 -0
- data/locale/de/foreman_discovery.po +22 -10
- data/locale/en/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en/foreman_discovery.edit.po +1115 -0
- data/locale/en/foreman_discovery.po +19 -7
- data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en_GB/foreman_discovery.edit.po +1125 -0
- data/locale/en_GB/foreman_discovery.po +22 -10
- data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/es/foreman_discovery.edit.po +1130 -0
- data/locale/es/foreman_discovery.po +81 -65
- data/locale/foreman_discovery.pot +231 -211
- data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/fr/foreman_discovery.edit.po +1126 -0
- data/locale/fr/foreman_discovery.po +35 -19
- data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/gl/foreman_discovery.edit.po +1120 -0
- data/locale/gl/foreman_discovery.po +19 -7
- data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/it/foreman_discovery.edit.po +1123 -0
- data/locale/it/foreman_discovery.po +21 -8
- data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ja/foreman_discovery.edit.po +1119 -0
- data/locale/ja/foreman_discovery.po +34 -22
- data/locale/ka/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ka/foreman_discovery.edit.po +1120 -0
- data/locale/ka/foreman_discovery.po +846 -0
- data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ko/foreman_discovery.edit.po +1119 -0
- data/locale/ko/foreman_discovery.po +20 -8
- data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/pt_BR/foreman_discovery.edit.po +1132 -0
- data/locale/pt_BR/foreman_discovery.po +61 -45
- data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ru/foreman_discovery.edit.po +1131 -0
- data/locale/ru/foreman_discovery.po +21 -9
- data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/sv_SE/foreman_discovery.edit.po +1123 -0
- data/locale/sv_SE/foreman_discovery.po +19 -7
- data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_CN/foreman_discovery.edit.po +1117 -0
- data/locale/zh_CN/foreman_discovery.po +31 -19
- data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_TW/foreman_discovery.edit.po +1120 -0
- data/locale/zh_TW/foreman_discovery.po +19 -7
- data/package.json +0 -1
- data/test/functional/api/v2/fact_value_extensions_test.rb +1 -1
- data/test/functional/discovered_hosts_controller_test.rb +1 -1
- data/test/migrations/20221102075151_migrate_discovery_hostname_and_fact_column_to_array_test.rb +75 -0
- data/test/migrations/20221102075151_migrate_discovery_hostname_and_fact_column_to_array_test.rb.orig +81 -0
- data/test/test_helper_discovery.rb +1 -1
- data/test/unit/discovery_attribute_set_test.rb +1 -1
- data/test/unit/host_discovered_test.rb +3 -3
- data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/EmptyState/EmptyState.js +1 -1
- metadata +50 -8
- data/app/models/setting/discovered.rb +0 -22
@@ -35,7 +35,7 @@ class DiscoveredHostsController < ::ApplicationController
|
|
35
35
|
:discovery_attribute_set
|
36
36
|
], {:interfaces => :subnet})
|
37
37
|
fact_array = @hosts.collect do |host|
|
38
|
-
[host.id, Hash[host.fact_values.joins(:fact_name).where('fact_names.name' => Setting
|
38
|
+
[host.id, Hash[host.fact_values.joins(:fact_name).where('fact_names.name' => Setting['discovery_fact_column']).pluck(:name, :value)]]
|
39
39
|
end
|
40
40
|
@host_facts = Hash[fact_array]
|
41
41
|
end
|
@@ -198,6 +198,10 @@ class DiscoveredHostsController < ::ApplicationController
|
|
198
198
|
end
|
199
199
|
end
|
200
200
|
|
201
|
+
def resource_class
|
202
|
+
Host::Discovered
|
203
|
+
end
|
204
|
+
|
201
205
|
private
|
202
206
|
|
203
207
|
def setup_host_class_variables
|
@@ -94,8 +94,15 @@ module DiscoveredHostsHelper
|
|
94
94
|
end
|
95
95
|
|
96
96
|
def host_path(host)
|
97
|
-
return
|
98
|
-
|
97
|
+
return discovered_host_path(host) if controller_name == 'discovered_hosts'
|
98
|
+
# This is a hack to fix the hostgroup selection on the discovered host edit page
|
99
|
+
# The hostgroup onChange action is replacing the form url from `/discovered_hosts/:id`
|
100
|
+
# to `/hosts/:id``, which is not correct (in this case) and it breaks the form submission
|
101
|
+
return discovered_host_path(host) if controller_name == 'hosts' &&
|
102
|
+
action_name == 'process_hostgroup' &&
|
103
|
+
Host::Discovered.find_by(id: host[:id])
|
104
|
+
|
105
|
+
super
|
99
106
|
end
|
100
107
|
|
101
108
|
def discovery_doc_version
|
@@ -63,15 +63,15 @@ class Host::Discovered < ::Host::Base
|
|
63
63
|
bootif_mac = FacterUtils::bootif_mac(facts).try(:downcase)
|
64
64
|
hostname = ''
|
65
65
|
if Setting[:discovery_naming] == 'MAC-name'
|
66
|
-
hostname_mac = return_first_valid_mac(Setting
|
66
|
+
hostname_mac = return_first_valid_mac(Setting['discovery_hostname'], facts) || bootif_mac
|
67
67
|
hostname = NameGenerator.new.generate_next_mac_name(hostname_mac)
|
68
68
|
elsif Setting[:discovery_naming] == 'Random-name'
|
69
69
|
hostname = NameGenerator.new.generate_next_random_name
|
70
70
|
else
|
71
71
|
prefix_from_settings = Setting[:discovery_prefix]
|
72
72
|
hostname_prefix = prefix_from_settings if prefix_from_settings.present? && prefix_from_settings.match(/^[a-zA-Z].*/)
|
73
|
-
name_fact = return_first_valid_fact(Setting
|
74
|
-
raise(::Foreman::Exception.new(N_("Invalid facts: hash does not contain a valid value for any of the facts in the discovery_hostname setting: %s"), Setting
|
73
|
+
name_fact = return_first_valid_fact(Setting['discovery_hostname'], facts)
|
74
|
+
raise(::Foreman::Exception.new(N_("Invalid facts: hash does not contain a valid value for any of the facts in the discovery_hostname setting: %s"), Setting['discovery_hostname'].join(', '))) unless name_fact && name_fact.present?
|
75
75
|
hostname = normalize_string_for_hostname("#{hostname_prefix}#{name_fact}")
|
76
76
|
end
|
77
77
|
Rails.logger.warn "Hostname does not start with an alphabetical character" unless hostname.downcase.match(/^[a-z]/)
|
@@ -3,7 +3,7 @@ module ForemanDiscovery
|
|
3
3
|
module ImportHooks
|
4
4
|
class LockTemplates < ImportHook
|
5
5
|
def after_populate
|
6
|
-
lock_templates if Setting
|
6
|
+
lock_templates if Setting['discovery_lock'] && host.subnet.tftp?
|
7
7
|
end
|
8
8
|
|
9
9
|
def lock_templates
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module ForemanDiscovery::NodeAPI
|
2
2
|
class NodeResource
|
3
3
|
def initialize(args)
|
4
|
-
raise ArgumentError, "Options must be hash" unless args.is_a?(Hash)
|
5
|
-
raise ArgumentError, "Option 'url' must be provided" unless args[:url]
|
4
|
+
raise ArgumentError, _("Options must be hash") unless args.is_a?(Hash)
|
5
|
+
raise ArgumentError, _("Option 'url' must be provided") unless args[:url]
|
6
6
|
@args = args
|
7
7
|
@connect_params = {
|
8
8
|
:headers => { :accept => :json },
|
@@ -38,19 +38,19 @@ module ForemanDiscovery::NodeAPI
|
|
38
38
|
def scheme
|
39
39
|
URI.parse(url).scheme
|
40
40
|
rescue Exception => e
|
41
|
-
raise ArgumentError, "Option 'url' must be valid URI:
|
41
|
+
raise ArgumentError, _("Option 'url' must be valid URI: %s") % e
|
42
42
|
end
|
43
43
|
|
44
44
|
def port
|
45
45
|
URI.parse(url).port
|
46
46
|
rescue Exception => e
|
47
|
-
raise ArgumentError, "Option 'url' must be valid URI:
|
47
|
+
raise ArgumentError, _("Option 'url' must be valid URI: %s") % e
|
48
48
|
end
|
49
49
|
|
50
50
|
def root_path
|
51
51
|
URI.parse(url).path
|
52
52
|
rescue Exception => e
|
53
|
-
raise ArgumentError, "Option 'url' must be valid URI:
|
53
|
+
raise ArgumentError, _("Option 'url' must be valid URI: %s") % e
|
54
54
|
end
|
55
55
|
|
56
56
|
def is_proxy?
|
@@ -21,7 +21,7 @@ module ForemanDiscovery
|
|
21
21
|
Notification.create!(
|
22
22
|
initiator: initiator,
|
23
23
|
audience: ::Notification::AUDIENCE_ADMIN,
|
24
|
-
message: _("One or more hosts with failed discovery due to error:
|
24
|
+
message: _("One or more hosts with failed discovery due to error: %s") % @message,
|
25
25
|
notification_blueprint: blueprint,
|
26
26
|
)
|
27
27
|
end
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<td class="hidden-tablet hidden-xs"><%= discovery_attribute(host, :disk_count) %></td>
|
7
7
|
<td class="hidden-tablet hidden-xs"><%= number_to_human_size(discovery_attribute(host, :disks_size, 0) * 1024 * 1024) %></td>
|
8
8
|
<%
|
9
|
-
Setting
|
9
|
+
Setting['discovery_fact_column'].each do |name|
|
10
10
|
%>
|
11
11
|
<td class="hidden-tablet hidden-xs"><%= @host_facts[host.id][name] || 'N/A' %></td>
|
12
12
|
<% end %>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<th class="hidden-tablet hidden-xs"><%= sort :memory, :as => _('Memory') %></th>
|
11
11
|
<th class="hidden-tablet hidden-xs"><%= sort :disk_count, :as => _('Disk Count') %></th>
|
12
12
|
<th class="hidden-tablet hidden-xs"><%= sort :disks_size, :as => _('Disks Size') %></th>
|
13
|
-
<% Setting
|
13
|
+
<% Setting['discovery_fact_column'].each do |fact_column| %>
|
14
14
|
<th class="hidden-tablet hidden-xs"><%= fact_column.capitalize %></th>
|
15
15
|
<% end %>
|
16
16
|
<th class="hidden-tablet hidden-xs"><%= sort :location, :as => _('Location') %></th>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
class FixDiscoverySettingsCategoryToDsl < ActiveRecord::Migration[6.0]
|
4
4
|
def up
|
5
5
|
# rubocop:disable Rails/SkipsModelValidations
|
6
|
-
Setting.where(category: 'Setting::Discovered').update_all(category: 'Setting')
|
6
|
+
Setting.where(category: 'Setting::Discovered').update_all(category: 'Setting') if column_exists?(:settings, :category)
|
7
7
|
# rubocop:enable Rails/SkipsModelValidations
|
8
8
|
end
|
9
9
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class MigrateDiscoveryHostnameAndFactColumnToArray < ActiveRecord::Migration[6.0]
|
4
|
+
def up
|
5
|
+
['discovery_hostname', 'discovery_fact_column'].each do |setting_name|
|
6
|
+
setting = Setting.find_by(name: setting_name)
|
7
|
+
if !setting.nil? && setting.value.is_a?(String)
|
8
|
+
setting.value = setting.value.split(",").map(&:strip)
|
9
|
+
setting.save
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/extra/discover-host
CHANGED
@@ -6,7 +6,7 @@ require 'rest-client'
|
|
6
6
|
def find_base name = "default"
|
7
7
|
return name if File.exist?(name)
|
8
8
|
|
9
|
-
file = File.absolute_path(File.dirname(__FILE__) + "
|
9
|
+
file = File.absolute_path(File.dirname(__FILE__) + "/../test/facts/#{name}.json")
|
10
10
|
raise "Unable to find file #{file}" unless File.exist?(file)
|
11
11
|
|
12
12
|
file
|
@@ -15,25 +15,12 @@ module ForemanDiscovery
|
|
15
15
|
config.autoload_paths += Dir["#{config.root}/app/models/concerns"]
|
16
16
|
config.autoload_paths += Dir["#{config.root}/app/services"]
|
17
17
|
|
18
|
-
# Load this before the Foreman config initializers, so that the Setting.descendants
|
19
|
-
# list includes the plugin STI setting class
|
20
|
-
initializer 'foreman_discovery.load_default_settings', :before => :load_config_initializers do |app|
|
21
|
-
require_dependency File.expand_path("../../../app/models/setting/discovered.rb", __FILE__) if (Setting.table_exists? rescue(false))
|
22
|
-
end
|
23
|
-
|
24
18
|
initializer "foreman_discovery.add_rabl_view_path" do |app|
|
25
19
|
Rabl.configure do |config|
|
26
20
|
config.view_paths << ForemanDiscovery::Engine.root.join('app', 'views')
|
27
21
|
end
|
28
22
|
end
|
29
23
|
|
30
|
-
initializer 'foreman_discovery.register_gettext', :after => :load_config_initializers do |app|
|
31
|
-
locale_dir = File.join(File.expand_path('../../..', __FILE__), 'locale')
|
32
|
-
locale_domain = 'foreman_discovery'
|
33
|
-
|
34
|
-
Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
|
35
|
-
end
|
36
|
-
|
37
24
|
# Add any db migrations
|
38
25
|
initializer "foreman_discovery.load_app_instance_data" do |app|
|
39
26
|
ForemanDiscovery::Engine.paths['db/migrate'].existent.each do |path|
|
@@ -43,7 +30,8 @@ module ForemanDiscovery
|
|
43
30
|
|
44
31
|
initializer 'foreman_discovery.register_plugin', :before => :finisher_hook do |app|
|
45
32
|
Foreman::Plugin.register :foreman_discovery do
|
46
|
-
requires_foreman '>= 3.
|
33
|
+
requires_foreman '>= 3.8'
|
34
|
+
register_gettext
|
47
35
|
|
48
36
|
# settings
|
49
37
|
settings do
|
@@ -85,10 +73,10 @@ module ForemanDiscovery
|
|
85
73
|
description: N_("Clean all reported facts during provisioning (except discovery facts)")
|
86
74
|
|
87
75
|
setting "discovery_hostname",
|
88
|
-
type: :
|
89
|
-
default: "discovery_bootif",
|
76
|
+
type: :array,
|
77
|
+
default: ["discovery_bootif"],
|
90
78
|
full_name: N_("Hostname facts"),
|
91
|
-
description: N_("List of facts to use for the hostname (
|
79
|
+
description: N_("List of facts to use for the hostname (first wins)")
|
92
80
|
|
93
81
|
validates "discovery_hostname", presence: true
|
94
82
|
|
@@ -113,10 +101,10 @@ module ForemanDiscovery
|
|
113
101
|
validates "discovery_prefix", presence: true
|
114
102
|
|
115
103
|
setting "discovery_fact_column",
|
116
|
-
type: :
|
117
|
-
default:
|
104
|
+
type: :array,
|
105
|
+
default: [],
|
118
106
|
full_name: N_("Fact columns"),
|
119
|
-
description: N_("Extra facter columns to show in host lists
|
107
|
+
description: N_("Extra facter columns to show in host lists")
|
120
108
|
|
121
109
|
setting "discovery_facts_highlights",
|
122
110
|
type: :string,
|
Binary file
|