foreman_discovery 20.0.0 → 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 +4 -4
- data/app/models/host/discovered.rb +10 -1
- data/app/models/setting/discovered.rb +1 -43
- data/app/services/foreman_discovery/host_converter.rb +9 -2
- data/app/views/foreman_discovery/debian_kexec.erb +14 -13
- data/app/views/foreman_discovery/redhat_kexec.erb +16 -15
- data/lib/foreman_discovery/engine.rb +195 -32
- data/lib/foreman_discovery/version.rb +1 -1
- data/locale/ca/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ca/foreman_discovery.po +17 -11
- data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/de/foreman_discovery.po +9 -3
- data/locale/en/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en/foreman_discovery.po +7 -1
- data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en_GB/foreman_discovery.po +9 -3
- data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/es/foreman_discovery.po +9 -3
- data/locale/foreman_discovery.pot +23 -9
- data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/fr/foreman_discovery.po +39 -33
- data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/gl/foreman_discovery.po +19 -13
- data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/it/foreman_discovery.po +9 -3
- data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ja/foreman_discovery.po +11 -5
- data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ko/foreman_discovery.po +9 -3
- data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/pt_BR/foreman_discovery.po +9 -3
- data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ru/foreman_discovery.po +9 -3
- data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/sv_SE/foreman_discovery.po +19 -13
- data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_CN/foreman_discovery.po +11 -5
- data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_TW/foreman_discovery.po +9 -3
- data/package.json +5 -7
- data/test/unit/discovered_extensions_test.rb +14 -1
- data/test/unit/host_discovered_test.rb +7 -1
- data/test/unit/managed_extensions_test.rb +1 -1
- metadata +13 -27
- data/locale/ca/foreman_discovery.edit.po +0 -1099
- data/locale/de/foreman_discovery.edit.po +0 -1106
- data/locale/en/foreman_discovery.edit.po +0 -1091
- data/locale/en_GB/foreman_discovery.edit.po +0 -1102
- data/locale/es/foreman_discovery.edit.po +0 -1103
- data/locale/fr/foreman_discovery.edit.po +0 -1099
- data/locale/gl/foreman_discovery.edit.po +0 -1097
- data/locale/it/foreman_discovery.edit.po +0 -1099
- data/locale/ja/foreman_discovery.edit.po +0 -1096
- data/locale/ko/foreman_discovery.edit.po +0 -1096
- data/locale/messages.mo +0 -0
- data/locale/pt_BR/foreman_discovery.edit.po +0 -1105
- data/locale/ru/foreman_discovery.edit.po +0 -1108
- data/locale/sv_SE/foreman_discovery.edit.po +0 -1100
- data/locale/zh_CN/foreman_discovery.edit.po +0 -1094
- data/locale/zh_TW/foreman_discovery.edit.po +0 -1097
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dbc5abad67ec340bdfe3ed25013bd59afd164c5aa5b71197cf115fca531f07f8
|
|
4
|
+
data.tar.gz: ba6b00159de292b52754d70bab8a79bbd0b77e29f7cba34e2e6e16ab6a5f05a6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c812aab3400e97c3b25523cc6bb7bd118e86a0c6c71383275f442e3c49f71d6a87d6a3f413b9ac5e3b0278d8e8fd7c3cd535bf9dcfc6e2f033433d674f1dcb46
|
|
7
|
+
data.tar.gz: f8f22a7eecfa7cdb30f22e691b8433983719d8449b71d9330c6fbf8bfe4240359846b701b71456b46d3b5acca469c65062f4ca57d608913d4ca15fcb16b99352
|
|
@@ -63,7 +63,8 @@ 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
|
-
|
|
66
|
+
hostname_mac = return_first_valid_mac(Setting::Discovered.discovery_hostname_fact_array, facts) || bootif_mac
|
|
67
|
+
hostname = NameGenerator.new.generate_next_mac_name(hostname_mac)
|
|
67
68
|
elsif Setting[:discovery_naming] == 'Random-name'
|
|
68
69
|
hostname = NameGenerator.new.generate_next_random_name
|
|
69
70
|
else
|
|
@@ -226,6 +227,14 @@ class Host::Discovered < ::Host::Base
|
|
|
226
227
|
hostname
|
|
227
228
|
end
|
|
228
229
|
|
|
230
|
+
def self.return_first_valid_mac(facts_array, facts)
|
|
231
|
+
return facts[facts_array] if !facts_array.is_a?(Array)
|
|
232
|
+
facts_array.each do |value|
|
|
233
|
+
return facts[value] if !facts[value].nil? && facts[value].match(/([0-9A-Fa-f]{2}:){5}([0-9A-Fa-f]{2})/)
|
|
234
|
+
end
|
|
235
|
+
return nil
|
|
236
|
+
end
|
|
237
|
+
|
|
229
238
|
def self.return_first_valid_fact(facts_array, facts)
|
|
230
239
|
return facts[facts_array] if !facts_array.is_a?(Array)
|
|
231
240
|
facts_array.each do |value|
|
|
@@ -1,46 +1,4 @@
|
|
|
1
|
-
class Setting::Discovered
|
|
2
|
-
BLANK_ATTRS << "discovery_location"
|
|
3
|
-
BLANK_ATTRS << "discovery_organization"
|
|
4
|
-
BLANK_ATTRS << "discovery_fact_column"
|
|
5
|
-
BLANK_ATTRS << 'discovery_facts_highlights'
|
|
6
|
-
BLANK_ATTRS << 'discovery_facts_storage'
|
|
7
|
-
BLANK_ATTRS << 'discovery_facts_software'
|
|
8
|
-
BLANK_ATTRS << 'discovery_facts_hardware'
|
|
9
|
-
BLANK_ATTRS << 'discovery_facts_network'
|
|
10
|
-
BLANK_ATTRS << 'discovery_facts_ipmi'
|
|
11
|
-
|
|
12
|
-
STRING_PRESENCE_ATTRS = ['discovery_hostname', 'discovery_prefix']
|
|
13
|
-
validates :value, :presence => true, :if => proc { |s| STRING_PRESENCE_ATTRS.include?(s.name) }
|
|
14
|
-
|
|
15
|
-
def self.default_settings
|
|
16
|
-
[
|
|
17
|
-
self.set('discovery_location', N_("The default location to place discovered hosts in"), "", N_("Discovery location"), nil, { :collection => Proc.new {Hash[Location.all.map{|loc| [loc[:title], loc[:title]]}]} }),
|
|
18
|
-
self.set('discovery_organization', N_("The default organization to place discovered hosts in"), "", N_("Discovery organization"), nil, { :collection => Proc.new {Hash[Organization.all.map{|org| [org[:title], org[:title]]}]} }),
|
|
19
|
-
self.set('discovery_fact', N_("Fact name to use for primary interface detection"), "discovery_bootif", N_("Interface fact")),
|
|
20
|
-
self.set('discovery_auto_bond', N_("Automatic bond interface (if another interface is detected on the same VLAN via LLDP)"), false, N_("Create bond interfaces")),
|
|
21
|
-
self.set('discovery_clean_facts', N_("Clean all reported facts during provisioning (except discovery facts)"), false, N_("Clean all facts")),
|
|
22
|
-
self.set('discovery_hostname', N_("List of facts to use for the hostname (separated by comma, first wins)"), "discovery_bootif", N_("Hostname facts")),
|
|
23
|
-
self.set('discovery_auto', N_("Automatically provision newly discovered hosts, according to the provisioning rules"), false, N_("Auto provisioning")),
|
|
24
|
-
self.set('discovery_reboot', N_("Automatically reboot or kexec discovered host during provisioning"), true, N_("Reboot")),
|
|
25
|
-
self.set('discovery_prefix', N_("The default prefix to use for the host name, must start with a letter"), "mac", N_("Hostname prefix")),
|
|
26
|
-
self.set('discovery_fact_column', N_("Extra facter columns to show in host lists (separate by comma)"), "", N_("Fact columns")),
|
|
27
|
-
self.set('discovery_facts_highlights', N_("Regex to organize facts for highlights section - e.g. ^(abc|cde)$"), "", N_("Highlighted facts")),
|
|
28
|
-
self.set('discovery_facts_storage', N_("Regex to organize facts for storage section"), "", N_("Storage facts")),
|
|
29
|
-
self.set('discovery_facts_software', N_("Regex to organize facts for software section"), "", N_("Software facts")),
|
|
30
|
-
self.set('discovery_facts_hardware', N_("Regex to organize facts for hardware section"), "", N_("Hardware facts")),
|
|
31
|
-
self.set('discovery_facts_network', N_("Regex to organize facts for network section"), "", N_("Network facts")),
|
|
32
|
-
self.set('discovery_facts_ipmi', N_("Regex to organize facts for ipmi section"), "", N_("IPMI facts")),
|
|
33
|
-
self.set('discovery_lock', N_("Automatically generate PXE configuration to pin a newly discovered host to discovery"), false, N_("Lock PXE")),
|
|
34
|
-
self.set('discovery_pxelinux_lock_template', N_("PXELinux template to be used when pinning a host to discovery"), 'pxelinux_discovery', N_("Locked PXELinux template name"), nil, { :collection => Proc.new {Hash[ProvisioningTemplate.where(:template_kind => TemplateKind.find_by_name(:snippet)).map{|template| [template[:name], template[:name]]}]} }),
|
|
35
|
-
self.set('discovery_pxegrub_lock_template', N_("PXEGrub template to be used when pinning a host to discovery"), 'pxegrub_discovery', N_("Locked PXEGrub template name"), nil, { :collection => Proc.new {Hash[ProvisioningTemplate.where(:template_kind => TemplateKind.find_by_name(:snippet)).map{|template| [template[:name], template[:name]]}]} }),
|
|
36
|
-
self.set('discovery_pxegrub2_lock_template', N_("PXEGrub2 template to be used when pinning a host to discovery"), 'pxegrub2_discovery', N_("Locked PXEGrub2 template name"), nil, { :collection => Proc.new {Hash[ProvisioningTemplate.where(:template_kind => TemplateKind.find_by_name(:snippet)).map{|template| [template[:name], template[:name]]}]} }),
|
|
37
|
-
self.set('discovery_always_rebuild_dns', N_("Force DNS entries creation when provisioning discovered host"), true, N_("Force DNS")),
|
|
38
|
-
self.set('discovery_error_on_existing', N_("Do not allow to discover existing managed host matching MAC of a provisioning NIC (errors out early)"), false, N_("Error on existing NIC")),
|
|
39
|
-
self.set('discovery_naming', N_("Discovery hostname naming pattern"), 'Fact', N_("Type of name generator"), nil, {:collection => Proc.new {::Host::Discovered::NAMING_PATTERNS} }),
|
|
40
|
-
self.set('discovery_prefer_ipv6', N_("Prefer IPv6 to IPv4 when calling discovered nodes"), false, N_("Prefer IPv6")),
|
|
41
|
-
]
|
|
42
|
-
end
|
|
43
|
-
|
|
1
|
+
class Setting::Discovered
|
|
44
2
|
def self.discovery_fact_column_array
|
|
45
3
|
from_array(Setting['discovery_fact_column'])
|
|
46
4
|
end
|
|
@@ -52,14 +52,21 @@ class ForemanDiscovery::HostConverter
|
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
+
def self.ip_for_subnet(subnet, mac, ip)
|
|
56
|
+
return ip if ip && subnet&.unused_ip(mac)&.ip_include?(ip)
|
|
57
|
+
|
|
58
|
+
unused_ip_for_subnet(subnet, mac, ip)
|
|
59
|
+
end
|
|
60
|
+
|
|
55
61
|
def self.unused_ip_for_host(host, new_subnet = nil, new_subnet6 = nil)
|
|
56
62
|
host.interfaces.each do |interface|
|
|
57
63
|
next unless interface.managed?
|
|
58
64
|
|
|
59
65
|
interface.subnet = new_subnet if new_subnet
|
|
60
66
|
interface.subnet6 = new_subnet6 if new_subnet6
|
|
61
|
-
|
|
62
|
-
interface.
|
|
67
|
+
|
|
68
|
+
interface.ip = ip_for_subnet(interface.subnet, interface.mac, interface.ip) if interface.subnet
|
|
69
|
+
interface.ip6 = ip_for_subnet(interface.subnet6, interface.mac, interface.ip6) if interface.subnet6
|
|
63
70
|
end
|
|
64
71
|
end
|
|
65
72
|
|
|
@@ -4,18 +4,17 @@ name: Discovery Debian kexec
|
|
|
4
4
|
oses:
|
|
5
5
|
- Debian
|
|
6
6
|
- Ubuntu
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
Extra options like --reset-vga can be set via "extra" array.
|
|
7
|
+
description: |
|
|
8
|
+
This template is used to pass command line options to kexec when reloading
|
|
9
|
+
kernel on a discovered host instead of rebooting. This is useful in PXE-less
|
|
10
|
+
environments. The template must generate JSON format with the following items
|
|
11
|
+
"kernel", "initram", "append" and "extra". The kexec command is composed in
|
|
12
|
+
the following way:
|
|
13
|
+
|
|
14
|
+
kexec --force --debug --append=$append --initrd=$initram $extra $kernel
|
|
15
|
+
|
|
16
|
+
Please read kexec(8) man page for more information about semantics.
|
|
17
|
+
Extra options like --reset-vga can be set via "extra" array.
|
|
19
18
|
-%>
|
|
20
19
|
<%
|
|
21
20
|
mac = @host.facts['discovery_bootif']
|
|
@@ -31,10 +30,12 @@ Extra options like --reset-vga can be set via "extra" array.
|
|
|
31
30
|
options << 'console-setup/ask_detect=false console-setup/layout=USA console-setup/variant=USA keyboard-configuration/layoutcode=us localechooser/translation/warn-light=true localechooser/translation/warn-severe=true'
|
|
32
31
|
options << "locale=#{host_param('lang') || 'en_US'}"
|
|
33
32
|
options << "inst.stage2=#{@host.operatingsystem.medium_uri(@host)}" if @host.operatingsystem.name.match(/Atomic/i)
|
|
33
|
+
extra = []
|
|
34
|
+
extra << "--kexec-file-syscall" if @host.pxe_loader.include?('SecureBoot')
|
|
34
35
|
-%>
|
|
35
36
|
{
|
|
36
37
|
"kernel": "<%= @kernel_uri %>",
|
|
37
38
|
"initram": "<%= @initrd_uri %>",
|
|
38
39
|
"append": "url=<%= foreman_url('provision') + "&static=yes" %> interface=<%= mac %> netcfg/get_ipaddress=<%= ip %> netcfg/get_netmask=<%= mask %> netcfg/get_gateway=<%= gw %> netcfg/get_nameservers=<%= dns %> netcfg/disable_dhcp=true netcfg/get_hostname=<%= @host.name %> BOOTIF=<%= bootif %> <%= options.compact.join(' ') %>",
|
|
39
|
-
"extra":
|
|
40
|
+
"extra": <%= extra %>
|
|
40
41
|
}
|
|
@@ -14,18 +14,17 @@ oses:
|
|
|
14
14
|
- RedHat 5
|
|
15
15
|
- RedHat 6
|
|
16
16
|
- RedHat 7
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
Extra options like --reset-vga can be set via "extra" array.
|
|
17
|
+
description: |
|
|
18
|
+
This template is used to pass command line options to kexec when reloading
|
|
19
|
+
kernel on a discovered host instead of rebooting. This is useful in PXE-less
|
|
20
|
+
environments. The template must generate JSON format with the following items
|
|
21
|
+
"kernel", "initram", "append" and "extra". The kexec command is composed in
|
|
22
|
+
the following way:
|
|
23
|
+
|
|
24
|
+
kexec --force --debug --append=$append --initrd=$initram $extra $kernel
|
|
25
|
+
|
|
26
|
+
Please read kexec(8) man page for more information about semantics.
|
|
27
|
+
Extra options like --reset-vga can be set via "extra" array.
|
|
29
28
|
-%>
|
|
30
29
|
<%
|
|
31
30
|
mac = @host.facts['discovery_bootif']
|
|
@@ -41,15 +40,17 @@ Extra options like --reset-vga can be set via "extra" array.
|
|
|
41
40
|
if @host.operatingsystem.name != 'Fedora' && @host.operatingsystem.major.to_i >= 7 && host_param_true?('fips_enabled')
|
|
42
41
|
options.push('fips=1')
|
|
43
42
|
end
|
|
43
|
+
extra = []
|
|
44
|
+
extra << "--kexec-file-syscall" if @host.pxe_loader.include?('SecureBoot')
|
|
44
45
|
-%>
|
|
45
46
|
{
|
|
46
47
|
"kernel": "<%= @kernel_uri %>",
|
|
47
48
|
"initram": "<%= @initrd_uri %>",
|
|
48
49
|
<% if (@host.operatingsystem.name == 'Fedora' and @host.operatingsystem.major.to_i > 16) or
|
|
49
50
|
(@host.operatingsystem.name != 'Fedora' and @host.operatingsystem.major.to_i >= 7) -%>
|
|
50
|
-
"append": "ks=<%= foreman_url('provision') + "&static=yes" %> inst.ks.sendmac <%= "ip=#{ip}::#{gw}:#{mask}:::none nameserver=#{dns} ksdevice=bootif BOOTIF=#{bootif} nomodeset nokaslr " + options.compact.join(' ') %>",
|
|
51
|
+
"append": "inst.ks=<%= foreman_url('provision') + "&static=yes" %> inst.ks.sendmac <%= "ip=#{ip}::#{gw}:#{mask}:::none nameserver=#{dns} ksdevice=bootif BOOTIF=#{bootif} nomodeset nokaslr " + options.compact.join(' ') %>",
|
|
51
52
|
<% else -%>
|
|
52
|
-
"append": "ks=<%= foreman_url('provision') + "&static=yes" %> kssendmac nicdelay=5 <%= "ip=#{ip} netmask=#{mask} gateway=#{gw} dns=#{dns} ksdevice=#{mac} BOOTIF=#{bootif} nomodeset nokaslr " + options.compact.join(' ') %>",
|
|
53
|
+
"append": "inst.ks=<%= foreman_url('provision') + "&static=yes" %> kssendmac nicdelay=5 <%= "ip=#{ip} netmask=#{mask} gateway=#{gw} dns=#{dns} ksdevice=#{mac} BOOTIF=#{bootif} nomodeset nokaslr " + options.compact.join(' ') %>",
|
|
53
54
|
<% end -%>
|
|
54
|
-
"extra":
|
|
55
|
+
"extra": <%= extra %>
|
|
55
56
|
}
|
|
@@ -45,38 +45,201 @@ module ForemanDiscovery
|
|
|
45
45
|
Foreman::Plugin.register :foreman_discovery do
|
|
46
46
|
requires_foreman '>= 3.2'
|
|
47
47
|
|
|
48
|
-
#
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
48
|
+
# settings
|
|
49
|
+
settings do
|
|
50
|
+
category :discovery, N_("Discovery") do
|
|
51
|
+
snippets = Proc.new {
|
|
52
|
+
Hash[ProvisioningTemplate.where(:template_kind => TemplateKind.find_by_name(:snippet)).map{|template| [template[:name], template[:name]]}]
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
setting "discovery_location",
|
|
56
|
+
type: :string,
|
|
57
|
+
collection: Proc.new { Hash[[['', '']].concat Location.all.map{|loc| [loc[:title], loc[:title]]}] },
|
|
58
|
+
default: "",
|
|
59
|
+
full_name: N_("Discovery location"),
|
|
60
|
+
description: N_("The default location to place discovered hosts in")
|
|
61
|
+
|
|
62
|
+
setting "discovery_organization",
|
|
63
|
+
type: :string,
|
|
64
|
+
collection: Proc.new { Hash[[['', '']].concat Organization.all.map{|org| [org[:title], org[:title]]}] },
|
|
65
|
+
default: "",
|
|
66
|
+
full_name: N_("Discovery location"),
|
|
67
|
+
description: N_("The default location to place discovered hosts in")
|
|
68
|
+
|
|
69
|
+
setting "discovery_fact",
|
|
70
|
+
type: :string,
|
|
71
|
+
default: "discovery_bootif",
|
|
72
|
+
full_name: N_("Interface fact"),
|
|
73
|
+
description: N_("Fact name to use for primary interface detection")
|
|
74
|
+
|
|
75
|
+
setting "discovery_auto_bond",
|
|
76
|
+
type: :boolean,
|
|
77
|
+
default: false,
|
|
78
|
+
full_name: N_("Create bond interfaces"),
|
|
79
|
+
description: N_("Automatic bond interface (if another interface is detected on the same VLAN via LLDP)")
|
|
80
|
+
|
|
81
|
+
setting "discovery_clean_facts",
|
|
82
|
+
type: :boolean,
|
|
83
|
+
default: false,
|
|
84
|
+
full_name: N_("Clean all facts"),
|
|
85
|
+
description: N_("Clean all reported facts during provisioning (except discovery facts)")
|
|
86
|
+
|
|
87
|
+
setting "discovery_hostname",
|
|
88
|
+
type: :string,
|
|
89
|
+
default: "discovery_bootif",
|
|
90
|
+
full_name: N_("Hostname facts"),
|
|
91
|
+
description: N_("List of facts to use for the hostname (separated by comma, first wins)")
|
|
92
|
+
|
|
93
|
+
validates "discovery_hostname", presence: true
|
|
94
|
+
|
|
95
|
+
setting "discovery_auto",
|
|
96
|
+
type: :boolean,
|
|
97
|
+
default: false,
|
|
98
|
+
full_name: N_("Auto provisioning"),
|
|
99
|
+
description: N_("Automatically provision newly discovered hosts, according to the provisioning rules")
|
|
100
|
+
|
|
101
|
+
setting "discovery_reboot",
|
|
102
|
+
type: :boolean,
|
|
103
|
+
default: true,
|
|
104
|
+
full_name: N_("Reboot"),
|
|
105
|
+
description: N_("Automatically reboot or kexec discovered host during provisioning")
|
|
106
|
+
|
|
107
|
+
setting "discovery_prefix",
|
|
108
|
+
type: :string,
|
|
109
|
+
default: "mac",
|
|
110
|
+
full_name: N_("Hostname prefix"),
|
|
111
|
+
description: N_("The default prefix to use for the host name, must start with a letter")
|
|
112
|
+
|
|
113
|
+
validates "discovery_prefix", presence: true
|
|
114
|
+
|
|
115
|
+
setting "discovery_fact_column",
|
|
116
|
+
type: :string,
|
|
117
|
+
default: "",
|
|
118
|
+
full_name: N_("Fact columns"),
|
|
119
|
+
description: N_("Extra facter columns to show in host lists (separate by comma)")
|
|
120
|
+
|
|
121
|
+
setting "discovery_facts_highlights",
|
|
122
|
+
type: :string,
|
|
123
|
+
default: "",
|
|
124
|
+
full_name: N_("Highlighted facts"),
|
|
125
|
+
description: N_("Regex to organize facts for highlights section - e.g. ^(abc|cde)$")
|
|
126
|
+
|
|
127
|
+
setting "discovery_facts_storage",
|
|
128
|
+
type: :string,
|
|
129
|
+
default: "",
|
|
130
|
+
full_name: N_("Storage facts"),
|
|
131
|
+
description: N_("Regex to organize facts for storage section")
|
|
132
|
+
|
|
133
|
+
setting "discovery_facts_software",
|
|
134
|
+
type: :string,
|
|
135
|
+
default: "",
|
|
136
|
+
full_name: N_("Software facts"),
|
|
137
|
+
description: N_("Regex to organize facts for software section")
|
|
138
|
+
|
|
139
|
+
setting "discovery_facts_hardware",
|
|
140
|
+
type: :string,
|
|
141
|
+
default: "",
|
|
142
|
+
full_name: N_("Hardware facts"),
|
|
143
|
+
description: N_("Regex to organize facts for hardware section")
|
|
144
|
+
|
|
145
|
+
setting "discovery_facts_network",
|
|
146
|
+
type: :string,
|
|
147
|
+
default: "",
|
|
148
|
+
full_name: N_("Network facts"),
|
|
149
|
+
description: N_("Regex to organize facts for network section")
|
|
150
|
+
|
|
151
|
+
setting "discovery_facts_ipmi",
|
|
152
|
+
type: :string,
|
|
153
|
+
default: "",
|
|
154
|
+
full_name: N_("IPMI facts"),
|
|
155
|
+
description: N_("Regex to organize facts for ipmi section")
|
|
156
|
+
|
|
157
|
+
setting "discovery_lock",
|
|
158
|
+
type: :boolean,
|
|
159
|
+
default: false,
|
|
160
|
+
full_name: N_("Lock PXE"),
|
|
161
|
+
description: N_("Automatically generate PXE configuration to pin a newly discovered host to discovery")
|
|
162
|
+
|
|
163
|
+
setting "discovery_pxelinux_lock_template",
|
|
164
|
+
type: :string,
|
|
165
|
+
collection: snippets,
|
|
166
|
+
default: "pxelinux_discovery",
|
|
167
|
+
full_name: N_("Locked PXELinux template name"),
|
|
168
|
+
description: N_("PXELinux template to be used when pinning a host to discovery")
|
|
169
|
+
|
|
170
|
+
setting "discovery_pxegrub_lock_template",
|
|
171
|
+
type: :string,
|
|
172
|
+
collection: snippets,
|
|
173
|
+
default: "pxegrub_discovery",
|
|
174
|
+
full_name: N_("Locked PXEGrub template name"),
|
|
175
|
+
description: N_("PXEGrub template to be used when pinning a host to discovery")
|
|
176
|
+
|
|
177
|
+
setting "discovery_pxegrub2_lock_template",
|
|
178
|
+
type: :string,
|
|
179
|
+
collection: snippets,
|
|
180
|
+
default: "pxegrub2_discovery",
|
|
181
|
+
full_name: N_("Locked PXEGrub2 template name"),
|
|
182
|
+
description: N_("PXEGrub2 template to be used when pinning a host to discovery")
|
|
183
|
+
|
|
184
|
+
setting "discovery_always_rebuild_dns",
|
|
185
|
+
type: :boolean,
|
|
186
|
+
default: true,
|
|
187
|
+
full_name: N_("Force DNS"),
|
|
188
|
+
description: N_("Force DNS entries creation when provisioning discovered host")
|
|
189
|
+
|
|
190
|
+
setting "discovery_error_on_existing",
|
|
191
|
+
type: :boolean,
|
|
192
|
+
default: false,
|
|
193
|
+
full_name: N_("Error on existing NIC"),
|
|
194
|
+
description: N_("Do not allow to discover existing managed host matching MAC of a provisioning NIC (errors out early)")
|
|
195
|
+
|
|
196
|
+
setting "discovery_naming",
|
|
197
|
+
type: :string,
|
|
198
|
+
collection: Proc.new { ::Host::Discovered::NAMING_PATTERNS },
|
|
199
|
+
default: "Fact",
|
|
200
|
+
full_name: N_("Type of name generator"),
|
|
201
|
+
description: N_("Discovery hostname naming pattern")
|
|
202
|
+
|
|
203
|
+
setting "discovery_prefer_ipv6",
|
|
204
|
+
type: :boolean,
|
|
205
|
+
default: false,
|
|
206
|
+
full_name: N_("Prefer IPv6"),
|
|
207
|
+
description: N_("Prefer IPv6 to IPv4 when calling discovered nodes")
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
# discovered hosts permissions
|
|
212
|
+
security_block :discovery do
|
|
213
|
+
permission :view_discovered_hosts, {
|
|
214
|
+
:discovered_hosts => [:index, :show, :auto_complete_search, :welcome],
|
|
215
|
+
:"api/v2/discovered_hosts" => [:index, :show],
|
|
216
|
+
:'discovered_hosts/react' => [:index]
|
|
217
|
+
}, :resource_type => 'Host'
|
|
218
|
+
permission :submit_discovered_hosts, {
|
|
219
|
+
:"api/v2/discovered_hosts" => [:facts, :create]
|
|
220
|
+
}, :resource_type => 'Host'
|
|
221
|
+
permission :auto_provision_discovered_hosts, {
|
|
222
|
+
:discovered_hosts => [:auto_provision,
|
|
223
|
+
:multiple_auto_provision,
|
|
224
|
+
:submit_multiple_auto_provision],
|
|
225
|
+
:"api/v2/discovered_hosts" => [:auto_provision, :auto_provision_all]
|
|
226
|
+
}, :resource_type => 'Host'
|
|
227
|
+
permission :provision_discovered_hosts, {
|
|
228
|
+
:discovered_hosts => [:edit, :update],
|
|
229
|
+
:"api/v2/discovered_hosts" => [:update]
|
|
230
|
+
}, :resource_type => 'Host'
|
|
231
|
+
permission :edit_discovered_hosts, {
|
|
232
|
+
:discovered_hosts => [:update_multiple_location,
|
|
233
|
+
:select_multiple_organization,
|
|
234
|
+
:update_multiple_organization,
|
|
235
|
+
:select_multiple_location,
|
|
236
|
+
:refresh_facts,
|
|
237
|
+
:reboot,
|
|
238
|
+
:multiple_reboot,
|
|
239
|
+
:submit_multiple_reboot],
|
|
240
|
+
:hosts => [:process_hostgroup],
|
|
241
|
+
:"api/v2/discovered_hosts" => [:refresh_facts, :reboot, :reboot_all]
|
|
242
|
+
}, :resource_type => 'Host'
|
|
80
243
|
permission :destroy_discovered_hosts, {
|
|
81
244
|
:discovered_hosts => [:destroy, :submit_multiple_destroy, :multiple_destroy],
|
|
82
245
|
:"api/v2/discovered_hosts" => [:destroy]
|
|
Binary file
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
# Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>, 2015-2016
|
|
8
8
|
msgid ""
|
|
9
9
|
msgstr ""
|
|
10
|
-
"Project-Id-Version: foreman_discovery
|
|
10
|
+
"Project-Id-Version: foreman_discovery 21.0.0\n"
|
|
11
11
|
"Report-Msgid-Bugs-To: \n"
|
|
12
|
-
"PO-Revision-Date:
|
|
13
|
-
"Last-Translator:
|
|
12
|
+
"PO-Revision-Date: 2013-11-15 17:25+0000\n"
|
|
13
|
+
"Last-Translator: Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>, 2017\n"
|
|
14
14
|
"Language-Team: Catalan (http://www.transifex.com/foreman/foreman/language/ca/)"
|
|
15
15
|
"\n"
|
|
16
16
|
"MIME-Version: 1.0\n"
|
|
@@ -134,7 +134,7 @@ msgid "Destroyed selected hosts"
|
|
|
134
134
|
msgstr "S'han destruït els amfitrions seleccionats"
|
|
135
135
|
|
|
136
136
|
msgid "Details"
|
|
137
|
-
msgstr ""
|
|
137
|
+
msgstr "Detalls"
|
|
138
138
|
|
|
139
139
|
msgid "Disable"
|
|
140
140
|
msgstr "Inhabilita"
|
|
@@ -310,7 +310,7 @@ msgid "Foreman discovered hosts summary"
|
|
|
310
310
|
msgstr ""
|
|
311
311
|
|
|
312
312
|
msgid "Hardware"
|
|
313
|
-
msgstr ""
|
|
313
|
+
msgstr "Maquinari"
|
|
314
314
|
|
|
315
315
|
msgid "Hardware facts"
|
|
316
316
|
msgstr ""
|
|
@@ -331,7 +331,7 @@ msgid "Host %{host} was provisioned with rule %{rule}"
|
|
|
331
331
|
msgstr "L'amfitrió %{host} va ser aprovisionat amb la regla %{rule}"
|
|
332
332
|
|
|
333
333
|
msgid "Host Group"
|
|
334
|
-
msgstr ""
|
|
334
|
+
msgstr "Grup dels amfitrions"
|
|
335
335
|
|
|
336
336
|
msgid "Host group location %s must also be associated to the discovery rule"
|
|
337
337
|
msgid_plural "Host group locations %s must also be associated to the discovery rule"
|
|
@@ -365,10 +365,10 @@ msgid "Hostnames must not start with numbers. A good approach is to use unique i
|
|
|
365
365
|
msgstr ""
|
|
366
366
|
|
|
367
367
|
msgid "Hosts"
|
|
368
|
-
msgstr ""
|
|
368
|
+
msgstr "Amfitrions"
|
|
369
369
|
|
|
370
370
|
msgid "Hosts Limit"
|
|
371
|
-
msgstr ""
|
|
371
|
+
msgstr "Límit d'amfitrions"
|
|
372
372
|
|
|
373
373
|
msgid "Hosts/Limit"
|
|
374
374
|
msgstr ""
|
|
@@ -497,7 +497,7 @@ msgid "Name of the parameter"
|
|
|
497
497
|
msgstr "Nom del paràmetre"
|
|
498
498
|
|
|
499
499
|
msgid "Network"
|
|
500
|
-
msgstr ""
|
|
500
|
+
msgstr "Xarxa"
|
|
501
501
|
|
|
502
502
|
msgid "Network facts"
|
|
503
503
|
msgstr ""
|
|
@@ -511,12 +511,18 @@ msgstr ""
|
|
|
511
511
|
msgid "New in the last 24 hours"
|
|
512
512
|
msgstr "Nou en les últimes 24 hores"
|
|
513
513
|
|
|
514
|
+
msgid "No Discovery Rules found in this context. Create Discovery Rules to perform automated provisioning on Discovered Hosts"
|
|
515
|
+
msgstr ""
|
|
516
|
+
|
|
514
517
|
msgid "No discovered hosts available"
|
|
515
518
|
msgstr ""
|
|
516
519
|
|
|
517
520
|
msgid "No discovered hosts for the selected period"
|
|
518
521
|
msgstr ""
|
|
519
522
|
|
|
523
|
+
msgid "No discovered hosts found in this context. This page shows discovered bare-metal or virtual nodes waiting to be provisioned."
|
|
524
|
+
msgstr ""
|
|
525
|
+
|
|
520
526
|
msgid "No discovered hosts to provision"
|
|
521
527
|
msgstr "Sense amfitrions descoberts per aprovisionar"
|
|
522
528
|
|
|
@@ -677,7 +683,7 @@ msgid "Specify target hostname template pattern in the same syntax as in Provisi
|
|
|
677
683
|
msgstr ""
|
|
678
684
|
|
|
679
685
|
msgid "Storage"
|
|
680
|
-
msgstr ""
|
|
686
|
+
msgstr "Emmagatzematge"
|
|
681
687
|
|
|
682
688
|
msgid "Storage facts"
|
|
683
689
|
msgstr ""
|
|
@@ -716,7 +722,7 @@ msgid "This might take a while, as all hosts, facts and reports will be destroye
|
|
|
716
722
|
msgstr ""
|
|
717
723
|
|
|
718
724
|
msgid "Type"
|
|
719
|
-
msgstr ""
|
|
725
|
+
msgstr "Tipus"
|
|
720
726
|
|
|
721
727
|
msgid "Type of name generator"
|
|
722
728
|
msgstr ""
|
|
Binary file
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
# stbenjam <stephen@redhat.com>, 2016
|
|
16
16
|
msgid ""
|
|
17
17
|
msgstr ""
|
|
18
|
-
"Project-Id-Version: foreman_discovery
|
|
18
|
+
"Project-Id-Version: foreman_discovery 21.0.0\n"
|
|
19
19
|
"Report-Msgid-Bugs-To: \n"
|
|
20
|
-
"PO-Revision-Date:
|
|
21
|
-
"Last-Translator: Patrick Dolinic\n"
|
|
20
|
+
"PO-Revision-Date: 2013-11-15 17:25+0000\n"
|
|
21
|
+
"Last-Translator: Patrick Dolinic, 2021\n"
|
|
22
22
|
"Language-Team: German (http://www.transifex.com/foreman/foreman/language/de/)\n"
|
|
23
23
|
"MIME-Version: 1.0\n"
|
|
24
24
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
@@ -518,12 +518,18 @@ msgstr "Neue Hosts"
|
|
|
518
518
|
msgid "New in the last 24 hours"
|
|
519
519
|
msgstr "Neu in den letzten 24 Stunden"
|
|
520
520
|
|
|
521
|
+
msgid "No Discovery Rules found in this context. Create Discovery Rules to perform automated provisioning on Discovered Hosts"
|
|
522
|
+
msgstr ""
|
|
523
|
+
|
|
521
524
|
msgid "No discovered hosts available"
|
|
522
525
|
msgstr "Keine entdeckten Hosts verfügbar"
|
|
523
526
|
|
|
524
527
|
msgid "No discovered hosts for the selected period"
|
|
525
528
|
msgstr "Keine entdeckten Hosts für den ausgewählten Zeitraum"
|
|
526
529
|
|
|
530
|
+
msgid "No discovered hosts found in this context. This page shows discovered bare-metal or virtual nodes waiting to be provisioned."
|
|
531
|
+
msgstr ""
|
|
532
|
+
|
|
527
533
|
msgid "No discovered hosts to provision"
|
|
528
534
|
msgstr "Keine entdeckten Hosts zur Bereitstellung"
|
|
529
535
|
|
|
Binary file
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# This file is distributed under the same license as the foreman_discovery package.
|
|
3
3
|
msgid ""
|
|
4
4
|
msgstr ""
|
|
5
|
-
"Project-Id-Version: foreman_discovery
|
|
5
|
+
"Project-Id-Version: foreman_discovery 21.0.0\n"
|
|
6
6
|
"Report-Msgid-Bugs-To: foreman-dev@googlegroups.com\n"
|
|
7
7
|
"PO-Revision-Date: 2015-12-27 01:18+0000\n"
|
|
8
8
|
"Last-Translator: \n"
|
|
@@ -504,12 +504,18 @@ msgstr ""
|
|
|
504
504
|
msgid "New in the last 24 hours"
|
|
505
505
|
msgstr ""
|
|
506
506
|
|
|
507
|
+
msgid "No Discovery Rules found in this context. Create Discovery Rules to perform automated provisioning on Discovered Hosts"
|
|
508
|
+
msgstr ""
|
|
509
|
+
|
|
507
510
|
msgid "No discovered hosts available"
|
|
508
511
|
msgstr ""
|
|
509
512
|
|
|
510
513
|
msgid "No discovered hosts for the selected period"
|
|
511
514
|
msgstr ""
|
|
512
515
|
|
|
516
|
+
msgid "No discovered hosts found in this context. This page shows discovered bare-metal or virtual nodes waiting to be provisioned."
|
|
517
|
+
msgstr ""
|
|
518
|
+
|
|
513
519
|
msgid "No discovered hosts to provision"
|
|
514
520
|
msgstr ""
|
|
515
521
|
|
|
Binary file
|