foreman_discovery 1.3.0 → 1.4.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +17 -2
- data/app/controllers/api/v2/discovered_hosts_controller.rb +20 -14
- data/app/controllers/discovered_hosts_controller.rb +4 -2
- data/app/models/host/discovered.rb +12 -7
- data/app/views/dashboard/_discovery_widget.html.erb +16 -0
- data/config/routes.rb +1 -1
- data/lib/foreman_discovery/engine.rb +35 -14
- data/lib/foreman_discovery/version.rb +1 -1
- data/locale/Makefile +62 -0
- data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/de/foreman_discovery.po +70 -26
- data/locale/en_GB/LC_MESSAGES/discovery.mo +0 -0
- data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en_GB/foreman_discovery.po +51 -8
- data/locale/es/LC_MESSAGES/discovery.mo +0 -0
- data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/es/foreman_discovery.po +53 -9
- data/locale/foreman_discovery.pot +58 -5
- data/locale/fr/LC_MESSAGES/discovery.mo +0 -0
- data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/fr/foreman_discovery.po +50 -6
- data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/gl/foreman_discovery.po +217 -0
- data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/pt_BR/foreman_discovery.po +219 -0
- data/locale/sv_SE/LC_MESSAGES/discovery.mo +0 -0
- data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/sv_SE/foreman_discovery.po +47 -4
- metadata +15 -19
- data/app/overrides/add_dashboard_table.rb +0 -16
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OGNmNzE1ODY2NjM0ZWZmMmI0MzljNDI5NzkxZDllZDAxOTI5NzE3Zg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MDk2NTBhMjNhYWU5NWI0ZDhhMzRlYWU1NDVmMjdhN2RiMDI5ZjVmOQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZjA4NTZmNjczZjBiODExN2Q1ZDcyYjA1ODg5NmJjZjY4NDlkYWUyYzUwY2I4
|
10
|
+
ZTU2Yzc5ZGQzNWY3MzBlNGI5ZmU3ODY1ZThmZTI1MDg4YThmZDgzY2E1MTgy
|
11
|
+
ODc2ZmVhZjhkOWQxMDAzYzc2YjQ4NzllNGE5NzFkYzgzNzQ3YmI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDMyNGQwYmJlYmZlODU0YWRjNzlkYjQ1YzFhMjE0ZTY4MDI0YjkxYWM1NmY0
|
14
|
+
OTRiMmM2NmJmNTYyY2M5MjA2ZjMyMDhiOTFkY2E0MDRiN2UwYzhmNjM5ZmIw
|
15
|
+
ZTA4NTQ4ZjE2ZTg3NWVlODU1Y2Q3NjRhNDZkNGNlYzE2YjcxMWI=
|
data/README.md
CHANGED
@@ -66,7 +66,7 @@ Discovery output. For a login prompt (nightly images only) use tty2.
|
|
66
66
|
|
67
67
|
### Download via installer
|
68
68
|
|
69
|
-
As of Foreman 1.
|
69
|
+
As of Foreman 1.6, the foreman-installer is able to automatically download
|
70
70
|
latest stable CentOS6 images. For this, re-run the installer with the
|
71
71
|
following option:
|
72
72
|
|
@@ -145,7 +145,12 @@ This can still be overriden with the command line opts.
|
|
145
145
|
|
146
146
|
It is important to have *IPAPPEND 2* option which adds BOOTIF=MAC option which
|
147
147
|
is then reported via facter as `discovery_bootif` which is key fact which is
|
148
|
-
used for provisioning.
|
148
|
+
used for provisioning. Without this line, DNS will not work properly as well.
|
149
|
+
|
150
|
+
It is important to know that DNS servers from DHCP are enabled only for the
|
151
|
+
interface that was specified via the BOOTIF option. This means when a system
|
152
|
+
have multiple NICs, DNS will work for the correct interface - the one that was
|
153
|
+
booted from.
|
149
154
|
|
150
155
|
_Warning_: For now, the selinux=0 option *must* be provided, the image is read
|
151
156
|
only anyway but we plan to enable and test with SELinux too.
|
@@ -212,6 +217,16 @@ If the booted machine fails to register with Foreman, then there are a number of
|
|
212
217
|
* Check DNS is working for that image, or use an IP in `foreman.url`
|
213
218
|
* Check DHCP is handing IPs to the booted image correctly
|
214
219
|
|
220
|
+
When working with production images (no root password set), it is still
|
221
|
+
possible to log on as root. Generate some root password:
|
222
|
+
|
223
|
+
$ openssl passwd -salt RH redhat
|
224
|
+
RHhwCLrQXB8zE
|
225
|
+
|
226
|
+
And then provide it as an kernel command line option:
|
227
|
+
|
228
|
+
... stateless rootpw=RHhwCLrQXB8zE
|
229
|
+
|
215
230
|
# API
|
216
231
|
|
217
232
|
see the [API README](README.api.md)
|
@@ -5,17 +5,23 @@ module Api
|
|
5
5
|
before_filter :find_resource, :except => %w{index create facts}
|
6
6
|
skip_before_filter :authorize, :only => :facts
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
resource_description do
|
9
|
+
resource_id 'discovered_hosts'
|
10
|
+
api_version 'v2'
|
11
|
+
api_base_url "/api/v2"
|
12
|
+
end
|
13
|
+
|
14
|
+
api :GET, "/discovered_hosts/", N_("List all discovered hosts")
|
15
|
+
param :search, String, :desc => N_("filter results")
|
16
|
+
param :order, String, :desc => N_("sort results")
|
17
|
+
param :page, String, :desc => N_("paginate results")
|
18
|
+
param :per_page, String, :desc => N_("number of entries per request")
|
13
19
|
|
14
20
|
def index
|
15
21
|
@discovered_hosts = resource_scope.search_for(*search_options).paginate(paginate_options)
|
16
22
|
end
|
17
23
|
|
18
|
-
api :GET, "/discovered_hosts/:id/", "Show a discovered host"
|
24
|
+
api :GET, "/discovered_hosts/:id/", N_("Show a discovered host")
|
19
25
|
param :id, :identifier_dottable, :required => true
|
20
26
|
|
21
27
|
def show
|
@@ -29,7 +35,7 @@ module Api
|
|
29
35
|
end
|
30
36
|
end
|
31
37
|
|
32
|
-
api :POST, "/discovered_hosts/", "Create a discovered host"
|
38
|
+
api :POST, "/discovered_hosts/", N_("Create a discovered host")
|
33
39
|
param_group :discovered_host, :as => :create
|
34
40
|
|
35
41
|
def create
|
@@ -37,13 +43,13 @@ module Api
|
|
37
43
|
process_response @discovered_host.save
|
38
44
|
end
|
39
45
|
|
40
|
-
api :PUT, "/discovered_hosts/:id/", "Provision a discovered host"
|
46
|
+
api :PUT, "/discovered_hosts/:id/", N_("Provision a discovered host")
|
41
47
|
param :id, :identifier, :required => true
|
42
48
|
param :discovered_host, Hash, :action_aware => true do
|
43
49
|
param :name, String
|
44
50
|
param :environment_id, String
|
45
|
-
param :ip, String, :desc => "not required if using a subnet with
|
46
|
-
param :mac, String, :desc => "not required if
|
51
|
+
param :ip, String, :desc => N_("not required if using a subnet with DHCP proxy")
|
52
|
+
param :mac, String, :desc => N_("not required if it's a virtual machine")
|
47
53
|
param :architecture_id, :number
|
48
54
|
param :domain_id, :number
|
49
55
|
param :puppet_proxy_id, :number
|
@@ -63,7 +69,7 @@ module Api
|
|
63
69
|
param :enabled, :bool
|
64
70
|
param :provision_method, String
|
65
71
|
param :managed, :bool
|
66
|
-
param :progress_report_id, String, :desc =>
|
72
|
+
param :progress_report_id, String, :desc => N_("UUID to track orchestration tasks status, GET /api/orchestration/:UUID/tasks")
|
67
73
|
param :capabilities, String
|
68
74
|
end
|
69
75
|
|
@@ -76,15 +82,15 @@ module Api
|
|
76
82
|
process_response @host.update_attributes(params[:discovered_host])
|
77
83
|
end
|
78
84
|
|
79
|
-
api :DELETE, "/discovered_hosts/:id/", "Delete a discovered host"
|
85
|
+
api :DELETE, "/discovered_hosts/:id/", N_("Delete a discovered host")
|
80
86
|
param :id, :identifier, :required => true
|
81
87
|
|
82
88
|
def destroy
|
83
89
|
process_response @discovered_host.destroy
|
84
90
|
end
|
85
91
|
|
86
|
-
api :POST, "/discovered_hosts/facts", "Upload facts for a host, creating the host if required
|
87
|
-
param :facts, Hash, :required => true, :desc => "hash containing
|
92
|
+
api :POST, "/discovered_hosts/facts", N_("Upload facts for a host, creating the host if required")
|
93
|
+
param :facts, Hash, :required => true, :desc => N_("hash containing facts for the host")
|
88
94
|
|
89
95
|
def facts
|
90
96
|
@discovered_host, state = Host::Discovered.import_host_and_facts(params[:facts])
|
@@ -15,9 +15,11 @@ class DiscoveredHostsController < ::ApplicationController
|
|
15
15
|
layout 'layouts/application'
|
16
16
|
|
17
17
|
def index
|
18
|
-
|
18
|
+
search = resource_base.search_for(params[:search], :order => params[:order])
|
19
19
|
respond_to do |format|
|
20
|
-
format.html
|
20
|
+
format.html do
|
21
|
+
@hosts = search.paginate(:page => params[:page])
|
22
|
+
end
|
21
23
|
format.json { render :json => hosts }
|
22
24
|
end
|
23
25
|
end
|
@@ -20,16 +20,21 @@ class Host::Discovered < ::Host::Base
|
|
20
20
|
scoped_search :in => :organization, :on => :name, :rename => :organization, :complete_value => true if SETTINGS[:organizations_enabled]
|
21
21
|
scoped_search :in => :subnet, :on => :network, :complete_value => true, :rename => :subnet
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
default_scope lambda {
|
24
|
+
org = Organization.current
|
25
|
+
loc = Location.current
|
26
|
+
conditions = {}
|
27
|
+
conditions[:organization_id] = org.subtree_ids if org
|
28
|
+
conditions[:location_id] = loc.subtree_ids if loc
|
29
|
+
where(conditions)
|
30
|
+
}
|
27
31
|
|
28
32
|
def self.import_host_and_facts facts
|
29
33
|
raise(::Foreman::Exception.new(N_("Invalid facts, must be a Hash"))) unless facts.is_a?(Hash)
|
30
34
|
fact_name = Setting[:discovery_fact] || 'macaddress'
|
31
|
-
hostname
|
35
|
+
hostname = facts[fact_name].try(:downcase).try(:gsub,/:/,'').try(:sub,/^/,'mac')
|
32
36
|
raise(::Foreman::Exception.new(N_("Invalid facts: hash does not contain the required fact '%s'"), fact_name)) unless hostname
|
37
|
+
raise(::Foreman::Exception.new(N_("Invalid facts: hash does not contain IP address"))) unless facts['ipaddress']
|
33
38
|
|
34
39
|
# filter facts
|
35
40
|
facts.reject!{|k,v| k =~ /kernel|operatingsystem|osfamily|ruby|path|time|swap|free|filesystem/i }
|
@@ -70,13 +75,13 @@ class Host::Discovered < ::Host::Base
|
|
70
75
|
super + [:ip]
|
71
76
|
end
|
72
77
|
|
73
|
-
def populate_fields_from_facts facts = self.facts_hash
|
78
|
+
def populate_fields_from_facts facts = self.facts_hash, type = 'puppet'
|
74
79
|
importer = super
|
75
80
|
self.subnet = Subnet.subnet_for(importer.ip)
|
76
81
|
self.save
|
77
82
|
end
|
78
83
|
|
79
|
-
# no need to store anything in the db if the password is our default
|
84
|
+
# no need to store anything in the db if the password is our default
|
80
85
|
def root_pass
|
81
86
|
read_attribute(:root_pass).blank? ? (hostgroup.try(:root_pass) || Setting[:root_pass]) : read_attribute(:root_pass)
|
82
87
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<h4 class="ca"><%= _('Discovered Host Pool') %> - <%= @current_permission %></h4>
|
2
|
+
<% all_hosts = Host::Discovered.search_for '' %>
|
3
|
+
<% hosts = all_hosts.limit(5) %>
|
4
|
+
<% if hosts.empty? %>
|
5
|
+
<p class="ca"><%= _("No discovered hosts available") %></p>
|
6
|
+
<% else %>
|
7
|
+
<table class="table table-striped ellipsis">
|
8
|
+
<% hosts.each do |host| %>
|
9
|
+
<tr>
|
10
|
+
<td><%= link_to h(host.name), discovered_host_path(host) %></td>
|
11
|
+
<td><%= host.ip %></td>
|
12
|
+
</tr>
|
13
|
+
<% end %>
|
14
|
+
</table>
|
15
|
+
<p class="ca"><%= link_to n_("Total pool size","Total pool size", all_hosts.size), discovered_hosts_path %> - <%= all_hosts.size %> </p>
|
16
|
+
<% end %>
|
data/config/routes.rb
CHANGED
@@ -26,7 +26,7 @@ Rails.application.routes.draw do
|
|
26
26
|
## API
|
27
27
|
namespace :api, :defaults => {:format => 'json'} do
|
28
28
|
scope "(:apiv)", :module => :v2, :defaults => {:apiv => 'v2'}, :apiv => /v1|v2/, :constraints => ApiConstraints.new(:version => 2) do
|
29
|
-
resources :discovered_hosts do
|
29
|
+
resources :discovered_hosts, :except => [:new, :edit] do
|
30
30
|
collection do
|
31
31
|
post 'facts'
|
32
32
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'deface'
|
2
1
|
require 'fast_gettext'
|
3
2
|
require 'gettext_i18n_rails'
|
4
3
|
|
@@ -19,25 +18,36 @@ module ForemanDiscovery
|
|
19
18
|
|
20
19
|
initializer 'foreman_discovery.register_gettext', :after => :load_config_initializers do |app|
|
21
20
|
locale_dir = File.join(File.expand_path('../../..', __FILE__), 'locale')
|
22
|
-
locale_domain = '
|
21
|
+
locale_domain = 'foreman_discovery'
|
23
22
|
|
24
23
|
Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
|
25
24
|
end
|
26
25
|
|
27
26
|
initializer 'foreman_discovery.register_plugin', :after=> :finisher_hook do |app|
|
28
27
|
Foreman::Plugin.register :foreman_discovery do
|
29
|
-
requires_foreman '> 1.
|
28
|
+
requires_foreman '> 1.5'
|
30
29
|
|
31
30
|
# Add permissions
|
32
31
|
security_block :discovery do
|
33
|
-
permission :view_discovered_hosts, {
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
32
|
+
permission :view_discovered_hosts, {
|
33
|
+
:discovered_hosts => [:index, :show, :auto_complete_search],
|
34
|
+
:"api/v2/discovered_hosts" => [:index, :show]
|
35
|
+
}, :resource_type => 'Host'
|
36
|
+
permission :provision_discovered_hosts, {
|
37
|
+
:discovered_hosts => [:new, :create],
|
38
|
+
:"api/v2/discovered_hosts" => [:create]
|
39
|
+
}, :resource_type => 'Host'
|
40
|
+
permission :edit_discovered_hosts, {
|
41
|
+
:discovered_hosts => [:edit, :update, :update_multiple_location,
|
42
|
+
:select_multiple_organization,
|
43
|
+
:update_multiple_organization,
|
44
|
+
:select_multiple_location, :refresh_facts],
|
45
|
+
:"api/v2/discovered_hosts" => [:update, :facts]
|
46
|
+
}, :resource_type => 'Host'
|
47
|
+
permission :destroy_discovered_hosts, {
|
48
|
+
:discovered_hosts => [:destroy, :submit_multiple_destroy, :multiple_destroy],
|
49
|
+
:"api/v2/discovered_hosts" => [:destroy]
|
50
|
+
}, :resource_type => 'Host'
|
41
51
|
end
|
42
52
|
|
43
53
|
# Add a new role called 'Discovery' if it doesn't exist
|
@@ -45,9 +55,20 @@ module ForemanDiscovery
|
|
45
55
|
|
46
56
|
#add menu entry
|
47
57
|
menu :top_menu, :discovery, :url_hash => {:controller=> :discovered_hosts, :action=>:index},
|
48
|
-
|
49
|
-
|
50
|
-
|
58
|
+
:caption=> N_('Discovered hosts'),
|
59
|
+
:parent => :hosts_menu,
|
60
|
+
:after=>:hosts
|
61
|
+
|
62
|
+
# add dashboard widget
|
63
|
+
widget 'discovery_widget', :name=>N_('Discovery widget'), :sizex => 4, :sizey =>1
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
initializer "foreman_discovery.apipie" do
|
68
|
+
# this condition is here for compatibility reason to work with Foreman 1.4.x
|
69
|
+
if Apipie.configuration.api_controllers_matcher.is_a?(Array) && Apipie.configuration.respond_to?(:checksum_path)
|
70
|
+
Apipie.configuration.api_controllers_matcher << "#{ForemanDiscovery::Engine.root}/app/controllers/api/v2/*.rb"
|
71
|
+
Apipie.configuration.checksum_path += ['/discovered_hosts/']
|
51
72
|
end
|
52
73
|
end
|
53
74
|
# Include extensions to models in this config.to_prepare block
|
data/locale/Makefile
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
#
|
2
|
+
# Makefile for PO merging and MO generation. More info in the README.
|
3
|
+
#
|
4
|
+
# make all-mo (default) - generate MO files
|
5
|
+
# make check - check translations using translate-tool
|
6
|
+
# make tx-update - download and merge translations from Transifex
|
7
|
+
# make clean - clean everything
|
8
|
+
#
|
9
|
+
DOMAIN = foreman_discovery
|
10
|
+
VERSION = $(shell ruby -e 'require "rubygems";spec = Gem::Specification::load(Dir.glob("../*.gemspec")[0]);puts spec.version')
|
11
|
+
POTFILE = $(DOMAIN).pot
|
12
|
+
MOFILE = $(DOMAIN).mo
|
13
|
+
POFILES = $(shell find . -name '*.po')
|
14
|
+
MOFILES = $(patsubst %.po,%.mo,$(POFILES))
|
15
|
+
POXFILES = $(patsubst %.po,%.pox,$(POFILES))
|
16
|
+
|
17
|
+
%.mo: %.po
|
18
|
+
mkdir -p $(shell dirname $@)/LC_MESSAGES
|
19
|
+
msgfmt -o $(shell dirname $@)/LC_MESSAGES/$(MOFILE) $<
|
20
|
+
|
21
|
+
# Generate MO files from PO files
|
22
|
+
all-mo: $(MOFILES)
|
23
|
+
|
24
|
+
# Check for malformed strings
|
25
|
+
%.pox: %.po
|
26
|
+
msgfmt -c $<
|
27
|
+
pofilter --nofuzzy -t variables -t blank -t urls -t emails -t long -t newlines \
|
28
|
+
-t endwhitespace -t endpunc -t puncspacing -t options -t printf -t validchars --gnome $< > $@
|
29
|
+
cat $@
|
30
|
+
! grep -q msgid $@
|
31
|
+
|
32
|
+
check: $(POXFILES)
|
33
|
+
msgfmt -c ${POTFILE}
|
34
|
+
|
35
|
+
# Merge PO files
|
36
|
+
update-po:
|
37
|
+
for f in $(shell find ./ -name "*.po") ; do \
|
38
|
+
msgmerge -N --backup=none -U $$f ${POTFILE} ; \
|
39
|
+
done
|
40
|
+
|
41
|
+
# Unify duplicate translations
|
42
|
+
uniq-po:
|
43
|
+
for f in $(shell find ./ -name "*.po") ; do \
|
44
|
+
msguniq $$f -o $$f ; \
|
45
|
+
done
|
46
|
+
|
47
|
+
tx-pull:
|
48
|
+
tx pull -f
|
49
|
+
for f in $(POFILES) ; do \
|
50
|
+
sed -i 's/^\("Project-Id-Version: \).*$$/\1$(DOMAIN) $(VERSION)\\n"/' $$f; \
|
51
|
+
done
|
52
|
+
-git commit -a -m "i18n - pulling from tx"
|
53
|
+
|
54
|
+
reset-po:
|
55
|
+
# merging po files is unnecessary when using transifex.com
|
56
|
+
git checkout -- ../locale/*/*po
|
57
|
+
|
58
|
+
tx-update: tx-pull reset-po $(MOFILES)
|
59
|
+
# amend mo files
|
60
|
+
git add ../locale/*/LC_MESSAGES
|
61
|
+
git commit -a --amend -m "i18n - pulling from tx"
|
62
|
+
-echo Changes commited!
|
Binary file
|
@@ -4,13 +4,14 @@
|
|
4
4
|
#
|
5
5
|
#
|
6
6
|
# Translators:
|
7
|
-
#
|
7
|
+
# Arnold Bechtoldt <mail@arnoldbechtoldt.com>, 2014
|
8
|
+
# simon11 <simon.stieger.98@live.de>, 2014
|
8
9
|
msgid ""
|
9
10
|
msgstr ""
|
10
|
-
"Project-Id-Version:
|
11
|
+
"Project-Id-Version: foreman_discovery 1.3.0\n"
|
11
12
|
"Report-Msgid-Bugs-To: \n"
|
12
|
-
"POT-Creation-Date: 2014-
|
13
|
-
"PO-Revision-Date: 2014-
|
13
|
+
"POT-Creation-Date: 2014-08-07 10:19+0100\n"
|
14
|
+
"PO-Revision-Date: 2014-08-08 09:41+0000\n"
|
14
15
|
"Last-Translator: Lukáš Zapletal\n"
|
15
16
|
"Language-Team: German (http://www.transifex.com/projects/p/foreman/language/de/)\n"
|
16
17
|
"MIME-Version: 1.0\n"
|
@@ -20,13 +21,13 @@ msgstr ""
|
|
20
21
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
21
22
|
|
22
23
|
msgid "%s - The following hosts are about to be changed"
|
23
|
-
msgstr "%s - Die folgenden Hosts werden
|
24
|
+
msgstr "%s - Die folgenden Hosts werden geändert"
|
24
25
|
|
25
26
|
msgid "%s ago"
|
26
27
|
msgstr "vor %s"
|
27
28
|
|
28
29
|
msgid "Are you sure?"
|
29
|
-
msgstr "
|
30
|
+
msgstr "Bist du sicher?"
|
30
31
|
|
31
32
|
msgid "Assign Location"
|
32
33
|
msgstr "Standort zuweisen"
|
@@ -40,20 +41,26 @@ msgstr "Abbrechen"
|
|
40
41
|
msgid "Could not get facts from proxy: %s"
|
41
42
|
msgstr "Konnte keine Fakten vom Proxy empfangen: %s"
|
42
43
|
|
44
|
+
msgid "Create a discovered host"
|
45
|
+
msgstr ""
|
46
|
+
|
43
47
|
msgid "Delete"
|
44
48
|
msgstr "Löschen"
|
45
49
|
|
46
50
|
msgid "Delete %s?"
|
47
|
-
msgstr "
|
51
|
+
msgstr "%s löschen?"
|
52
|
+
|
53
|
+
msgid "Delete a discovered host"
|
54
|
+
msgstr ""
|
48
55
|
|
49
56
|
msgid "Delete hosts"
|
50
|
-
msgstr "
|
57
|
+
msgstr "Hosts löschen"
|
51
58
|
|
52
59
|
msgid "Destroyed selected hosts"
|
53
|
-
msgstr "
|
60
|
+
msgstr "Ausgewählte Hosts gelöscht"
|
54
61
|
|
55
62
|
msgid "Discovered host: %s"
|
56
|
-
msgstr "
|
63
|
+
msgstr "Entdeckter Host: %s"
|
57
64
|
|
58
65
|
msgid "Discovered hosts"
|
59
66
|
msgstr "Entdeckte Hosts"
|
@@ -62,10 +69,10 @@ msgid "Fact"
|
|
62
69
|
msgstr "Fakt"
|
63
70
|
|
64
71
|
msgid "Facts discovered on this host"
|
65
|
-
msgstr "Auf diesem Host entdeckte Fakten
|
72
|
+
msgstr "Auf diesem Host entdeckte Fakten"
|
66
73
|
|
67
74
|
msgid "Facts refreshed for %s"
|
68
|
-
msgstr "Fakten
|
75
|
+
msgstr "Fakten für %s erneuert"
|
69
76
|
|
70
77
|
msgid "Failed to import facts for Host::Discovered"
|
71
78
|
msgstr "Fakten für Host::Discovered konnten nicht importiert werden"
|
@@ -77,7 +84,7 @@ msgid "Failed to reboot: %s"
|
|
77
84
|
msgstr "Neustart fehlgeschlagen: %s"
|
78
85
|
|
79
86
|
msgid "Failed to refresh facts for %s"
|
80
|
-
msgstr "
|
87
|
+
msgstr "Fakten für %s konnten nicht erneuert werden"
|
81
88
|
|
82
89
|
msgid "Host Pool"
|
83
90
|
msgstr "Host-Pool"
|
@@ -86,16 +93,19 @@ msgid "Imported Host::Discovered"
|
|
86
93
|
msgstr "Host::Discovered wurde importiert"
|
87
94
|
|
88
95
|
msgid "Invalid facts, must be a Hash"
|
89
|
-
msgstr ""
|
96
|
+
msgstr "Ungültige Fakten, es muss sich um einen Hash handeln"
|
90
97
|
|
91
98
|
msgid "Invalid facts: hash does not contain the required fact '%s'"
|
92
|
-
msgstr ""
|
99
|
+
msgstr "Ungültige Fakten: Der Hash enthält den benötigten Fakt nicht: %s"
|
93
100
|
|
94
101
|
msgid "Last facts upload"
|
95
102
|
msgstr "Letzter Fakten-Upload"
|
96
103
|
|
104
|
+
msgid "List all discovered hosts"
|
105
|
+
msgstr ""
|
106
|
+
|
97
107
|
msgid "Location"
|
98
|
-
msgstr "
|
108
|
+
msgstr "Ort"
|
99
109
|
|
100
110
|
msgid "Model"
|
101
111
|
msgstr "Modell"
|
@@ -104,22 +114,25 @@ msgid "Name"
|
|
104
114
|
msgstr "Name"
|
105
115
|
|
106
116
|
msgid "No hosts selected"
|
107
|
-
msgstr "Keine
|
117
|
+
msgstr "Keine Hosts ausgewählt"
|
108
118
|
|
109
119
|
msgid "No hosts were found with that id or name"
|
110
|
-
msgstr "
|
120
|
+
msgstr "Es wurden keine Systeme mit dieser ID oder diesem Namen gefunden"
|
111
121
|
|
112
122
|
msgid "Organization"
|
113
123
|
msgstr "Organisation"
|
114
124
|
|
115
125
|
msgid "Please Confirm"
|
116
|
-
msgstr "
|
126
|
+
msgstr "Bitte bestätigen"
|
117
127
|
|
118
128
|
msgid "Provision"
|
119
129
|
msgstr "Bereitstellen"
|
120
130
|
|
131
|
+
msgid "Provision a discovered host"
|
132
|
+
msgstr ""
|
133
|
+
|
121
134
|
msgid "Rebooting %s"
|
122
|
-
msgstr "
|
135
|
+
msgstr "%s wird neu gestartet"
|
123
136
|
|
124
137
|
msgid "Refresh facts"
|
125
138
|
msgstr "Fakten erneuern"
|
@@ -131,13 +144,16 @@ msgid "Select all items in this page"
|
|
131
144
|
msgstr "Alle Elemente auf dieser Seite auswählen"
|
132
145
|
|
133
146
|
msgid "Select location"
|
134
|
-
msgstr "
|
147
|
+
msgstr "Ort auswählen"
|
135
148
|
|
136
149
|
msgid "Select organization"
|
137
150
|
msgstr "Organisation auswählen"
|
138
151
|
|
152
|
+
msgid "Show a discovered host"
|
153
|
+
msgstr ""
|
154
|
+
|
139
155
|
msgid "Something went wrong while selecting hosts - %s"
|
140
|
-
msgstr "
|
156
|
+
msgstr "Beim Auswählen der Hosts ist ein Fehler aufgetreten - %s"
|
141
157
|
|
142
158
|
msgid "Submit"
|
143
159
|
msgstr "Absenden"
|
@@ -149,21 +165,28 @@ msgid "The default fact name to use for the MAC of the system"
|
|
149
165
|
msgstr "Der Standard-Faktenname zum Verwenden für die MAC des Systems"
|
150
166
|
|
151
167
|
msgid "The default location to place discovered hosts in"
|
152
|
-
msgstr "Standard-
|
168
|
+
msgstr "Standard-Ort zum Platzieren entdeckter Hosts"
|
153
169
|
|
154
170
|
msgid "The default organization to place discovered hosts in"
|
155
171
|
msgstr "Standard-Organisation zum Platzieren entdeckter Hosts"
|
156
172
|
|
157
173
|
msgid "The following hosts were not deleted: %s"
|
158
|
-
msgstr "Die
|
174
|
+
msgstr "Die folgenden Systeme wurden nicht gelöscht: %s"
|
159
175
|
|
160
176
|
msgid ""
|
161
177
|
"This might take a while, as all hosts, facts and reports will be destroyed "
|
162
178
|
"as well"
|
163
179
|
msgstr "Dies kann eine Weile dauern, weil alle Systeme, Fakten und Reporte auch gelöscht werden"
|
164
180
|
|
181
|
+
msgid ""
|
182
|
+
"UUID to track orchestration tasks status, GET /api/orchestration/:UUID/tasks"
|
183
|
+
msgstr ""
|
184
|
+
|
165
185
|
msgid "Unassigned hosts"
|
166
|
-
msgstr "
|
186
|
+
msgstr "Nicht zugeordnete Hosts"
|
187
|
+
|
188
|
+
msgid "Upload facts for a host, creating the host if required"
|
189
|
+
msgstr ""
|
167
190
|
|
168
191
|
msgid "Value"
|
169
192
|
msgstr "Wert"
|
@@ -171,5 +194,26 @@ msgstr "Wert"
|
|
171
194
|
msgid "Warning"
|
172
195
|
msgstr "Warnung"
|
173
196
|
|
197
|
+
msgid "filter results"
|
198
|
+
msgstr ""
|
199
|
+
|
200
|
+
msgid "hash containing facts for the host"
|
201
|
+
msgstr ""
|
202
|
+
|
174
203
|
msgid "items selected. Uncheck to Clear"
|
175
|
-
msgstr "Elemente ausgewählt.
|
204
|
+
msgstr "Elemente ausgewählt. Zum Leeren abwählen"
|
205
|
+
|
206
|
+
msgid "not required if it's a virtual machine"
|
207
|
+
msgstr ""
|
208
|
+
|
209
|
+
msgid "not required if using a subnet with DHCP proxy"
|
210
|
+
msgstr ""
|
211
|
+
|
212
|
+
msgid "number of entries per request"
|
213
|
+
msgstr ""
|
214
|
+
|
215
|
+
msgid "paginate results"
|
216
|
+
msgstr ""
|
217
|
+
|
218
|
+
msgid "sort results"
|
219
|
+
msgstr ""
|