foreman_discovery 20.0.0 → 21.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/host/discovered.rb +10 -1
  3. data/app/models/setting/discovered.rb +1 -43
  4. data/app/services/foreman_discovery/host_converter.rb +9 -2
  5. data/app/views/foreman_discovery/debian_kexec.erb +14 -13
  6. data/app/views/foreman_discovery/redhat_kexec.erb +16 -15
  7. data/lib/foreman_discovery/engine.rb +195 -32
  8. data/lib/foreman_discovery/version.rb +1 -1
  9. data/locale/ca/LC_MESSAGES/foreman_discovery.mo +0 -0
  10. data/locale/ca/foreman_discovery.po +17 -11
  11. data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
  12. data/locale/de/foreman_discovery.po +9 -3
  13. data/locale/en/LC_MESSAGES/foreman_discovery.mo +0 -0
  14. data/locale/en/foreman_discovery.po +7 -1
  15. data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
  16. data/locale/en_GB/foreman_discovery.po +9 -3
  17. data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
  18. data/locale/es/foreman_discovery.po +9 -3
  19. data/locale/foreman_discovery.pot +23 -9
  20. data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
  21. data/locale/fr/foreman_discovery.po +39 -33
  22. data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
  23. data/locale/gl/foreman_discovery.po +19 -13
  24. data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
  25. data/locale/it/foreman_discovery.po +9 -3
  26. data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
  27. data/locale/ja/foreman_discovery.po +11 -5
  28. data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
  29. data/locale/ko/foreman_discovery.po +9 -3
  30. data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
  31. data/locale/pt_BR/foreman_discovery.po +9 -3
  32. data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
  33. data/locale/ru/foreman_discovery.po +9 -3
  34. data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
  35. data/locale/sv_SE/foreman_discovery.po +19 -13
  36. data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
  37. data/locale/zh_CN/foreman_discovery.po +11 -5
  38. data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
  39. data/locale/zh_TW/foreman_discovery.po +9 -3
  40. data/package.json +5 -7
  41. data/test/unit/discovered_extensions_test.rb +14 -1
  42. data/test/unit/host_discovered_test.rb +7 -1
  43. data/test/unit/managed_extensions_test.rb +1 -1
  44. metadata +13 -27
  45. data/locale/ca/foreman_discovery.edit.po +0 -1099
  46. data/locale/de/foreman_discovery.edit.po +0 -1106
  47. data/locale/en/foreman_discovery.edit.po +0 -1091
  48. data/locale/en_GB/foreman_discovery.edit.po +0 -1102
  49. data/locale/es/foreman_discovery.edit.po +0 -1103
  50. data/locale/fr/foreman_discovery.edit.po +0 -1099
  51. data/locale/gl/foreman_discovery.edit.po +0 -1097
  52. data/locale/it/foreman_discovery.edit.po +0 -1099
  53. data/locale/ja/foreman_discovery.edit.po +0 -1096
  54. data/locale/ko/foreman_discovery.edit.po +0 -1096
  55. data/locale/messages.mo +0 -0
  56. data/locale/pt_BR/foreman_discovery.edit.po +0 -1105
  57. data/locale/ru/foreman_discovery.edit.po +0 -1108
  58. data/locale/sv_SE/foreman_discovery.edit.po +0 -1100
  59. data/locale/zh_CN/foreman_discovery.edit.po +0 -1094
  60. 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: 42e909e67952be309ba249d25294fa97227d9ad9dcd6c98b71f93c33e8d94e4c
4
- data.tar.gz: ccf2de1a46292d285fbf187e7c65def6c7bb0c210bb1d7a26ad4b7353a967f12
3
+ metadata.gz: dbc5abad67ec340bdfe3ed25013bd59afd164c5aa5b71197cf115fca531f07f8
4
+ data.tar.gz: ba6b00159de292b52754d70bab8a79bbd0b77e29f7cba34e2e6e16ab6a5f05a6
5
5
  SHA512:
6
- metadata.gz: d8fa0da48abb3f11aac1b79b1bc7faa5ec22e9c56543a4802a789a6d626370ccd6c5daa9f5b2faeb4be92af8068d99174a299a5ac865b71de38de8c6785fc369
7
- data.tar.gz: 7a832889e8509358be5c7affeed3894cf964e9c2defc29644f54c1f015f872583ab77bfeed39644c89acad6f0cd3bdb34ae4c7fe08261c971f3e631b4cc60fdc
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
- hostname = NameGenerator.new.generate_next_mac_name(bootif_mac)
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 < ::Setting
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
- interface.ip = unused_ip_for_subnet(interface.subnet, interface.mac, interface.ip) if interface.subnet
62
- interface.ip6 = unused_ip_for_subnet(interface.subnet6, interface.mac, interface.ip6) if interface.subnet6
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
- This template is used to pass command line options to kexec when reloading
10
- kernel on a discovered host instead of rebooting. This is useful in PXE-less
11
- environments. The template must generate JSON format with the following items
12
- "kernel", "initram", "append" and "extra". The kexec command is composed in
13
- the following way:
14
-
15
- kexec --force --debug --append=$append --initrd=$initram $extra $kernel
16
-
17
- Please read kexec(8) man page for more information about semantics.
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
- This template is used to pass command line options to kexec when reloading
20
- kernel on a discovered host instead of rebooting. This is useful in PXE-less
21
- environments. The template must generate JSON format with the following items
22
- "kernel", "initram", "append" and "extra". The kexec command is composed in
23
- the following way:
24
-
25
- kexec --force --debug --append=$append --initrd=$initram $extra $kernel
26
-
27
- Please read kexec(8) man page for more information about semantics.
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
- # discovered hosts permissions
49
- security_block :discovery do
50
- permission :view_discovered_hosts, {
51
- :discovered_hosts => [:index, :show, :auto_complete_search, :welcome],
52
- :"api/v2/discovered_hosts" => [:index, :show],
53
- :'discovered_hosts/react' => [:index]
54
- }, :resource_type => 'Host'
55
- permission :submit_discovered_hosts, {
56
- :"api/v2/discovered_hosts" => [:facts, :create]
57
- }, :resource_type => 'Host'
58
- permission :auto_provision_discovered_hosts, {
59
- :discovered_hosts => [:auto_provision,
60
- :multiple_auto_provision,
61
- :submit_multiple_auto_provision],
62
- :"api/v2/discovered_hosts" => [:auto_provision, :auto_provision_all]
63
- }, :resource_type => 'Host'
64
- permission :provision_discovered_hosts, {
65
- :discovered_hosts => [:edit, :update],
66
- :"api/v2/discovered_hosts" => [:update]
67
- }, :resource_type => 'Host'
68
- permission :edit_discovered_hosts, {
69
- :discovered_hosts => [:update_multiple_location,
70
- :select_multiple_organization,
71
- :update_multiple_organization,
72
- :select_multiple_location,
73
- :refresh_facts,
74
- :reboot,
75
- :multiple_reboot,
76
- :submit_multiple_reboot],
77
- :hosts => [:process_hostgroup],
78
- :"api/v2/discovered_hosts" => [:refresh_facts, :reboot, :reboot_all]
79
- }, :resource_type => 'Host'
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]
@@ -1,3 +1,3 @@
1
1
  module ForemanDiscovery
2
- VERSION = "20.0.0"
2
+ VERSION = "21.0.1"
3
3
  end
@@ -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 18.0.1\n"
10
+ "Project-Id-Version: foreman_discovery 21.0.0\n"
11
11
  "Report-Msgid-Bugs-To: \n"
12
- "PO-Revision-Date: 2021-09-20 17:24+0000\n"
13
- "Last-Translator: Transifex Bot <>\n"
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 ""
@@ -15,10 +15,10 @@
15
15
  # stbenjam <stephen@redhat.com>, 2016
16
16
  msgid ""
17
17
  msgstr ""
18
- "Project-Id-Version: foreman_discovery 18.0.1\n"
18
+ "Project-Id-Version: foreman_discovery 21.0.0\n"
19
19
  "Report-Msgid-Bugs-To: \n"
20
- "PO-Revision-Date: 2021-10-13 15:12+0000\n"
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
 
@@ -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 18.0.1\n"
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