foreman_discovery 1.3.0 → 1.4.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODM5ZGE4MTdiMTViZDllOTAxN2QzNDQzNmE4ZDI1NGVkOGIyOTUwZA==
4
+ OGNmNzE1ODY2NjM0ZWZmMmI0MzljNDI5NzkxZDllZDAxOTI5NzE3Zg==
5
5
  data.tar.gz: !binary |-
6
- NTJlNWM3MTVjNTE5MTBiNGNmNmY2YmZiN2RmMWJjZjIzYjJlZDJkMg==
6
+ MDk2NTBhMjNhYWU5NWI0ZDhhMzRlYWU1NDVmMjdhN2RiMDI5ZjVmOQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZDQ0NzQxYjFmMDgyZTgzYmQ2NDg2OTBiZjExNDY2NmQ1OGVkNWMwZmI4ZmI2
10
- NTNmYTc0N2VlMzliNWEzZTIyOTBhZDE4NGUxODkzZTc1Y2VhMDFkMGQ3ODZk
11
- N2ViMTA2MjZjY2I5OWZkOTc4ZGQ1NGVmOGYxZjI3ZTU3NjBlODk=
9
+ ZjA4NTZmNjczZjBiODExN2Q1ZDcyYjA1ODg5NmJjZjY4NDlkYWUyYzUwY2I4
10
+ ZTU2Yzc5ZGQzNWY3MzBlNGI5ZmU3ODY1ZThmZTI1MDg4YThmZDgzY2E1MTgy
11
+ ODc2ZmVhZjhkOWQxMDAzYzc2YjQ4NzllNGE5NzFkYzgzNzQ3YmI=
12
12
  data.tar.gz: !binary |-
13
- OGE0ZWM2ZWZlZDAxMjAwMDQ0MjhjNjFlOTk0MmVkMGY4MDk1MDIwZmNmZGJl
14
- OWY3Y2Y3ZTI0ZjRkZjc5MDUwYTgzYzI2ZGYwZWNmNzcxZTdmM2U2ZDU0YTEy
15
- YjI5MzVjNTA2MTMxNDdhOWFmYTY5ZTk4OTY1YmE5NDQwMGQyNTM=
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.5, the foreman-installer is able to automatically download
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
- api :GET, "/discovered_hosts/", "List all discovered hosts"
9
- param :search, String, :desc => "Filter results"
10
- param :order, String, :desc => "Sort results"
11
- param :page, String, :desc => "paginate results"
12
- param :per_page, String, :desc => "number of entries per request"
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 dhcp proxy"
46
- param :mac, String, :desc => "not required if its a virtual machine"
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 => 'UUID to track orchestration tasks status, GET /api/orchestration/:UUID/tasks'
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 the facts for the host"
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
- hosts = ::Host::Discovered.search_for(params[:search], :order => params[:order])
18
+ search = resource_base.search_for(params[:search], :order => params[:order])
19
19
  respond_to do |format|
20
- format.html { @hosts = hosts.list.paginate :page => params[:page] }
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
- # This `where` shouldn't be necessary, but randomly the sql query on the line above
24
- # sometimes loses the `where` clause, leading to all Hosts on the Discovery index
25
- # this seems like a rails bug, TODO: figure out whats really wrong here
26
- scope :list, lambda { where(:type => "Host::Discovered").includes(:model, :location, :organization) }
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 = facts[fact_name].try(:downcase).try(:gsub,/:/,'').try(:sub,/^/,'mac')
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 = 'discovery'
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.4'
28
+ requires_foreman '> 1.5'
30
29
 
31
30
  # Add permissions
32
31
  security_block :discovery do
33
- permission :view_discovered_hosts, {:discovered_hosts => [:index, :show, :auto_complete_search, :refresh_facts] }, :resource_type => 'Host'
34
- permission :provision_discovered_hosts, {:discovered_hosts => [:new, :create] }, :resource_type => 'Host'
35
- permission :edit_discovered_hosts, {:discovered_hosts => [:edit, :update, :update_multiple_location,
36
- :select_multiple_organization,
37
- :update_multiple_organization,
38
- :select_multiple_location] }, :resource_type => 'Host'
39
- permission :destroy_discovered_hosts, {:discovered_hosts => [:destroy, :submit_multiple_destroy, :multiple_destroy] }, :resource_type => 'Host'
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
- :caption=> N_('Discovered hosts'),
49
- :parent => :hosts_menu,
50
- :after=>:hosts
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
@@ -1,3 +1,3 @@
1
1
  module ForemanDiscovery
2
- VERSION = "1.3.0"
2
+ VERSION = "1.4.0.rc1"
3
3
  end
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!
@@ -4,13 +4,14 @@
4
4
  #
5
5
  #
6
6
  # Translators:
7
- # bechtoldt <mail@arnoldbechtoldt.com>, 2014
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: Foreman\n"
11
+ "Project-Id-Version: foreman_discovery 1.3.0\n"
11
12
  "Report-Msgid-Bugs-To: \n"
12
- "POT-Creation-Date: 2014-04-08 15:59+0200\n"
13
- "PO-Revision-Date: 2014-04-09 10:00+0000\n"
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 gerade geändert"
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 "Sind Sie sicher?"
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 "Löschen %s?"
51
+ msgstr "%s löschen?"
52
+
53
+ msgid "Delete a discovered host"
54
+ msgstr ""
48
55
 
49
56
  msgid "Delete hosts"
50
- msgstr "Lösche Hosts"
57
+ msgstr "Hosts löschen"
51
58
 
52
59
  msgid "Destroyed selected hosts"
53
- msgstr "ausgewählte gelöschte Systeme"
60
+ msgstr "Ausgewählte Hosts gelöscht"
54
61
 
55
62
  msgid "Discovered host: %s"
56
- msgstr "Entdeckte Hosts: %s"
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 erneuert für %s"
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 "Konnte für %s keine Fakten erneuern"
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 "Lokation"
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 Systeme ausgewählt"
117
+ msgstr "Keine Hosts ausgewählt"
108
118
 
109
119
  msgid "No hosts were found with that id or name"
110
- msgstr "es wurden keine Systeme mit dieser ID oder Namen gefunden"
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 "bitte bestätigen"
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 "Starte %s neu"
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 "Lokation auswählen"
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 "Bei der Systemauswahl von %s ist ein Fehler aufgetreten"
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-Lokation zum Platzieren entdeckter Hosts"
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 folgende Systeme wurden nicht gelöscht: %s"
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 "Unzugeordnete Hosts"
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. Abwählen um zu Leeren"
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 ""