foreman_discovery 16.1.0 → 16.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/discovered_hosts_controller.rb +5 -3
- data/app/models/host/discovered.rb +22 -26
- data/app/models/host/managed_extensions.rb +2 -2
- data/app/models/setting/discovered.rb +3 -1
- data/app/services/foreman_discovery/host_converter.rb +14 -6
- data/app/services/foreman_discovery/host_fact_importer.rb +10 -0
- data/app/services/foreman_discovery/node_api/node_resource.rb +1 -0
- data/app/views/discovered_hosts/_discovered_host_modal.html.erb +0 -2
- data/app/views/foreman_discovery/debian_kexec.erb +2 -1
- data/app/views/foreman_discovery/redhat_kexec.erb +2 -1
- data/extra/discover-host +14 -8
- data/lib/foreman_discovery/engine.rb +1 -1
- data/lib/foreman_discovery/version.rb +1 -1
- data/locale/ca/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ca/foreman_discovery.edit.po +146 -216
- data/locale/ca/foreman_discovery.po +4 -1
- data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/de/foreman_discovery.edit.po +144 -215
- data/locale/de/foreman_discovery.po +4 -1
- data/locale/en/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en/foreman_discovery.edit.po +76 -72
- data/locale/en/foreman_discovery.po +4 -1
- data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en_GB/foreman_discovery.edit.po +146 -216
- data/locale/en_GB/foreman_discovery.po +4 -1
- data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/es/foreman_discovery.edit.po +146 -216
- data/locale/es/foreman_discovery.po +4 -1
- data/locale/foreman_discovery.pot +77 -73
- data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/fr/foreman_discovery.edit.po +144 -215
- data/locale/fr/foreman_discovery.po +4 -1
- data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/gl/foreman_discovery.edit.po +146 -216
- data/locale/gl/foreman_discovery.po +4 -1
- data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/it/foreman_discovery.edit.po +146 -216
- data/locale/it/foreman_discovery.po +4 -1
- data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ja/foreman_discovery.edit.po +149 -216
- data/locale/ja/foreman_discovery.po +4 -1
- data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ko/foreman_discovery.edit.po +147 -215
- data/locale/ko/foreman_discovery.po +4 -1
- data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/pt_BR/foreman_discovery.edit.po +146 -216
- data/locale/pt_BR/foreman_discovery.po +4 -1
- data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ru/foreman_discovery.edit.po +149 -219
- data/locale/ru/foreman_discovery.po +4 -1
- data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/sv_SE/foreman_discovery.edit.po +146 -216
- data/locale/sv_SE/foreman_discovery.po +4 -1
- data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_CN/foreman_discovery.edit.po +149 -216
- data/locale/zh_CN/foreman_discovery.po +4 -1
- data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_TW/foreman_discovery.edit.po +149 -216
- data/locale/zh_TW/foreman_discovery.po +4 -1
- data/test/facts/only-ipv6.json +205 -0
- data/test/facts/skylake-ipv6.json +223 -0
- data/test/functional/api/v2/settings_controller_test.rb +2 -2
- data/test/functional/discovered_hosts_controller_test.rb +17 -8
- data/test/unit/discovered_extensions_test.rb +1 -0
- data/test/unit/host_discovered_test.rb +0 -16
- data/test/unit/managed_extensions_test.rb +1 -0
- metadata +33 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: accf12de8ae1253e5023ba98c65da7c3af14aa8da4691fe67dd7f18bc5717518
|
4
|
+
data.tar.gz: 0dd4c83a875917ccf3933679a31a747d8f559e5195415fab619cc0220bcd97c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8fd61670a325106898043ab9533f7512835394a6141139580436e9c8fdd0027ff0aee02c0a53f6d92b5b4535d5bcbcabfb1cd91ddc0fd85ce8a0a54d2cde27e
|
7
|
+
data.tar.gz: 90263e8535e3d338ee335a280ff89dafd188d7e92c8f7becb340bc6ede0884bbf4ee915ad158de546c84058240c7338d1d4a736f3124e8c6c57f935862073f83
|
@@ -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 =
|
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:
|
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
|
@@ -44,9 +44,13 @@ class Host::Discovered < ::Host::Base
|
|
44
44
|
|
45
45
|
# Discovery import workflow:
|
46
46
|
# discovered#import_host ->
|
47
|
-
#
|
48
|
-
#
|
49
|
-
#
|
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
|
-
|
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,15 +140,17 @@ 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
146
|
raise ::Foreman::WrappedException.new(e, N_("Could not get facts from proxy %{url}: %{error}"), :url => proxy_url, :error => e)
|
151
147
|
end
|
152
148
|
|
153
|
-
def reboot(
|
149
|
+
def reboot(old_ip = nil, new_ip = nil)
|
154
150
|
# perform the action against the original lease as well as the new reservation
|
155
|
-
|
151
|
+
ips = [old_ip, new_ip, self.ip].compact.uniq
|
152
|
+
logger.debug "Performing reboot calls against #{ips.to_sentence}, facts left #{facts.count}"
|
153
|
+
ips.each do |next_ip|
|
156
154
|
begin
|
157
155
|
node_url = proxy_url(next_ip)
|
158
156
|
logger.debug "Performing reboot call against #{node_url}"
|
@@ -161,17 +159,17 @@ class Host::Discovered < ::Host::Base
|
|
161
159
|
rescue => e
|
162
160
|
msg = N_("Unable to perform reboot on %{name} (%{url}): %{msg}")
|
163
161
|
::Foreman::Logging.exception(msg % { :name => name, :url => node_url, :msg => e.to_s }, e)
|
164
|
-
if next_ip == self.ip
|
165
|
-
raise ::Foreman::WrappedException.new(e, msg, :name => name, :url => node_url, :msg => e.to_s)
|
166
|
-
end
|
167
162
|
end
|
168
163
|
end
|
169
|
-
|
164
|
+
msg = N_("Unable to perform %{action} on %{ips}")
|
165
|
+
raise ::Foreman::Exception.new(msg, action: "reboot", ips: ips.to_sentence)
|
170
166
|
end
|
171
167
|
|
172
|
-
def kexec(json,
|
168
|
+
def kexec(json, old_ip = nil, new_ip = nil)
|
173
169
|
# perform the action against the original lease as well as the new reservation
|
174
|
-
|
170
|
+
ips = [old_ip, new_ip, self.ip].compact.uniq
|
171
|
+
logger.debug "Performing kexec calls against #{ips.to_sentence}, #{facts.count} facts left"
|
172
|
+
ips.each do |next_ip|
|
175
173
|
begin
|
176
174
|
node_url = proxy_url(next_ip)
|
177
175
|
logger.debug "Performing kexec call against #{node_url}"
|
@@ -180,12 +178,10 @@ class Host::Discovered < ::Host::Base
|
|
180
178
|
rescue => e
|
181
179
|
msg = N_("Unable to perform kexec on %{name} (%{url}): %{msg}")
|
182
180
|
::Foreman::Logging.exception(msg % { :name => name, :url => node_url, :msg => e.to_s }, e)
|
183
|
-
if next_ip == self.ip
|
184
|
-
raise ::Foreman::WrappedException.new(e, msg, :name => name, :url => node_url, :msg => e.to_s)
|
185
|
-
end
|
186
181
|
end
|
187
182
|
end
|
188
|
-
|
183
|
+
msg = N_("Unable to perform %{action} on %{ips}")
|
184
|
+
raise ::Foreman::Exception.new(msg, action: "kexec", ips: ips.to_sentence)
|
189
185
|
end
|
190
186
|
|
191
187
|
def self.model_name
|
@@ -27,7 +27,7 @@ module Host::ManagedExtensions
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def setReboot
|
30
|
-
old.becomes(Host::Discovered).reboot(
|
30
|
+
old.becomes(Host::Discovered).reboot(old.ip, ip)
|
31
31
|
# It is too late to report error in the post_queue, we catch them and
|
32
32
|
# continue. If flash is implemented for new hosts (http://projects.theforeman.org/issues/10559)
|
33
33
|
# we can report the error to the user perhaps.
|
@@ -55,7 +55,7 @@ module Host::ManagedExtensions
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def setKexec
|
58
|
-
old.becomes(Host::Discovered).kexec(render_kexec_template.to_json)
|
58
|
+
old.becomes(Host::Discovered).kexec(render_kexec_template.to_json, old.ip, ip)
|
59
59
|
true
|
60
60
|
rescue ::Foreman::Exception => e
|
61
61
|
Foreman::Logging.exception("Unable to kexec", e)
|
@@ -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
|
-
|
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
|
[
|
@@ -35,12 +35,21 @@ class ForemanDiscovery::HostConverter
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def self.unused_ip_for_subnet(subnet, mac, existing_ip)
|
38
|
-
|
39
|
-
|
38
|
+
# prefer existing reservation to prevent conflicts
|
39
|
+
existing_rec = subnet&.dhcp_proxy&.record(subnet.network, mac)
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
if existing_rec && existing_rec.type == "reservation"
|
42
|
+
# reuse the reservation
|
43
|
+
existing_rec.ip
|
44
|
+
else
|
45
|
+
# no reservation - find new unused IP
|
46
|
+
ipam = subnet.unused_ip(mac)
|
47
|
+
raise(::Foreman::Exception.new(N_("IPAM must be configured for subnet '%s'"), subnet)) unless ipam.present?
|
48
|
+
|
49
|
+
# None IPAM returns nil - in that case keep the current address
|
50
|
+
suggested_ip = ipam.suggest_ip
|
51
|
+
suggested_ip.nil? ? existing_ip : suggested_ip
|
52
|
+
end
|
44
53
|
end
|
45
54
|
|
46
55
|
def self.unused_ip_for_host(host, new_subnet = nil, new_subnet6 = nil)
|
@@ -51,7 +60,6 @@ class ForemanDiscovery::HostConverter
|
|
51
60
|
interface.subnet6 = new_subnet6 if new_subnet6
|
52
61
|
interface.ip = unused_ip_for_subnet(interface.subnet, interface.mac, interface.ip) if interface.subnet
|
53
62
|
interface.ip6 = unused_ip_for_subnet(interface.subnet6, interface.mac, interface.ip6) if interface.subnet6
|
54
|
-
interface.save!
|
55
63
|
end
|
56
64
|
end
|
57
65
|
|
@@ -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
|
@@ -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>
|
@@ -12,9 +12,10 @@ 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 --
|
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']
|
@@ -22,9 +22,10 @@ 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 --
|
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']
|
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,
|
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,
|
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
|
-
|
82
|
+
subnet_woprefix, prefix = subnet.split('/')
|
83
|
+
if subnet.include?('.')
|
84
|
+
random_ip = IPAddr.new(subnet, Socket::AF_INET) | IPAddr.new(rand(2**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**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"] =
|
87
|
-
json[
|
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,7 +43,7 @@ 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 '>=
|
46
|
+
requires_foreman '>= 2.2'
|
47
47
|
|
48
48
|
# discovered hosts permissions
|
49
49
|
security_block :discovery do
|
Binary file
|
@@ -1,18 +1,18 @@
|
|
1
1
|
# SOME DESCRIPTIVE TITLE.
|
2
2
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
3
3
|
# This file is distributed under the same license as the foreman_discovery package.
|
4
|
-
#
|
4
|
+
#
|
5
5
|
# Translators:
|
6
6
|
# Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>, 2017
|
7
7
|
# Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>, 2015-2016
|
8
8
|
msgid ""
|
9
9
|
msgstr ""
|
10
|
-
"Project-Id-Version: foreman_discovery 16.0
|
10
|
+
"Project-Id-Version: foreman_discovery 16.1.0\n"
|
11
11
|
"Report-Msgid-Bugs-To: \n"
|
12
|
-
"POT-Creation-Date: 2020-05-11 14:58+0530\n"
|
13
12
|
"PO-Revision-Date: 2020-05-26 17:21+0000\n"
|
14
13
|
"Last-Translator: Transifex Bot <>\n"
|
15
|
-
"Language-Team: Catalan (http://www.transifex.com/foreman/foreman/language/ca/)
|
14
|
+
"Language-Team: Catalan (http://www.transifex.com/foreman/foreman/language/ca/)"
|
15
|
+
"\n"
|
16
16
|
"MIME-Version: 1.0\n"
|
17
17
|
"Content-Type: text/plain; charset=UTF-8\n"
|
18
18
|
"Content-Transfer-Encoding: 8bit\n"
|
@@ -23,23 +23,19 @@ msgstr ""
|
|
23
23
|
msgid "List all discovered hosts"
|
24
24
|
msgstr "Llista tots els amfitrions descoberts"
|
25
25
|
|
26
|
-
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:17
|
27
|
-
#: ../app/controllers/api/v2/discovery_rules_controller.rb:15
|
26
|
+
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:17 ../app/controllers/api/v2/discovery_rules_controller.rb:15
|
28
27
|
msgid "filter results"
|
29
28
|
msgstr "filtra els resultats"
|
30
29
|
|
31
|
-
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:18
|
32
|
-
#: ../app/controllers/api/v2/discovery_rules_controller.rb:16
|
30
|
+
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:18 ../app/controllers/api/v2/discovery_rules_controller.rb:16
|
33
31
|
msgid "sort results"
|
34
32
|
msgstr "ordena els resultats"
|
35
33
|
|
36
|
-
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:19
|
37
|
-
#: ../app/controllers/api/v2/discovery_rules_controller.rb:17
|
34
|
+
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:19 ../app/controllers/api/v2/discovery_rules_controller.rb:17
|
38
35
|
msgid "paginate results"
|
39
36
|
msgstr "pagina els resultats"
|
40
37
|
|
41
|
-
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:20
|
42
|
-
#: ../app/controllers/api/v2/discovery_rules_controller.rb:18
|
38
|
+
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:20 ../app/controllers/api/v2/discovery_rules_controller.rb:18
|
43
39
|
msgid "number of entries per request"
|
44
40
|
msgstr "Nombre d'entrades per petició"
|
45
41
|
|
@@ -47,8 +43,7 @@ msgstr "Nombre d'entrades per petició"
|
|
47
43
|
msgid "Show a discovered host"
|
48
44
|
msgstr "Mostra un amfitrió descobert"
|
49
45
|
|
50
|
-
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:37
|
51
|
-
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:79
|
46
|
+
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:37 ../app/controllers/api/v2/discovered_hosts_controller.rb:79
|
52
47
|
msgid "DHCP filename option (Grub2 or PXELinux by default)"
|
53
48
|
msgstr ""
|
54
49
|
|
@@ -69,14 +64,11 @@ msgid "not required if it's a virtual machine"
|
|
69
64
|
msgstr ""
|
70
65
|
|
71
66
|
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:76
|
72
|
-
msgid ""
|
73
|
-
"UUID to track orchestration tasks status, GET /api/orchestration/:UUID/tasks"
|
67
|
+
msgid "UUID to track orchestration tasks status, GET /api/orchestration/:UUID/tasks"
|
74
68
|
msgstr ""
|
75
69
|
|
76
70
|
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:78
|
77
|
-
msgid ""
|
78
|
-
"required if value is not inherited from host group or default password in "
|
79
|
-
"settings"
|
71
|
+
msgid "required if value is not inherited from host group or default password in settings"
|
80
72
|
msgstr ""
|
81
73
|
|
82
74
|
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:89
|
@@ -88,18 +80,14 @@ msgid "Upload facts for a host, creating the host if required"
|
|
88
80
|
msgstr "Puja els objectes d'interès per a un amfitrió, creant el nou amfitrió si fos necessari"
|
89
81
|
|
90
82
|
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:97
|
91
|
-
msgid ""
|
92
|
-
"hash containing facts for the host with minimum set of facts: "
|
93
|
-
"discovery_bootif, macaddress_eth0, ipaddress, ipaddress_eth0, interfaces: "
|
94
|
-
"eth0 (example in case primary interface is named eth0)"
|
83
|
+
msgid "hash containing facts for the host with minimum set of facts: discovery_bootif, macaddress_eth0, ipaddress, ipaddress_eth0, interfaces: eth0 (example in case primary interface is named eth0)"
|
95
84
|
msgstr ""
|
96
85
|
|
97
86
|
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:116
|
98
87
|
msgid "Execute rules against a discovered host"
|
99
88
|
msgstr ""
|
100
89
|
|
101
|
-
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:122
|
102
|
-
#: ../app/controllers/discovered_hosts_controller.rb:160
|
90
|
+
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:122 ../app/controllers/discovered_hosts_controller.rb:160
|
103
91
|
msgid "Host %{host} was provisioned with rule %{rule}"
|
104
92
|
msgstr "L'amfitrió %{host} va ser aprovisionat amb la regla %{rule}"
|
105
93
|
|
@@ -107,8 +95,7 @@ msgstr "L'amfitrió %{host} va ser aprovisionat amb la regla %{rule}"
|
|
107
95
|
msgid "Unable to provision %{host}: %{errors}"
|
108
96
|
msgstr "No es pot aprovisionar a %{host}: %{errors}"
|
109
97
|
|
110
|
-
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:131
|
111
|
-
#: ../app/controllers/discovered_hosts_controller.rb:167
|
98
|
+
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:131 ../app/controllers/discovered_hosts_controller.rb:167
|
112
99
|
msgid "No rule found for host %s"
|
113
100
|
msgstr "No s'ha trobat cap regla per a l'amfitrió %s"
|
114
101
|
|
@@ -116,13 +103,11 @@ msgstr "No s'ha trobat cap regla per a l'amfitrió %s"
|
|
116
103
|
msgid "Execute rules against all currently discovered hosts"
|
117
104
|
msgstr "Executa les regles contra tots els amfitrions detectats actualment"
|
118
105
|
|
119
|
-
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:142
|
120
|
-
#: ../app/controllers/discovered_hosts_controller.rb:173
|
106
|
+
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:142 ../app/controllers/discovered_hosts_controller.rb:173
|
121
107
|
msgid "Errors during auto provisioning: %s"
|
122
108
|
msgstr "Erros durant l'auto aprovisionament: %s"
|
123
109
|
|
124
|
-
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:145
|
125
|
-
#: ../app/controllers/discovered_hosts_controller.rb:176
|
110
|
+
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:145 ../app/controllers/discovered_hosts_controller.rb:176
|
126
111
|
msgid "No discovered hosts to provision"
|
127
112
|
msgstr "Sense amfitrions descoberts per aprovisionar"
|
128
113
|
|
@@ -142,8 +127,7 @@ msgstr "S'està reiniciant un amfitrió descobert"
|
|
142
127
|
msgid "Rebooting all discovered hosts"
|
143
128
|
msgstr "S'estan reiniciant tots els amfitrions descoberts"
|
144
129
|
|
145
|
-
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:207
|
146
|
-
#: ../app/controllers/discovered_hosts_controller.rb:129
|
130
|
+
#: ../app/controllers/api/v2/discovered_hosts_controller.rb:207 ../app/controllers/discovered_hosts_controller.rb:129
|
147
131
|
msgid "Discovered hosts are rebooting now"
|
148
132
|
msgstr "Ara s'estan reiniciant els amfitrions descoberts"
|
149
133
|
|
@@ -168,8 +152,7 @@ msgid "the hostgroup that is used to auto provision a host"
|
|
168
152
|
msgstr "el grup d'amfitrions que s'utilitza per a l'auto aprovisionament d'un amfitrió"
|
169
153
|
|
170
154
|
#: ../app/controllers/api/v2/discovery_rules_controller.rb:35
|
171
|
-
msgid ""
|
172
|
-
"defines a pattern to assign human-readable hostnames to the matching hosts"
|
155
|
+
msgid "defines a pattern to assign human-readable hostnames to the matching hosts"
|
173
156
|
msgstr ""
|
174
157
|
|
175
158
|
#: ../app/controllers/api/v2/discovery_rules_controller.rb:36
|
@@ -177,8 +160,7 @@ msgid "enables to limit maximum amount of provisioned hosts per rule"
|
|
177
160
|
msgstr "permet la limitació del nombre total màxim dels amfitrions aprovisionats per cada regla"
|
178
161
|
|
179
162
|
#: ../app/controllers/api/v2/discovery_rules_controller.rb:37
|
180
|
-
msgid ""
|
181
|
-
"puts the rules in order, low numbers go first. Must be greater then zero"
|
163
|
+
msgid "puts the rules in order, low numbers go first. Must be greater then zero"
|
182
164
|
msgstr ""
|
183
165
|
|
184
166
|
#: ../app/controllers/api/v2/discovery_rules_controller.rb:38
|
@@ -277,43 +259,43 @@ msgstr "No s'ha pogut auto aprovisionar l'amfitrió %s: %s"
|
|
277
259
|
msgid "Discovered hosts are provisioning now"
|
278
260
|
msgstr "Els amfitrions descoberts ara tenen aprovisionament"
|
279
261
|
|
280
|
-
#: ../app/controllers/discovered_hosts_controller.rb:
|
262
|
+
#: ../app/controllers/discovered_hosts_controller.rb:226
|
281
263
|
msgid "Highlights"
|
282
264
|
msgstr ""
|
283
265
|
|
284
|
-
#: ../app/controllers/discovered_hosts_controller.rb:
|
266
|
+
#: ../app/controllers/discovered_hosts_controller.rb:226
|
285
267
|
msgid "Storage"
|
286
268
|
msgstr ""
|
287
269
|
|
288
|
-
#: ../app/controllers/discovered_hosts_controller.rb:
|
270
|
+
#: ../app/controllers/discovered_hosts_controller.rb:226
|
289
271
|
msgid "Hardware"
|
290
272
|
msgstr ""
|
291
273
|
|
292
|
-
#: ../app/controllers/discovered_hosts_controller.rb:
|
274
|
+
#: ../app/controllers/discovered_hosts_controller.rb:226
|
293
275
|
msgid "Network"
|
294
276
|
msgstr ""
|
295
277
|
|
296
|
-
#: ../app/controllers/discovered_hosts_controller.rb:
|
278
|
+
#: ../app/controllers/discovered_hosts_controller.rb:226
|
297
279
|
msgid "Software"
|
298
280
|
msgstr ""
|
299
281
|
|
300
|
-
#: ../app/controllers/discovered_hosts_controller.rb:
|
282
|
+
#: ../app/controllers/discovered_hosts_controller.rb:226
|
301
283
|
msgid "IPMI"
|
302
284
|
msgstr ""
|
303
285
|
|
304
|
-
#: ../app/controllers/discovered_hosts_controller.rb:
|
286
|
+
#: ../app/controllers/discovered_hosts_controller.rb:226
|
305
287
|
msgid "Miscellaneous"
|
306
288
|
msgstr ""
|
307
289
|
|
308
|
-
#: ../app/controllers/discovered_hosts_controller.rb:
|
290
|
+
#: ../app/controllers/discovered_hosts_controller.rb:304
|
309
291
|
msgid "No hosts were found with that id or name"
|
310
292
|
msgstr "No s'ha trobat cap amfitrió amb aquest ID o nom"
|
311
293
|
|
312
|
-
#: ../app/controllers/discovered_hosts_controller.rb:
|
294
|
+
#: ../app/controllers/discovered_hosts_controller.rb:308
|
313
295
|
msgid "No hosts selected"
|
314
296
|
msgstr "Cap amfitrió seleccionat"
|
315
297
|
|
316
|
-
#: ../app/controllers/discovered_hosts_controller.rb:
|
298
|
+
#: ../app/controllers/discovered_hosts_controller.rb:314
|
317
299
|
msgid "Something went wrong while selecting hosts - %s"
|
318
300
|
msgstr "Alguna cosa va anar malament mentre se seleccionaven els amfitrions - %s"
|
319
301
|
|
@@ -329,21 +311,15 @@ msgstr "Regla inhabilitada"
|
|
329
311
|
msgid "%s ago"
|
330
312
|
msgstr "fa %s"
|
331
313
|
|
332
|
-
#: ../app/helpers/discovered_hosts_helper.rb:14
|
333
|
-
#: ../app/helpers/discovered_hosts_helper.rb:29
|
334
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:37
|
314
|
+
#: ../app/helpers/discovered_hosts_helper.rb:14 ../app/helpers/discovered_hosts_helper.rb:29 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:37
|
335
315
|
msgid "Auto Provision"
|
336
316
|
msgstr "Auto aprovisiona"
|
337
317
|
|
338
|
-
#: ../app/helpers/discovered_hosts_helper.rb:15
|
339
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:38
|
318
|
+
#: ../app/helpers/discovered_hosts_helper.rb:15 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:38
|
340
319
|
msgid "Refresh facts"
|
341
320
|
msgstr "Refresca els objectes d'interès"
|
342
321
|
|
343
|
-
#: ../app/helpers/discovered_hosts_helper.rb:16
|
344
|
-
#: ../app/helpers/discovered_hosts_helper.rb:30
|
345
|
-
#: ../app/models/setting/discovered.rb:22
|
346
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:39
|
322
|
+
#: ../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
|
347
323
|
msgid "Reboot"
|
348
324
|
msgstr "Reinicia"
|
349
325
|
|
@@ -351,13 +327,11 @@ msgstr "Reinicia"
|
|
351
327
|
msgid "Back"
|
352
328
|
msgstr "Enrere"
|
353
329
|
|
354
|
-
#: ../app/helpers/discovered_hosts_helper.rb:21
|
355
|
-
#: ../app/helpers/discovered_hosts_helper.rb:35
|
330
|
+
#: ../app/helpers/discovered_hosts_helper.rb:21 ../app/helpers/discovered_hosts_helper.rb:35
|
356
331
|
msgid "Select Action"
|
357
332
|
msgstr "Selecciona l'acció"
|
358
333
|
|
359
|
-
#: ../app/helpers/discovered_hosts_helper.rb:23
|
360
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:40
|
334
|
+
#: ../app/helpers/discovered_hosts_helper.rb:23 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:40
|
361
335
|
msgid "Delete %s?"
|
362
336
|
msgstr "Voleu suprimir %s?"
|
363
337
|
|
@@ -377,8 +351,7 @@ msgstr "Suprimeix"
|
|
377
351
|
msgid "%s - The following hosts are about to be changed"
|
378
352
|
msgstr "%s - Els següents amfitrions estan a punt de ser canviats"
|
379
353
|
|
380
|
-
#: ../app/helpers/discovered_hosts_helper.rb:46
|
381
|
-
#: ../app/views/dashboard/_discovery_widget_host.html.erb:2
|
354
|
+
#: ../app/helpers/discovered_hosts_helper.rb:46 ../app/views/dashboard/_discovery_widget_host.html.erb:2
|
382
355
|
msgid "N/A"
|
383
356
|
msgstr "N/D"
|
384
357
|
|
@@ -398,12 +371,7 @@ msgstr "Es va informar en els últims 7 dies"
|
|
398
371
|
msgid "Provision"
|
399
372
|
msgstr "Aprovisiona"
|
400
373
|
|
401
|
-
#: ../app/helpers/discovery_rules_helper.rb:26
|
402
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:1
|
403
|
-
#: ../app/views/discovered_hosts/welcome.html.erb:1
|
404
|
-
#: ../app/views/discovered_hosts/welcome.html.erb:6
|
405
|
-
#: ../lib/foreman_discovery/engine.rb:158
|
406
|
-
#: ../lib/foreman_discovery/engine.rb:173
|
374
|
+
#: ../app/helpers/discovery_rules_helper.rb:26 ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:1 ../app/views/discovered_hosts/welcome.html.erb:1 ../app/views/discovered_hosts/welcome.html.erb:6 ../lib/foreman_discovery/engine.rb:158 ../lib/foreman_discovery/engine.rb:173
|
407
375
|
msgid "Discovered Hosts"
|
408
376
|
msgstr ""
|
409
377
|
|
@@ -452,17 +420,14 @@ msgid "must be present."
|
|
452
420
|
msgstr ""
|
453
421
|
|
454
422
|
#: ../app/models/discovery_rule.rb:52
|
455
|
-
msgid ""
|
456
|
-
"Host group
|
457
|
-
msgid_plural ""
|
458
|
-
"Host group organizations %s must also be associated to the discovery rule"
|
423
|
+
msgid "Host group organization %s must also be associated to the discovery rule"
|
424
|
+
msgid_plural "Host group organizations %s must also be associated to the discovery rule"
|
459
425
|
msgstr[0] ""
|
460
426
|
msgstr[1] ""
|
461
427
|
|
462
428
|
#: ../app/models/discovery_rule.rb:56
|
463
429
|
msgid "Host group location %s must also be associated to the discovery rule"
|
464
|
-
msgid_plural ""
|
465
|
-
"Host group locations %s must also be associated to the discovery rule"
|
430
|
+
msgid_plural "Host group locations %s must also be associated to the discovery rule"
|
466
431
|
msgstr[0] ""
|
467
432
|
msgstr[1] ""
|
468
433
|
|
@@ -478,39 +443,39 @@ msgstr ""
|
|
478
443
|
msgid "MAC-based name"
|
479
444
|
msgstr ""
|
480
445
|
|
481
|
-
#: ../app/models/host/discovered.rb:
|
446
|
+
#: ../app/models/host/discovered.rb:55
|
482
447
|
msgid "Invalid facts, must be a Hash"
|
483
448
|
msgstr "Objectes d'interès no vàlids, han de tenir un Hash"
|
484
449
|
|
485
|
-
#: ../app/models/host/discovered.rb:
|
486
|
-
msgid ""
|
487
|
-
"Expected discovery_fact '%s' is missing, unable to detect primary interface "
|
488
|
-
"and set hostname"
|
450
|
+
#: ../app/models/host/discovered.rb:60
|
451
|
+
msgid "Expected discovery_fact '%s' is missing, unable to detect primary interface and set hostname"
|
489
452
|
msgstr ""
|
490
453
|
|
491
|
-
#: ../app/models/host/discovered.rb:
|
492
|
-
msgid ""
|
493
|
-
"Invalid facts: hash does not contain a valid value for any of the facts in "
|
494
|
-
"the discovery_hostname setting: %s"
|
454
|
+
#: ../app/models/host/discovered.rb:73
|
455
|
+
msgid "Invalid facts: hash does not contain a valid value for any of the facts in the discovery_hostname setting: %s"
|
495
456
|
msgstr ""
|
496
457
|
|
497
|
-
#: ../app/models/host/discovered.rb:
|
458
|
+
#: ../app/models/host/discovered.rb:100
|
498
459
|
msgid "Facts could not be imported"
|
499
460
|
msgstr ""
|
500
461
|
|
501
|
-
#: ../app/models/host/discovered.rb:
|
462
|
+
#: ../app/models/host/discovered.rb:146
|
502
463
|
msgid "Could not get facts from proxy %{url}: %{error}"
|
503
464
|
msgstr "No s'han pogut obtenir els objectes d'interès del servidor intermediari %{url}: %{error}"
|
504
465
|
|
505
|
-
#: ../app/models/host/discovered.rb:
|
466
|
+
#: ../app/models/host/discovered.rb:160
|
506
467
|
msgid "Unable to perform reboot on %{name} (%{url}): %{msg}"
|
507
468
|
msgstr ""
|
508
469
|
|
509
|
-
#: ../app/models/host/discovered.rb:
|
470
|
+
#: ../app/models/host/discovered.rb:164 ../app/models/host/discovered.rb:183
|
471
|
+
msgid "Unable to perform %{action} on %{ips}"
|
472
|
+
msgstr ""
|
473
|
+
|
474
|
+
#: ../app/models/host/discovered.rb:179
|
510
475
|
msgid "Unable to perform kexec on %{name} (%{url}): %{msg}"
|
511
476
|
msgstr ""
|
512
477
|
|
513
|
-
#: ../app/models/host/discovered.rb:
|
478
|
+
#: ../app/models/host/discovered.rb:203
|
514
479
|
msgid "Invalid hostname: Could not normalize the hostname"
|
515
480
|
msgstr ""
|
516
481
|
|
@@ -538,191 +503,183 @@ msgstr ""
|
|
538
503
|
msgid "Rebuild DNS for %s"
|
539
504
|
msgstr ""
|
540
505
|
|
541
|
-
#: ../app/models/setting/discovered.rb:
|
506
|
+
#: ../app/models/setting/discovered.rb:17
|
542
507
|
msgid "The default location to place discovered hosts in"
|
543
508
|
msgstr ""
|
544
509
|
|
545
|
-
#: ../app/models/setting/discovered.rb:
|
510
|
+
#: ../app/models/setting/discovered.rb:17
|
546
511
|
msgid "Discovery location"
|
547
512
|
msgstr ""
|
548
513
|
|
549
|
-
#: ../app/models/setting/discovered.rb:
|
514
|
+
#: ../app/models/setting/discovered.rb:18
|
550
515
|
msgid "The default organization to place discovered hosts in"
|
551
516
|
msgstr ""
|
552
517
|
|
553
|
-
#: ../app/models/setting/discovered.rb:
|
518
|
+
#: ../app/models/setting/discovered.rb:18
|
554
519
|
msgid "Discovery organization"
|
555
520
|
msgstr ""
|
556
521
|
|
557
|
-
#: ../app/models/setting/discovered.rb:
|
522
|
+
#: ../app/models/setting/discovered.rb:19
|
558
523
|
msgid "Fact name to use for primary interface detection"
|
559
524
|
msgstr ""
|
560
525
|
|
561
|
-
#: ../app/models/setting/discovered.rb:
|
526
|
+
#: ../app/models/setting/discovered.rb:19
|
562
527
|
msgid "Interface fact"
|
563
528
|
msgstr ""
|
564
529
|
|
565
|
-
#: ../app/models/setting/discovered.rb:
|
566
|
-
msgid ""
|
567
|
-
"Automatic bond interface (if another interface is detected on the same VLAN "
|
568
|
-
"via LLDP)"
|
530
|
+
#: ../app/models/setting/discovered.rb:20
|
531
|
+
msgid "Automatic bond interface (if another interface is detected on the same VLAN via LLDP)"
|
569
532
|
msgstr ""
|
570
533
|
|
571
|
-
#: ../app/models/setting/discovered.rb:
|
534
|
+
#: ../app/models/setting/discovered.rb:20
|
572
535
|
msgid "Create bond interfaces"
|
573
536
|
msgstr ""
|
574
537
|
|
575
|
-
#: ../app/models/setting/discovered.rb:
|
538
|
+
#: ../app/models/setting/discovered.rb:21
|
576
539
|
msgid "Clean all reported facts during provisioning (except discovery facts)"
|
577
540
|
msgstr ""
|
578
541
|
|
579
|
-
#: ../app/models/setting/discovered.rb:
|
542
|
+
#: ../app/models/setting/discovered.rb:21
|
580
543
|
msgid "Clean all facts"
|
581
544
|
msgstr ""
|
582
545
|
|
583
|
-
#: ../app/models/setting/discovered.rb:
|
546
|
+
#: ../app/models/setting/discovered.rb:22
|
584
547
|
msgid "List of facts to use for the hostname (separated by comma, first wins)"
|
585
548
|
msgstr ""
|
586
549
|
|
587
|
-
#: ../app/models/setting/discovered.rb:
|
550
|
+
#: ../app/models/setting/discovered.rb:22
|
588
551
|
msgid "Hostname facts"
|
589
552
|
msgstr ""
|
590
553
|
|
591
|
-
#: ../app/models/setting/discovered.rb:
|
592
|
-
msgid ""
|
593
|
-
"Automatically provision newly discovered hosts, according to the "
|
594
|
-
"provisioning rules"
|
554
|
+
#: ../app/models/setting/discovered.rb:23
|
555
|
+
msgid "Automatically provision newly discovered hosts, according to the provisioning rules"
|
595
556
|
msgstr ""
|
596
557
|
|
597
|
-
#: ../app/models/setting/discovered.rb:
|
558
|
+
#: ../app/models/setting/discovered.rb:23
|
598
559
|
msgid "Auto provisioning"
|
599
560
|
msgstr ""
|
600
561
|
|
601
|
-
#: ../app/models/setting/discovered.rb:
|
562
|
+
#: ../app/models/setting/discovered.rb:24
|
602
563
|
msgid "Automatically reboot or kexec discovered host during provisioning"
|
603
564
|
msgstr ""
|
604
565
|
|
605
|
-
#: ../app/models/setting/discovered.rb:
|
566
|
+
#: ../app/models/setting/discovered.rb:25
|
606
567
|
msgid "The default prefix to use for the host name, must start with a letter"
|
607
568
|
msgstr ""
|
608
569
|
|
609
|
-
#: ../app/models/setting/discovered.rb:
|
570
|
+
#: ../app/models/setting/discovered.rb:25
|
610
571
|
msgid "Hostname prefix"
|
611
572
|
msgstr ""
|
612
573
|
|
613
|
-
#: ../app/models/setting/discovered.rb:
|
574
|
+
#: ../app/models/setting/discovered.rb:26
|
614
575
|
msgid "Extra facter columns to show in host lists (separate by comma)"
|
615
576
|
msgstr ""
|
616
577
|
|
617
|
-
#: ../app/models/setting/discovered.rb:
|
578
|
+
#: ../app/models/setting/discovered.rb:26
|
618
579
|
msgid "Fact columns"
|
619
580
|
msgstr ""
|
620
581
|
|
621
|
-
#: ../app/models/setting/discovered.rb:
|
582
|
+
#: ../app/models/setting/discovered.rb:27
|
622
583
|
msgid "Regex to organize facts for highlights section - e.g. ^(abc|cde)$"
|
623
584
|
msgstr ""
|
624
585
|
|
625
|
-
#: ../app/models/setting/discovered.rb:
|
586
|
+
#: ../app/models/setting/discovered.rb:27
|
626
587
|
msgid "Highlighted facts"
|
627
588
|
msgstr ""
|
628
589
|
|
629
|
-
#: ../app/models/setting/discovered.rb:
|
590
|
+
#: ../app/models/setting/discovered.rb:28
|
630
591
|
msgid "Regex to organize facts for storage section"
|
631
592
|
msgstr "Expressió regular per a organitzar els objectes d'interès per a la secció d'emmagatzematge"
|
632
593
|
|
633
|
-
#: ../app/models/setting/discovered.rb:
|
594
|
+
#: ../app/models/setting/discovered.rb:28
|
634
595
|
msgid "Storage facts"
|
635
596
|
msgstr ""
|
636
597
|
|
637
|
-
#: ../app/models/setting/discovered.rb:
|
598
|
+
#: ../app/models/setting/discovered.rb:29
|
638
599
|
msgid "Regex to organize facts for software section"
|
639
600
|
msgstr "Expressió regular per a organitzar els objectes d'interès per a la secció de programari"
|
640
601
|
|
641
|
-
#: ../app/models/setting/discovered.rb:
|
602
|
+
#: ../app/models/setting/discovered.rb:29
|
642
603
|
msgid "Software facts"
|
643
604
|
msgstr ""
|
644
605
|
|
645
|
-
#: ../app/models/setting/discovered.rb:
|
606
|
+
#: ../app/models/setting/discovered.rb:30
|
646
607
|
msgid "Regex to organize facts for hardware section"
|
647
608
|
msgstr "Expressió regular per a organitzar els objectes d'interès per a la secció de programari"
|
648
609
|
|
649
|
-
#: ../app/models/setting/discovered.rb:
|
610
|
+
#: ../app/models/setting/discovered.rb:30
|
650
611
|
msgid "Hardware facts"
|
651
612
|
msgstr ""
|
652
613
|
|
653
|
-
#: ../app/models/setting/discovered.rb:
|
614
|
+
#: ../app/models/setting/discovered.rb:31
|
654
615
|
msgid "Regex to organize facts for network section"
|
655
616
|
msgstr "Expressió regular per a organitzar els objectes d'interès per a la secció de xarxa"
|
656
617
|
|
657
|
-
#: ../app/models/setting/discovered.rb:
|
618
|
+
#: ../app/models/setting/discovered.rb:31
|
658
619
|
msgid "Network facts"
|
659
620
|
msgstr ""
|
660
621
|
|
661
|
-
#: ../app/models/setting/discovered.rb:
|
622
|
+
#: ../app/models/setting/discovered.rb:32
|
662
623
|
msgid "Regex to organize facts for ipmi section"
|
663
624
|
msgstr "Expressió regular per a organitzar els objectes d'interès per a la secció ipmi"
|
664
625
|
|
665
|
-
#: ../app/models/setting/discovered.rb:
|
626
|
+
#: ../app/models/setting/discovered.rb:32
|
666
627
|
msgid "IPMI facts"
|
667
628
|
msgstr ""
|
668
629
|
|
669
|
-
#: ../app/models/setting/discovered.rb:
|
670
|
-
msgid ""
|
671
|
-
"Automatically generate PXE configuration to pin a newly discovered host to "
|
672
|
-
"discovery"
|
630
|
+
#: ../app/models/setting/discovered.rb:33
|
631
|
+
msgid "Automatically generate PXE configuration to pin a newly discovered host to discovery"
|
673
632
|
msgstr ""
|
674
633
|
|
675
|
-
#: ../app/models/setting/discovered.rb:
|
634
|
+
#: ../app/models/setting/discovered.rb:33
|
676
635
|
msgid "Lock PXE"
|
677
636
|
msgstr ""
|
678
637
|
|
679
|
-
#: ../app/models/setting/discovered.rb:
|
638
|
+
#: ../app/models/setting/discovered.rb:34
|
680
639
|
msgid "PXELinux template to be used when pinning a host to discovery"
|
681
640
|
msgstr ""
|
682
641
|
|
683
|
-
#: ../app/models/setting/discovered.rb:
|
642
|
+
#: ../app/models/setting/discovered.rb:34
|
684
643
|
msgid "Locked PXELinux template name"
|
685
644
|
msgstr ""
|
686
645
|
|
687
|
-
#: ../app/models/setting/discovered.rb:
|
646
|
+
#: ../app/models/setting/discovered.rb:35
|
688
647
|
msgid "PXEGrub template to be used when pinning a host to discovery"
|
689
648
|
msgstr ""
|
690
649
|
|
691
|
-
#: ../app/models/setting/discovered.rb:
|
650
|
+
#: ../app/models/setting/discovered.rb:35
|
692
651
|
msgid "Locked PXEGrub template name"
|
693
652
|
msgstr ""
|
694
653
|
|
695
|
-
#: ../app/models/setting/discovered.rb:
|
654
|
+
#: ../app/models/setting/discovered.rb:36
|
696
655
|
msgid "PXEGrub2 template to be used when pinning a host to discovery"
|
697
656
|
msgstr ""
|
698
657
|
|
699
|
-
#: ../app/models/setting/discovered.rb:
|
658
|
+
#: ../app/models/setting/discovered.rb:36
|
700
659
|
msgid "Locked PXEGrub2 template name"
|
701
660
|
msgstr ""
|
702
661
|
|
703
|
-
#: ../app/models/setting/discovered.rb:
|
662
|
+
#: ../app/models/setting/discovered.rb:37
|
704
663
|
msgid "Force DNS entries creation when provisioning discovered host"
|
705
664
|
msgstr ""
|
706
665
|
|
707
|
-
#: ../app/models/setting/discovered.rb:
|
666
|
+
#: ../app/models/setting/discovered.rb:37
|
708
667
|
msgid "Force DNS"
|
709
668
|
msgstr ""
|
710
669
|
|
711
|
-
#: ../app/models/setting/discovered.rb:
|
712
|
-
msgid ""
|
713
|
-
"Do not allow to discover existing managed host matching MAC of a "
|
714
|
-
"provisioning NIC (errors out early)"
|
670
|
+
#: ../app/models/setting/discovered.rb:38
|
671
|
+
msgid "Do not allow to discover existing managed host matching MAC of a provisioning NIC (errors out early)"
|
715
672
|
msgstr ""
|
716
673
|
|
717
|
-
#: ../app/models/setting/discovered.rb:
|
674
|
+
#: ../app/models/setting/discovered.rb:38
|
718
675
|
msgid "Error on existing NIC"
|
719
676
|
msgstr ""
|
720
677
|
|
721
|
-
#: ../app/models/setting/discovered.rb:
|
678
|
+
#: ../app/models/setting/discovered.rb:39
|
722
679
|
msgid "Discovery hostname naming pattern"
|
723
680
|
msgstr ""
|
724
681
|
|
725
|
-
#: ../app/models/setting/discovered.rb:
|
682
|
+
#: ../app/models/setting/discovered.rb:39
|
726
683
|
msgid "Type of name generator"
|
727
684
|
msgstr ""
|
728
685
|
|
@@ -735,20 +692,18 @@ msgid "Discovered host '%{host}' has all NICs filtered out, filter: %{filter}"
|
|
735
692
|
msgstr ""
|
736
693
|
|
737
694
|
#: ../app/services/foreman_discovery/fact_parser.rb:12
|
738
|
-
msgid ""
|
739
|
-
"Unable to find primary NIC with %{mac} specified via '%{fact}', NIC filter: "
|
740
|
-
"%{filter}"
|
695
|
+
msgid "Unable to find primary NIC with %{mac} specified via '%{fact}', NIC filter: %{filter}"
|
741
696
|
msgstr ""
|
742
697
|
|
743
|
-
#: ../app/services/foreman_discovery/host_converter.rb:
|
698
|
+
#: ../app/services/foreman_discovery/host_converter.rb:47
|
744
699
|
msgid "IPAM must be configured for subnet '%s'"
|
745
700
|
msgstr ""
|
746
701
|
|
747
|
-
#: ../app/services/foreman_discovery/node_api/node_resource.rb:
|
702
|
+
#: ../app/services/foreman_discovery/node_api/node_resource.rb:76
|
748
703
|
msgid "Image API returned HTTP/%{code} with '%{body}"
|
749
704
|
msgstr ""
|
750
705
|
|
751
|
-
#: ../app/services/foreman_discovery/node_api/node_resource.rb:
|
706
|
+
#: ../app/services/foreman_discovery/node_api/node_resource.rb:79
|
752
707
|
msgid "Image API processing error: %{msg} (HTTP/%{code}, body: %{body})"
|
753
708
|
msgstr ""
|
754
709
|
|
@@ -766,33 +721,23 @@ msgstr ""
|
|
766
721
|
msgid "Host"
|
767
722
|
msgstr "Amfitrió"
|
768
723
|
|
769
|
-
#: ../app/views/dashboard/_discovery_widget_host_list.html.erb:4
|
770
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:6
|
771
|
-
#: ../app/views/discovered_hosts/_selected_hosts.html.erb:8
|
772
|
-
#: ../app/views/discovered_mailer/discovered_summary.html.erb:18
|
773
|
-
#: ../app/views/discovered_mailer/discovered_summary.text.erb:10
|
724
|
+
#: ../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
|
774
725
|
msgid "Model"
|
775
726
|
msgstr "Model"
|
776
727
|
|
777
|
-
#: ../app/views/dashboard/_discovery_widget_host_list.html.erb:5
|
778
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:8
|
779
|
-
#: ../app/views/discovered_mailer/discovered_summary.html.erb:20
|
780
|
-
#: ../app/views/discovered_mailer/discovered_summary.text.erb:12
|
728
|
+
#: ../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
|
781
729
|
msgid "CPUs"
|
782
730
|
msgstr "Les CPU"
|
783
731
|
|
784
|
-
#: ../app/views/dashboard/_discovery_widget_host_list.html.erb:6
|
785
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:9
|
786
|
-
#: ../app/views/discovered_mailer/discovered_summary.html.erb:21
|
787
|
-
#: ../app/views/discovered_mailer/discovered_summary.text.erb:13
|
732
|
+
#: ../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
|
788
733
|
msgid "Memory"
|
789
734
|
msgstr "Memòria"
|
790
735
|
|
791
|
-
#: ../app/views/discovered_hosts/_discovered_host_modal.html.erb:
|
736
|
+
#: ../app/views/discovered_hosts/_discovered_host_modal.html.erb:23
|
792
737
|
msgid "Customize Host"
|
793
738
|
msgstr ""
|
794
739
|
|
795
|
-
#: ../app/views/discovered_hosts/_discovered_host_modal.html.erb:
|
740
|
+
#: ../app/views/discovered_hosts/_discovered_host_modal.html.erb:24
|
796
741
|
msgid "Create Host"
|
797
742
|
msgstr "Crea un amfitrió"
|
798
743
|
|
@@ -804,16 +749,11 @@ msgstr "Selecciona tots els ítems en aquesta pàgina"
|
|
804
749
|
msgid "items selected. Uncheck to Clear"
|
805
750
|
msgstr "ítems seleccionats. Desmarca per netejar"
|
806
751
|
|
807
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:5
|
808
|
-
#: ../app/views/discovered_hosts/_selected_hosts.html.erb:7
|
809
|
-
#: ../app/views/discovered_mailer/discovered_summary.html.erb:17
|
810
|
-
#: ../app/views/discovered_mailer/discovered_summary.text.erb:9
|
752
|
+
#: ../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
|
811
753
|
msgid "Name"
|
812
754
|
msgstr "Nom"
|
813
755
|
|
814
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:7
|
815
|
-
#: ../app/views/discovered_mailer/discovered_summary.html.erb:19
|
816
|
-
#: ../app/views/discovered_mailer/discovered_summary.text.erb:11
|
756
|
+
#: ../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
|
817
757
|
msgid "IP Address"
|
818
758
|
msgstr "Adreça IP"
|
819
759
|
|
@@ -825,13 +765,11 @@ msgstr ""
|
|
825
765
|
msgid "Disks Size"
|
826
766
|
msgstr ""
|
827
767
|
|
828
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:15
|
829
|
-
#: ../app/views/discovered_hosts/_selected_hosts.html.erb:9
|
768
|
+
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:15 ../app/views/discovered_hosts/_selected_hosts.html.erb:9
|
830
769
|
msgid "Location"
|
831
770
|
msgstr "Ubicació"
|
832
771
|
|
833
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:16
|
834
|
-
#: ../app/views/discovered_hosts/_selected_hosts.html.erb:10
|
772
|
+
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:16 ../app/views/discovered_hosts/_selected_hosts.html.erb:10
|
835
773
|
msgid "Organization"
|
836
774
|
msgstr "Organització"
|
837
775
|
|
@@ -843,8 +781,7 @@ msgstr "Subxarxa"
|
|
843
781
|
msgid "Last Facts Upload"
|
844
782
|
msgstr ""
|
845
783
|
|
846
|
-
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:19
|
847
|
-
#: ../app/views/discovery_rules/index.html.erb:12
|
784
|
+
#: ../app/views/discovered_hosts/_discovered_hosts_list.html.erb:19 ../app/views/discovery_rules/index.html.erb:12
|
848
785
|
msgid "Actions"
|
849
786
|
msgstr "Accions"
|
850
787
|
|
@@ -865,9 +802,7 @@ msgid "Provision %s"
|
|
865
802
|
msgstr ""
|
866
803
|
|
867
804
|
#: ../app/views/discovered_hosts/multiple_destroy.html.erb:3
|
868
|
-
msgid ""
|
869
|
-
"This might take a while, as all hosts, facts and reports will be destroyed "
|
870
|
-
"as well"
|
805
|
+
msgid "This might take a while, as all hosts, facts and reports will be destroyed as well"
|
871
806
|
msgstr ""
|
872
807
|
|
873
808
|
#: ../app/views/discovered_hosts/select_multiple_location.html.erb:5
|
@@ -911,9 +846,7 @@ msgid "No discovered hosts found in this context."
|
|
911
846
|
msgstr ""
|
912
847
|
|
913
848
|
#: ../app/views/discovered_hosts/welcome.html.erb:8
|
914
|
-
msgid ""
|
915
|
-
"This page shows discovered bare-metal or virtual nodes waiting to be "
|
916
|
-
"provisioned."
|
849
|
+
msgid "This page shows discovered bare-metal or virtual nodes waiting to be provisioned."
|
917
850
|
msgstr ""
|
918
851
|
|
919
852
|
#: ../app/views/discovered_hosts/welcome.html.erb:9
|
@@ -928,23 +861,19 @@ msgstr ""
|
|
928
861
|
msgid "<b>Foreman</b> Discovered hosts summary"
|
929
862
|
msgstr ""
|
930
863
|
|
931
|
-
#: ../app/views/discovered_mailer/discovered_summary.html.erb:10
|
932
|
-
#: ../app/views/discovered_mailer/discovered_summary.text.erb:5
|
864
|
+
#: ../app/views/discovered_mailer/discovered_summary.html.erb:10 ../app/views/discovered_mailer/discovered_summary.text.erb:5
|
933
865
|
msgid "Summary from %{time} ago to %{now}"
|
934
866
|
msgstr ""
|
935
867
|
|
936
|
-
#: ../app/views/discovered_mailer/discovered_summary.html.erb:11
|
937
|
-
#: ../app/views/discovered_mailer/discovered_summary.text.erb:3
|
868
|
+
#: ../app/views/discovered_mailer/discovered_summary.html.erb:11 ../app/views/discovered_mailer/discovered_summary.text.erb:3
|
938
869
|
msgid "Discovered hosts from Foreman server at %{foreman_url}"
|
939
870
|
msgstr ""
|
940
871
|
|
941
|
-
#: ../app/views/discovered_mailer/discovered_summary.html.erb:22
|
942
|
-
#: ../app/views/discovered_mailer/discovered_summary.text.erb:14
|
872
|
+
#: ../app/views/discovered_mailer/discovered_summary.html.erb:22 ../app/views/discovered_mailer/discovered_summary.text.erb:14
|
943
873
|
msgid "Disk count"
|
944
874
|
msgstr "Nombre de discs"
|
945
875
|
|
946
|
-
#: ../app/views/discovered_mailer/discovered_summary.html.erb:23
|
947
|
-
#: ../app/views/discovered_mailer/discovered_summary.text.erb:15
|
876
|
+
#: ../app/views/discovered_mailer/discovered_summary.html.erb:23 ../app/views/discovered_mailer/discovered_summary.text.erb:15
|
948
877
|
msgid "Disks size"
|
949
878
|
msgstr "Mida de disc"
|
950
879
|
|
@@ -993,41 +922,30 @@ msgid "Rule priority (lower integer means higher priority)"
|
|
993
922
|
msgstr ""
|
994
923
|
|
995
924
|
#: ../app/views/discovery_rules/_template_inline.erb:2
|
996
|
-
msgid ""
|
997
|
-
"Specify target hostname template pattern in the same syntax as in "
|
998
|
-
"Provisioning Templates (ERB)."
|
925
|
+
msgid "Specify target hostname template pattern in the same syntax as in Provisioning Templates (ERB)."
|
999
926
|
msgstr ""
|
1000
927
|
|
1001
928
|
#: ../app/views/discovery_rules/_template_inline.erb:4
|
1002
|
-
msgid ""
|
1003
|
-
"Domain will be appended automatically. A hostname based on MAC address will "
|
1004
|
-
"be used when left blank."
|
929
|
+
msgid "Domain will be appended automatically. A hostname based on MAC address will be used when left blank."
|
1005
930
|
msgstr ""
|
1006
931
|
|
1007
932
|
#: ../app/views/discovery_rules/_template_inline.erb:5
|
1008
|
-
msgid ""
|
1009
|
-
"In addition to @host attribute function rand for random integers is "
|
1010
|
-
"available. Examples:"
|
933
|
+
msgid "In addition to @host attribute function rand for random integers is available. Examples:"
|
1011
934
|
msgstr ""
|
1012
935
|
|
1013
936
|
#: ../app/views/discovery_rules/_template_inline.erb:8
|
1014
|
-
msgid ""
|
1015
|
-
"When creating hostname patterns, make sure the resulting host names are "
|
1016
|
-
"unique."
|
937
|
+
msgid "When creating hostname patterns, make sure the resulting host names are unique."
|
1017
938
|
msgstr ""
|
1018
939
|
|
1019
940
|
#: ../app/views/discovery_rules/_template_inline.erb:9
|
1020
|
-
msgid ""
|
1021
|
-
"Hostnames must not start with numbers. A good approach is to use unique "
|
1022
|
-
"information provided by facter (MAC address, BIOS or serial ID)."
|
941
|
+
msgid "Hostnames must not start with numbers. A good approach is to use unique information provided by facter (MAC address, BIOS or serial ID)."
|
1023
942
|
msgstr ""
|
1024
943
|
|
1025
944
|
#: ../app/views/discovery_rules/edit.html.erb:1
|
1026
945
|
msgid "Edit %s"
|
1027
946
|
msgstr "Edita %s"
|
1028
947
|
|
1029
|
-
#: ../app/views/discovery_rules/index.html.erb:1
|
1030
|
-
#: ../lib/foreman_discovery/engine.rb:163
|
948
|
+
#: ../app/views/discovery_rules/index.html.erb:1 ../lib/foreman_discovery/engine.rb:163
|
1031
949
|
msgid "Discovery Rules"
|
1032
950
|
msgstr "Regles de descobriment"
|
1033
951
|
|
@@ -1092,13 +1010,25 @@ msgid "Discovery Proxy"
|
|
1092
1010
|
msgstr ""
|
1093
1011
|
|
1094
1012
|
#: ../lib/foreman_discovery/engine.rb:189
|
1095
|
-
msgid ""
|
1096
|
-
"Discovery Proxy to use within this subnet for managing connection to "
|
1097
|
-
"discovered hosts"
|
1013
|
+
msgid "Discovery Proxy to use within this subnet for managing connection to discovered hosts"
|
1098
1014
|
msgstr ""
|
1099
1015
|
|
1100
1016
|
#: ../lib/foreman_discovery/engine.rb:190
|
1101
|
-
msgid ""
|
1102
|
-
|
1103
|
-
|
1017
|
+
msgid "ID of Discovery Proxy to use within this subnet for managing connection to discovered hosts"
|
1018
|
+
msgstr ""
|
1019
|
+
|
1020
|
+
#: action_names.rb:2
|
1021
|
+
msgid "Remote action:"
|
1022
|
+
msgstr ""
|
1023
|
+
|
1024
|
+
#: action_names.rb:3
|
1025
|
+
msgid "Import Puppet classes"
|
1026
|
+
msgstr ""
|
1027
|
+
|
1028
|
+
#: action_names.rb:4
|
1029
|
+
msgid "Import facts"
|
1030
|
+
msgstr ""
|
1031
|
+
|
1032
|
+
#: action_names.rb:5
|
1033
|
+
msgid "Action with sub plans"
|
1104
1034
|
msgstr ""
|