foreman_discovery 16.1.3 → 16.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/api/v2/discovered_hosts_controller.rb +14 -8
  3. data/app/controllers/discovered_hosts_controller.rb +5 -3
  4. data/app/helpers/discovered_hosts_helper.rb +5 -0
  5. data/app/models/host/discovered.rb +11 -15
  6. data/app/models/setting/discovered.rb +3 -1
  7. data/app/services/foreman_discovery/host_fact_importer.rb +10 -0
  8. data/app/services/foreman_discovery/import_hooks/subnet_and_taxonomy.rb +2 -0
  9. data/app/views/api/v2/discovery_rules/create.json.rabl +3 -0
  10. data/app/views/discovered_hosts/_discovered_host_modal.html.erb +0 -2
  11. data/app/views/discovered_hosts/welcome.html.erb +14 -9
  12. data/app/views/discovery_rules/index.html.erb +1 -1
  13. data/app/views/foreman_discovery/debian_kexec.erb +3 -2
  14. data/app/views/foreman_discovery/redhat_kexec.erb +3 -2
  15. data/extra/discover-host +14 -8
  16. data/lib/foreman_discovery/engine.rb +3 -2
  17. data/lib/foreman_discovery/version.rb +1 -1
  18. data/locale/ca/LC_MESSAGES/foreman_discovery.mo +0 -0
  19. data/locale/ca/foreman_discovery.edit.po +46 -37
  20. data/locale/ca/foreman_discovery.po +28 -10
  21. data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
  22. data/locale/de/foreman_discovery.edit.po +54 -47
  23. data/locale/de/foreman_discovery.po +28 -10
  24. data/locale/en/LC_MESSAGES/foreman_discovery.mo +0 -0
  25. data/locale/en/foreman_discovery.edit.po +40 -28
  26. data/locale/en/foreman_discovery.po +28 -10
  27. data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
  28. data/locale/en_GB/foreman_discovery.edit.po +45 -44
  29. data/locale/en_GB/foreman_discovery.po +28 -10
  30. data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
  31. data/locale/es/foreman_discovery.edit.po +79 -76
  32. data/locale/es/foreman_discovery.po +28 -10
  33. data/locale/foreman_discovery.pot +142 -115
  34. data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
  35. data/locale/fr/foreman_discovery.edit.po +85 -82
  36. data/locale/fr/foreman_discovery.po +28 -10
  37. data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
  38. data/locale/gl/foreman_discovery.edit.po +41 -29
  39. data/locale/gl/foreman_discovery.po +28 -10
  40. data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
  41. data/locale/it/foreman_discovery.edit.po +54 -42
  42. data/locale/it/foreman_discovery.po +28 -10
  43. data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
  44. data/locale/ja/foreman_discovery.edit.po +88 -87
  45. data/locale/ja/foreman_discovery.po +28 -10
  46. data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
  47. data/locale/ko/foreman_discovery.edit.po +53 -41
  48. data/locale/ko/foreman_discovery.po +28 -10
  49. data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
  50. data/locale/pt_BR/foreman_discovery.edit.po +78 -72
  51. data/locale/pt_BR/foreman_discovery.po +28 -10
  52. data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
  53. data/locale/ru/foreman_discovery.edit.po +53 -41
  54. data/locale/ru/foreman_discovery.po +28 -10
  55. data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
  56. data/locale/sv_SE/foreman_discovery.edit.po +44 -32
  57. data/locale/sv_SE/foreman_discovery.po +28 -10
  58. data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
  59. data/locale/zh_CN/foreman_discovery.edit.po +123 -123
  60. data/locale/zh_CN/foreman_discovery.po +28 -10
  61. data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
  62. data/locale/zh_TW/foreman_discovery.edit.po +53 -41
  63. data/locale/zh_TW/foreman_discovery.po +28 -10
  64. data/package.json +39 -0
  65. data/test/facts/only-ipv6.json +205 -0
  66. data/test/facts/skylake-ipv6.json +223 -0
  67. data/test/functional/api/v2/settings_controller_test.rb +2 -2
  68. data/test/functional/discovered_hosts_controller_test.rb +1 -1
  69. data/test/functional/discovery_rules_controller_test.rb +1 -1
  70. data/test/unit/host_discovered_test.rb +0 -16
  71. data/webpack/index.js +18 -0
  72. data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/EmptyState.js +28 -0
  73. data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/index.js +1 -0
  74. data/webpack/src/ForemanDiscovery/DiscoveredHosts/index.js +6 -0
  75. data/webpack/src/reducers.js +7 -0
  76. metadata +24 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ac7d31fa470fc53b81672be0f21309d8df92eef200481143055c9ad3af467be
4
- data.tar.gz: a71a4512c1bd4f90d0163dfaf07b5a670112f4825395a004c723e2f6da98d8ba
3
+ metadata.gz: 3069a28357316df978cd2a85a1ed6e919b0208d5051a1064222ccc52efde30dd
4
+ data.tar.gz: 8709517978ccc3a1b9d37913145d519a579315004c7ea6d3cd8ac7fd612a7bea
5
5
  SHA512:
6
- metadata.gz: e271f6b3990930e40277c8921254e1fd45ae89796b7d4693816d6083eb5fdcce078eb310b73579bab68e7c07c51c3e3ebf2bf93242339e6b62424d6bc48692df
7
- data.tar.gz: ae858e8f800237891cb92ce4868d43820e9f20e409c26f0bd887df6bef3c783c9e3dffbb90ce8b91971a3b5b331334593c0968712a93dc3c5c7df174346651f3
6
+ metadata.gz: 1f325332129ba0a4c79cff63f4e1b8f1adc1741c8a11fe0c689992896d8fe8fe08b98e60081bd17d575edcb88e6707be12ae635cc38ed1d5085d5b865ba2e097
7
+ data.tar.gz: 49e1f0a7becea2ffbe9fcdb7b120988e8dc3d20c4ad4a195de4dea8ca878c5261860951d3d9a7875a0b81933649f3730791d186e577c16aeeabf8235c8a711cc
@@ -51,24 +51,30 @@ module Api
51
51
  param :id, :identifier, :required => true
52
52
  param :discovered_host, Hash, :action_aware => true do
53
53
  param :name, String
54
- param :environment_id, String
54
+ param :environment_id, String, :desc => N_("required if host is managed and value is not inherited from host group")
55
55
  param :ip, String, :desc => N_("not required if using a subnet with DHCP proxy")
56
56
  param :mac, String, :desc => N_("not required if it's a virtual machine")
57
- param :architecture_id, :number
58
- param :domain_id, :number
57
+ param :architecture_id, :number, :desc => N_("required if host is managed and value is not inherited from host group")
58
+ param :domain_id, :number, :desc => N_("required if host is managed and value is not inherited from host group")
59
59
  param :puppet_proxy_id, :number
60
60
  param :puppet_class_ids, Array
61
- param :operatingsystem_id, String
62
- param :medium_id, :number
63
- param :ptable_id, :number
64
- param :subnet_id, :number
61
+ param :operatingsystem_id, :number, :desc => N_("required if host is managed and value is not inherited from host group")
62
+ param :medium_id, String, :desc => N_("required if not imaged based provisioning and host is managed and value is not inherited from host group")
63
+ param :ptable_id, :number, :desc => N_("required if host is managed and custom partition has not been defined")
64
+ param :subnet_id, :number, :desc => N_("required if host is managed and value is not inherited from host group")
65
65
  param :sp_subnet_id, :number
66
66
  param :model_id, :number
67
67
  param :hostgroup_id, :number
68
68
  param :owner_id, :number
69
+ param :owner_type, Host::Base::OWNER_TYPES, :desc => N_("Host's owner type")
69
70
  param :puppet_ca_proxy_id, :number
70
71
  param :image_id, :number
71
- param :host_parameters_attributes, Array
72
+ param :host_parameters_attributes, Array, :desc => N_("Host's parameters (array or indexed hash)") do
73
+ param :name, String, :desc => N_("Name of the parameter"), :required => true
74
+ param :value, String, :desc => N_("Parameter value"), :required => true
75
+ param :parameter_type, Parameter::KEY_TYPES, :desc => N_("Type of value")
76
+ param :hidden_value, :bool
77
+ end
72
78
  param :build, :bool
73
79
  param :enabled, :bool
74
80
  param :provision_method, String
@@ -199,15 +199,17 @@ class DiscoveredHostsController < ::ApplicationController
199
199
 
200
200
  def setup_host_class_variables
201
201
  if @host.hostgroup
202
+ subnet = @host.hostgroup.subnet || @host.subnet
203
+ subnet6 = @host.hostgroup.subnet6 || @host.subnet6
202
204
  @architecture = @host.hostgroup.architecture
203
205
  @operatingsystem = @host.hostgroup.operatingsystem
204
206
  @environment = @host.hostgroup.environment
205
207
  @domain = @host.hostgroup.domain
206
- @subnet = @host.hostgroup.subnet
208
+ @subnet = subnet
209
+ @subnet6 = subnet6
207
210
  @compute_profile = @host.hostgroup.compute_profile
208
211
  @realm = @host.hostgroup.realm
209
- @host.interfaces.first.assign_attributes(subnet: @subnet,
210
- domain: @domain)
212
+ @host.interfaces.first.assign_attributes(subnet: subnet, subnet6: subnet6, domain: @domain)
211
213
  @host.environment = @environment
212
214
  end
213
215
  end
@@ -97,4 +97,9 @@ module DiscoveredHostsHelper
97
97
  return super unless controller_name == 'discovered_hosts'
98
98
  discovered_host_path(host)
99
99
  end
100
+
101
+ def discovery_doc_url
102
+ doc_version = Foreman::Plugin.find(:foreman_discovery).version.scan(/\d+\.\d+/).first
103
+ "https://theforeman.org/plugins/foreman_discovery/#{doc_version}"
104
+ end
100
105
  end
@@ -44,9 +44,13 @@ class Host::Discovered < ::Host::Base
44
44
 
45
45
  # Discovery import workflow:
46
46
  # discovered#import_host ->
47
- # discovered#import_facts -> base#import_facts -> base#parse_facts ->
48
- # discovered#populate_fields_from_facts -> base#populate_fields_from_facts -> base#set_interfaces
49
- # discovered#populate_discovery_fields_from_facts
47
+ # ForemanDiscovery::HostFactImporter#import_facts ->
48
+ # ::HostFactImporter#import_facts ->
49
+ # ::HostFactImporter#parse_facts ->
50
+ # discovered#populate_fields_from_facts ->
51
+ # base#populate_fields_from_facts ->
52
+ # base#set_interfaces ->
53
+ # discovered#populate_discovery_fields_from_facts
50
54
  def self.import_host facts
51
55
  raise(::Foreman::Exception.new(N_("Invalid facts, must be a Hash"))) unless facts.is_a?(Hash) || facts.is_a?(ActionController::Parameters)
52
56
 
@@ -92,19 +96,11 @@ class Host::Discovered < ::Host::Base
92
96
 
93
97
  # and save (interfaces are created via puppet parser extension)
94
98
  host.save(:validate => false) if host.new_record?
95
- raise ::Foreman::Exception.new(N_("Facts could not be imported")) unless host.import_facts(facts)
99
+ importer = ForemanDiscovery::HostFactImporter.new(host)
100
+ raise ::Foreman::Exception.new(N_("Facts could not be imported")) unless importer.import_facts(facts)
96
101
  host
97
102
  end
98
103
 
99
- def import_facts(facts)
100
- # Discovered Hosts won't report in via puppet, so we can use that field to
101
- # record the last time it sent facts...
102
- self.last_report = Time.now
103
- # Set the correct facts type for new foreman facts importing code.
104
- facts[:_type] = :foreman_discovery
105
- super(facts)
106
- end
107
-
108
104
  def setup_clone
109
105
  # Nic::Managed needs this method but Discovered hosts shouldn't
110
106
  # be doing orchestration anyway...
@@ -144,10 +140,10 @@ class Host::Discovered < ::Host::Base
144
140
  def refresh_facts
145
141
  facts = ::ForemanDiscovery::NodeAPI::Inventory.new(:url => proxy_url(self.ip)).facter
146
142
  self.class.import_host facts
147
- import_facts facts
143
+ ::ForemanDiscovery::HostFactImporter.new(self).import_facts facts
148
144
  rescue => e
149
145
  ::Foreman::Logging.exception("Unable to get facts from proxy", e)
150
- raise ::Foreman::WrappedException.new(e, N_("Could not get facts from proxy %{url}: %{error}"), :url => proxy_url, :error => e)
146
+ raise ::Foreman::WrappedException.new(e, N_("Could not get facts from proxy %{url}: %{error}"), :url => proxy_url(self.ip), :error => e)
151
147
  end
152
148
 
153
149
  def reboot(old_ip = nil, new_ip = nil)
@@ -8,7 +8,9 @@ class Setting::Discovered < ::Setting
8
8
  BLANK_ATTRS << 'discovery_facts_hardware'
9
9
  BLANK_ATTRS << 'discovery_facts_network'
10
10
  BLANK_ATTRS << 'discovery_facts_ipmi'
11
- BLANK_ATTRS << 'discovery_prefix'
11
+
12
+ STRING_PRESENCE_ATTRS = ['discovery_hostname', 'discovery_prefix']
13
+ validates :value, :presence => true, :if => proc { |s| STRING_PRESENCE_ATTRS.include?(s.name) }
12
14
 
13
15
  def self.default_settings
14
16
  [
@@ -0,0 +1,10 @@
1
+ class ForemanDiscovery::HostFactImporter < ::HostFactImporter
2
+ def import_facts(facts)
3
+ # Discovered Hosts won't report in via puppet, so we can use that field to
4
+ # record the last time it sent facts...
5
+ host.last_report = Time.now
6
+ # Set the correct facts type for new foreman facts importing code.
7
+ facts[:_type] = :foreman_discovery
8
+ super(facts)
9
+ end
10
+ end
@@ -35,6 +35,7 @@ module ForemanDiscovery
35
35
  Location.find_by_title(facts["discovery_location"]) ||
36
36
  Location.find_by_title(Setting[:discovery_location]) ||
37
37
  host.subnet.try(:locations).try(:first) ||
38
+ host.subnet6.try(:locations).try(:first) ||
38
39
  Location.first
39
40
  end
40
41
 
@@ -48,6 +49,7 @@ module ForemanDiscovery
48
49
  Organization.find_by_title(facts["discovery_organization"]) ||
49
50
  Organization.find_by_title(Setting[:discovery_organization]) ||
50
51
  host.subnet.try(:organizations).try(:first) ||
52
+ host.subnet6.try(:organizations).try(:first) ||
51
53
  Organization.first
52
54
  end
53
55
  end
@@ -0,0 +1,3 @@
1
+ object @discovery_rule
2
+
3
+ extends "api/v2/discovery_rules/show"
@@ -17,8 +17,6 @@
17
17
  <% if show_location_tab? %>
18
18
  <%= select_f f, :location_id, Location.my_locations, :id, :to_label, {}, {:size => 'col-md-10'} %>
19
19
  <% end %>
20
-
21
- <div>Changing the Host's Subnet is not possible via Customize Host form, use Create Host or Auto provisioning and set the desired Subnet in the Hostgroup.</div>
22
20
  </div>
23
21
  <div class="modal-footer">
24
22
  <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
@@ -1,10 +1,15 @@
1
+ <% content_for(:javascripts) do %>
2
+ <%= webpacked_plugins_js_for :'foreman_discovery' %>
3
+ <% end %>
4
+ <% content_for(:stylesheets) do %>
5
+ <%= webpacked_plugins_css_for :'foreman_discovery' %>
6
+ <% end %>
7
+
1
8
  <% content_for(:title, _("Discovered Hosts")) %>
2
- <div class="blank-slate-pf">
3
- <div class="blank-slate-pf-icon">
4
- <%= icon_text("gears", "", :kind => "fa") %>
5
- </div>
6
- <h1><%= _('Discovered Hosts') %></h1>
7
- <p><%= _("No discovered hosts found in this context.") %>
8
- <%= _("This page shows discovered bare-metal or virtual nodes waiting to be provisioned.") %></p>
9
- <p><%= link_to _('Learn more about this in the documentation.'), documentation_url("#{ForemanDiscovery::VERSION.scan(/\d+\.\d+/).first}/index.html", {:root_url => 'https://theforeman.org/plugins/foreman_discovery/'})%></p>
10
- </div>
9
+
10
+ <% content_for(:content) do %>
11
+ <%= notifications %>
12
+ <div id="organization-id" data-id="<%= Organization.current.id if Organization.current %>" ></div>
13
+ <div id="user-id" data-id="<%= User.current.id if User.current %>" ></div>
14
+ <%= react_component('DiscoveredHosts', docUrl: discovery_doc_url ) %>
15
+ <% end %>
@@ -18,7 +18,7 @@
18
18
  <td><%= trunc_with_tooltip(rule.search) %></td>
19
19
  <td><%= label_with_link(rule.hostgroup, 26, authorizer) %></td>
20
20
  <td><%= rule.hosts.count %> / <%= rule.max_count %></td>
21
- <td><%= rule.enabled %></td>
21
+ <td><%= checked_icon rule.enabled %></td>
22
22
  <td><%= action_buttons(*permitted_discovery_actions(rule)) %></td>
23
23
  </tr>
24
24
  <% end %>
@@ -12,13 +12,14 @@ environments. The template must generate JSON format with the following items
12
12
  "kernel", "initram", "append" and "extra". The kexec command is composed in
13
13
  the following way:
14
14
 
15
- kexec --force --reset-vga --append=$append --initrd=$initram $extra $kernel
15
+ kexec --force --debug --append=$append --initrd=$initram $extra $kernel
16
16
 
17
17
  Please read kexec(8) man page for more information about semantics.
18
+ Extra options like --reset-vga can be set via "extra" array.
18
19
  -%>
19
20
  <%
20
21
  mac = @host.facts['discovery_bootif']
21
- bootif = '00-' + mac.gsub(':', '-') if mac
22
+ bootif = host_param("hardware_type", "01") + mac.gsub(':', '-') if mac
22
23
  ip_cidr = @host.facts['discovery_ip_cidr']
23
24
  ip = @host.facts['discovery_ip']
24
25
  mask = @host.facts['discovery_netmask']
@@ -22,13 +22,14 @@ environments. The template must generate JSON format with the following items
22
22
  "kernel", "initram", "append" and "extra". The kexec command is composed in
23
23
  the following way:
24
24
 
25
- kexec --force --reset-vga --append=$append --initrd=$initram $extra $kernel
25
+ kexec --force --debug --append=$append --initrd=$initram $extra $kernel
26
26
 
27
27
  Please read kexec(8) man page for more information about semantics.
28
+ Extra options like --reset-vga can be set via "extra" array.
28
29
  -%>
29
30
  <%
30
31
  mac = @host.facts['discovery_bootif']
31
- bootif = '00-' + mac.gsub(':', '-') if mac
32
+ bootif = host_param("hardware_type", "01") + mac.gsub(':', '-') if mac
32
33
  ip_cidr = @host.facts['discovery_ip_cidr']
33
34
  ip = @host.facts['discovery_ip']
34
35
  mask = @host.facts['discovery_netmask']
data/extra/discover-host CHANGED
@@ -33,7 +33,7 @@ OptionParser.new do |opts|
33
33
  version = v
34
34
  end
35
35
 
36
- opts.on("-iARRAY", "--interface=ARRAY", Array, "Comma separated array: name,subnet,ip,mac (can be used multiple times, default: eth0,122,7,AA:BB:CC:DD:EE:FF") do |v|
36
+ opts.on("-iARRAY", "--interface=ARRAY", Array, "Comma separated array: name,network/prefix,mac,ip (can be used multiple times, default: eth0,192.168.122.0/24") do |v|
37
37
  interfaces << v
38
38
  end
39
39
 
@@ -66,7 +66,7 @@ OptionParser.new do |opts|
66
66
  end
67
67
  end.parse!
68
68
 
69
- interfaces << ["eth0", "122"] if interfaces.empty?
69
+ interfaces << ["eth0", "192.168.122.0/24"] if interfaces.empty?
70
70
  primary ||= interfaces.first.first
71
71
  bootif ||= interfaces.first.first
72
72
  json = JSON.parse(File.read(base))
@@ -76,15 +76,21 @@ json["discovery_version"] = version
76
76
  unless preserve_interfaces
77
77
  json["interfaces"] = interfaces.map{|i| i.first}.join(',')
78
78
  interfaces.each do |iface|
79
- name, subnet, ipo, mac = iface
79
+ name, subnet, mac, explicit_ip = iface
80
80
  mac ||= (["52"] + 5.times.map { '%02x' % rand(0..255) }).join(':')
81
- ipo ||= rand(1..253)
82
- ip = "192.168.#{subnet}.#{ipo}"
83
81
  json["macaddress_#{name}"] = mac
84
- json["ipaddress_#{name}"] = ip
82
+ _, prefix = subnet.split('/')
83
+ if subnet.include?('.')
84
+ random_ip = IPAddr.new(subnet, Socket::AF_INET) | IPAddr.new(rand(2**(32 - prefix.to_i)), Socket::AF_INET)
85
+ fact_name = "ipaddress"
86
+ else
87
+ random_ip = IPAddr.new(subnet, Socket::AF_INET6) | IPAddr.new(rand(2**(32 - prefix.to_i)), Socket::AF_INET6)
88
+ fact_name = "ipaddress6"
89
+ end
90
+ json["#{fact_name}_#{name}"] = explicit_ip ? explicit_ip : random_ip
85
91
  if name == primary
86
- json["macaddress"] = mac
87
- json["ipaddress"] = ip
92
+ json["macaddress"] = json["macaddress_#{name}"]
93
+ json[fact_name] = json["#{fact_name}_#{name}"]
88
94
  end
89
95
  json["discovery_bootif"] = mac if name == bootif
90
96
  end
@@ -43,13 +43,14 @@ module ForemanDiscovery
43
43
 
44
44
  initializer 'foreman_discovery.register_plugin', :before => :finisher_hook do |app|
45
45
  Foreman::Plugin.register :foreman_discovery do
46
- requires_foreman '>= 1.24.0'
46
+ requires_foreman '>= 2.3'
47
47
 
48
48
  # discovered hosts permissions
49
49
  security_block :discovery do
50
50
  permission :view_discovered_hosts, {
51
51
  :discovered_hosts => [:index, :show, :auto_complete_search, :welcome],
52
- :"api/v2/discovered_hosts" => [:index, :show]
52
+ :"api/v2/discovered_hosts" => [:index, :show],
53
+ :'discovered_hosts/react' => [:index]
53
54
  }, :resource_type => 'Host'
54
55
  permission :submit_discovered_hosts, {
55
56
  :"api/v2/discovered_hosts" => [:facts, :create]
@@ -1,3 +1,3 @@
1
1
  module ForemanDiscovery
2
- VERSION = "16.1.3"
2
+ VERSION = "16.3.5"
3
3
  end
@@ -9,8 +9,8 @@ msgid ""
9
9
  msgstr ""
10
10
  "Project-Id-Version: foreman_discovery 16.3.4\n"
11
11
  "Report-Msgid-Bugs-To: \n"
12
- "PO-Revision-Date: 2020-05-26 17:21+0000\n"
13
- "Last-Translator: Transifex Bot <>\n"
12
+ "PO-Revision-Date: 2020-10-29 17:16+0000\n"
13
+ "Last-Translator: Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>\n"
14
14
  "Language-Team: Catalan (http://www.transifex.com/foreman/foreman/language/ca/)"
15
15
  "\n"
16
16
  "MIME-Version: 1.0\n"
@@ -73,11 +73,11 @@ msgstr ""
73
73
 
74
74
  #: ../app/controllers/api/v2/discovered_hosts_controller.rb:63
75
75
  msgid "required if host is managed and custom partition has not been defined"
76
- msgstr ""
76
+ msgstr "es requereix si l'amfitrió està gestionat i no s'ha definit la partició personalitzada"
77
77
 
78
78
  #: ../app/controllers/api/v2/discovered_hosts_controller.rb:69
79
79
  msgid "Host's owner type"
80
- msgstr ""
80
+ msgstr "Tipus de propietari de l'amfitrió"
81
81
 
82
82
  #: ../app/controllers/api/v2/discovered_hosts_controller.rb:72
83
83
  msgid "Host's parameters (array or indexed hash)"
@@ -85,11 +85,11 @@ msgstr ""
85
85
 
86
86
  #: ../app/controllers/api/v2/discovered_hosts_controller.rb:73
87
87
  msgid "Name of the parameter"
88
- msgstr ""
88
+ msgstr "Nom del paràmetre"
89
89
 
90
90
  #: ../app/controllers/api/v2/discovered_hosts_controller.rb:74
91
91
  msgid "Parameter value"
92
- msgstr ""
92
+ msgstr "Valor del paràmetre"
93
93
 
94
94
  #: ../app/controllers/api/v2/discovered_hosts_controller.rb:75
95
95
  msgid "Type of value"
@@ -331,11 +331,11 @@ msgstr "Cap amfitrió seleccionat"
331
331
  msgid "Something went wrong while selecting hosts - %s"
332
332
  msgstr "Alguna cosa va anar malament mentre se seleccionaven els amfitrions - %s"
333
333
 
334
- #: ../app/controllers/discovery_rules_controller.rb:68
334
+ #: ../app/controllers/discovery_rules_controller.rb:72
335
335
  msgid "Rule enabled"
336
336
  msgstr "Regla habilitada"
337
337
 
338
- #: ../app/controllers/discovery_rules_controller.rb:68
338
+ #: ../app/controllers/discovery_rules_controller.rb:72
339
339
  msgid "Rule disabled"
340
340
  msgstr "Regla inhabilitada"
341
341
 
@@ -343,15 +343,15 @@ msgstr "Regla inhabilitada"
343
343
  msgid "%s ago"
344
344
  msgstr "fa %s"
345
345
 
346
- #: ../app/helpers/discovered_hosts_helper.rb:14 ../app/helpers/discovered_hosts_helper.rb:29 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:37
346
+ #: ../app/helpers/discovered_hosts_helper.rb:14 ../app/helpers/discovered_hosts_helper.rb:29 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:40
347
347
  msgid "Auto Provision"
348
348
  msgstr "Auto aprovisiona"
349
349
 
350
- #: ../app/helpers/discovered_hosts_helper.rb:15 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:38
350
+ #: ../app/helpers/discovered_hosts_helper.rb:15 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:41
351
351
  msgid "Refresh facts"
352
352
  msgstr "Refresca els objectes d'interès"
353
353
 
354
- #: ../app/helpers/discovered_hosts_helper.rb:16 ../app/helpers/discovered_hosts_helper.rb:30 ../app/models/setting/discovered.rb:24 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:39
354
+ #: ../app/helpers/discovered_hosts_helper.rb:16 ../app/helpers/discovered_hosts_helper.rb:30 ../app/models/setting/discovered.rb:24 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:42
355
355
  msgid "Reboot"
356
356
  msgstr "Reinicia"
357
357
 
@@ -363,7 +363,7 @@ msgstr "Enrere"
363
363
  msgid "Select Action"
364
364
  msgstr "Selecciona l'acció"
365
365
 
366
- #: ../app/helpers/discovered_hosts_helper.rb:23 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:40
366
+ #: ../app/helpers/discovered_hosts_helper.rb:23 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:43
367
367
  msgid "Delete %s?"
368
368
  msgstr "Voleu suprimir %s?"
369
369
 
@@ -753,15 +753,15 @@ msgstr ""
753
753
  msgid "Host"
754
754
  msgstr "Amfitrió"
755
755
 
756
- #: ../app/views/dashboard/_discovery_widget_host_list.html.erb:4 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:6 ../app/views/discovered_hosts/_selected_hosts.html.erb:8 ../app/views/discovered_mailer/discovered_summary.html.erb:18 ../app/views/discovered_mailer/discovered_summary.text.erb:10
756
+ #: ../app/views/dashboard/_discovery_widget_host_list.html.erb:4 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:7 ../app/views/discovered_hosts/_selected_hosts.html.erb:8 ../app/views/discovered_mailer/discovered_summary.html.erb:18 ../app/views/discovered_mailer/discovered_summary.text.erb:10
757
757
  msgid "Model"
758
758
  msgstr "Model"
759
759
 
760
- #: ../app/views/dashboard/_discovery_widget_host_list.html.erb:5 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:8 ../app/views/discovered_mailer/discovered_summary.html.erb:20 ../app/views/discovered_mailer/discovered_summary.text.erb:12
760
+ #: ../app/views/dashboard/_discovery_widget_host_list.html.erb:5 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:9 ../app/views/discovered_mailer/discovered_summary.html.erb:20 ../app/views/discovered_mailer/discovered_summary.text.erb:12
761
761
  msgid "CPUs"
762
762
  msgstr "Les CPU"
763
763
 
764
- #: ../app/views/dashboard/_discovery_widget_host_list.html.erb:6 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:9 ../app/views/discovered_mailer/discovered_summary.html.erb:21 ../app/views/discovered_mailer/discovered_summary.text.erb:13
764
+ #: ../app/views/dashboard/_discovery_widget_host_list.html.erb:6 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:10 ../app/views/discovered_mailer/discovered_summary.html.erb:21 ../app/views/discovered_mailer/discovered_summary.text.erb:13
765
765
  msgid "Memory"
766
766
  msgstr "Memòria"
767
767
 
@@ -773,59 +773,59 @@ msgstr ""
773
773
  msgid "Create Host"
774
774
  msgstr "Crea un amfitrió"
775
775
 
776
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:4
776
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:5
777
777
  msgid "Select all items in this page"
778
778
  msgstr "Selecciona tots els ítems en aquesta pàgina"
779
779
 
780
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:4
780
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:5
781
781
  msgid "items selected. Uncheck to Clear"
782
782
  msgstr "ítems seleccionats. Desmarca per netejar"
783
783
 
784
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:5 ../app/views/discovered_hosts/_selected_hosts.html.erb:7 ../app/views/discovered_mailer/discovered_summary.html.erb:17 ../app/views/discovered_mailer/discovered_summary.text.erb:9
784
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:6 ../app/views/discovered_hosts/_selected_hosts.html.erb:7 ../app/views/discovered_mailer/discovered_summary.html.erb:17 ../app/views/discovered_mailer/discovered_summary.text.erb:9
785
785
  msgid "Name"
786
786
  msgstr "Nom"
787
787
 
788
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:7 ../app/views/discovered_mailer/discovered_summary.html.erb:19 ../app/views/discovered_mailer/discovered_summary.text.erb:11
788
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:8 ../app/views/discovered_mailer/discovered_summary.html.erb:19 ../app/views/discovered_mailer/discovered_summary.text.erb:11
789
789
  msgid "IP Address"
790
790
  msgstr "Adreça IP"
791
791
 
792
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:10
792
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:11
793
793
  msgid "Disk Count"
794
794
  msgstr ""
795
795
 
796
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:11
796
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:12
797
797
  msgid "Disks Size"
798
798
  msgstr ""
799
799
 
800
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:15 ../app/views/discovered_hosts/_selected_hosts.html.erb:9
800
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:16 ../app/views/discovered_hosts/_selected_hosts.html.erb:9
801
801
  msgid "Location"
802
802
  msgstr "Ubicació"
803
803
 
804
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:16 ../app/views/discovered_hosts/_selected_hosts.html.erb:10
804
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:17 ../app/views/discovered_hosts/_selected_hosts.html.erb:10
805
805
  msgid "Organization"
806
806
  msgstr "Organització"
807
807
 
808
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:17
808
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:18
809
809
  msgid "Subnet"
810
810
  msgstr "Subxarxa"
811
811
 
812
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:18
812
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:19
813
813
  msgid "Last Facts Upload"
814
814
  msgstr ""
815
815
 
816
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:19 ../app/views/discovery_rules/index.html.erb:12
816
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:20 ../app/views/discovery_rules/index.html.erb:12
817
817
  msgid "Actions"
818
818
  msgstr "Accions"
819
819
 
820
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:51
820
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:55
821
821
  msgid "Please Confirm"
822
822
  msgstr "Si us plau, confirmeu"
823
823
 
824
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:57
824
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:61
825
825
  msgid "Cancel"
826
826
  msgstr "Cancel·la"
827
827
 
828
- #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:58
828
+ #: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:62
829
829
  msgid "Submit"
830
830
  msgstr "Envia"
831
831
 
@@ -969,7 +969,7 @@ msgstr "Edita %s"
969
969
  msgid "Discovery Rules"
970
970
  msgstr "Regles de descobriment"
971
971
 
972
- #: ../app/views/discovery_rules/index.html.erb:2
972
+ #: ../app/views/discovery_rules/index.html.erb:2 ../webpack/src/ForemanDiscovery/DiscoveryRules/Components/EmptyState/EmptyState.js:9
973
973
  msgid "Create Rule"
974
974
  msgstr ""
975
975
 
@@ -1001,6 +1001,10 @@ msgstr "Habilitada"
1001
1001
  msgid "New Discovery Rule"
1002
1002
  msgstr "Regla de descobriment nova"
1003
1003
 
1004
+ #: ../app/views/discovery_rules/welcome.html.erb:8
1005
+ msgid "Discovered Rules"
1006
+ msgstr ""
1007
+
1004
1008
  #: ../db/seeds.d/50_discovery_templates.rb:5
1005
1009
  msgid "Command line options for kexec during PXE-less provisioning."
1006
1010
  msgstr ""
@@ -1037,21 +1041,26 @@ msgstr ""
1037
1041
  msgid "ID of Discovery Proxy to use within this subnet for managing connection to discovered hosts"
1038
1042
  msgstr ""
1039
1043
 
1044
+ #: ../webpack/__mocks__/foremanReact/components/common/EmptyState/EmptyStatePattern.js:33
1045
+ msgid "For more information please see "
1046
+ msgstr ""
1047
+
1048
+ #: ../webpack/__mocks__/foremanReact/components/common/EmptyState/EmptyStatePattern.js:34
1049
+ msgid "documentation"
1050
+ msgstr ""
1051
+
1040
1052
  #: action_names.rb:2
1041
- msgid "Remote action:"
1053
+ msgid "Action with sub plans"
1042
1054
  msgstr ""
1043
1055
 
1044
1056
  #: action_names.rb:3
1045
- msgid "Import Puppet classes"
1057
+ msgid "Import facts"
1046
1058
  msgstr ""
1047
1059
 
1048
1060
  #: action_names.rb:4
1049
- msgid "Import facts"
1061
+ msgid "Import Puppet classes"
1050
1062
  msgstr ""
1051
1063
 
1052
1064
  #: action_names.rb:5
1053
- msgid "Action with sub plans"
1065
+ msgid "Remote action:"
1054
1066
  msgstr ""
1055
-
1056
- #~ msgid "Learn more about this in the documentation."
1057
- #~ msgstr "Obteniu més informació sobre això a la documentació."