foreman_discovery 4.1.2 → 5.0.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 +54 -6
- data/app/helpers/discovered_hosts_helper.rb +15 -0
- data/app/models/concerns/discovery_subnet.rb +2 -0
- data/app/models/discovery_rule.rb +2 -0
- data/app/models/host/discovered.rb +2 -0
- data/app/models/host/managed_extensions.rb +7 -1
- data/app/models/hostgroup_extensions.rb +1 -0
- data/app/models/setting/discovered.rb +16 -0
- data/app/services/foreman_discovery/node_api/power.rb +0 -40
- data/app/services/foreman_discovery/node_api/power_legacy_direct_service.rb +15 -0
- data/app/services/foreman_discovery/node_api/power_legacy_proxied_service.rb +12 -0
- data/app/services/foreman_discovery/node_api/power_service.rb +16 -0
- data/app/views/dashboard/_discovery_widget.html.erb +1 -1
- data/app/views/discovered_hosts/show.html.erb +91 -12
- data/config/routes.rb +3 -3
- data/db/migrate/20141223142759_fill_discovery_attribute_sets_for_existing_hosts.rb +1 -1
- data/db/seeds.d/50_discovery_templates.rb +2 -3
- data/db/seeds.d/60_discovery_proxy_feature.rb +1 -1
- data/lib/foreman_discovery/engine.rb +4 -6
- data/lib/foreman_discovery/version.rb +1 -1
- data/locale/ca/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ca/foreman_discovery.po +506 -0
- metadata +11 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f374078ca62446b7d03fd98a002238e45cc9564
|
4
|
+
data.tar.gz: 843df4136fa29c634e7446349ba2ad358902662f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a8eeb66a019a1d99e8c2705698a7fd410e6ed993cb00a1ee1b5c16d39fe22168d4c01cb5bcc72f49dd40bc4d08545d94ab0be95cd682ac843d9eb462a8f79b5
|
7
|
+
data.tar.gz: debdc05bee101a87d3154f03ff600f090e5186e05f941d8d7c7e61377acfa4679396b999d442b98583e5a7355e6ffdcc2bf42eb4c7a0e19b6f3fc2d06262d331
|
@@ -2,9 +2,11 @@ class DiscoveredHostsController < ::ApplicationController
|
|
2
2
|
include Foreman::Controller::AutoCompleteSearch
|
3
3
|
include Foreman::Controller::TaxonomyMultiple
|
4
4
|
include Foreman::Controller::DiscoveredExtensions
|
5
|
+
include ActionView::Helpers::NumberHelper
|
5
6
|
unloadable
|
6
7
|
|
7
|
-
before_filter :find_by_name, :only => %w[
|
8
|
+
before_filter :find_by_name, :only => %w[edit update destroy refresh_facts convert reboot auto_provision]
|
9
|
+
before_filter :find_by_name_incl_subnet, :only => [:show]
|
8
10
|
before_filter :find_multiple, :only => [:multiple_destroy, :submit_multiple_destroy]
|
9
11
|
before_filter :taxonomy_scope, :only => [:edit]
|
10
12
|
|
@@ -26,9 +28,16 @@ class DiscoveredHostsController < ::ApplicationController
|
|
26
28
|
def show
|
27
29
|
# filter graph time range
|
28
30
|
@range = nil
|
29
|
-
|
30
31
|
# summary report text
|
31
32
|
@report_summary = nil
|
33
|
+
init_regex_and_categories
|
34
|
+
@interfaces = []
|
35
|
+
get_interfaces
|
36
|
+
@host.facts_hash.each do |key, value|
|
37
|
+
value = number_to_human_size(value) if /size$/.match(key)
|
38
|
+
assign_fact_to_category(key, value) unless @interfaces.any? {|interface| key.include? interface[:identifier]}
|
39
|
+
end
|
40
|
+
add_custom_facts
|
32
41
|
end
|
33
42
|
|
34
43
|
def destroy
|
@@ -171,13 +180,35 @@ class DiscoveredHostsController < ::ApplicationController
|
|
171
180
|
|
172
181
|
private
|
173
182
|
|
183
|
+
def init_regex_and_categories
|
184
|
+
hightlights = Setting[:discovery_facts_highlights].empty? ? /^(productname|memorysize|manufacturer|architecture|macaddress$|processorcount|physicalprocessorcount|discovery_subnet|discovery_boot|ipaddress$)/ : Regexp.new(eval(Setting[:discovery_facts_highlights]))
|
185
|
+
storage = Setting[:discovery_facts_storage].empty? ? /^blockdevice/ : Regexp.new(eval(Setting[:discovery_facts_storage]))
|
186
|
+
hardware = Setting[:discovery_facts_hardware].empty? ? /^(hardw|manufacturer|memo|process)/ : Regexp.new(eval(Setting[:discovery_facts__hardware]))
|
187
|
+
network = Setting[:discovery_facts_network].empty? ? /^(ipaddress|interfaces|dhcp|fqdn|hostname|link|mtu|net|macaddress|wol|port|speed)/ : Regexp.new(eval(Setting[:discovery_facts_network]))
|
188
|
+
software = Setting[:discovery_facts_software].empty? ? /^(bios|os|discovery)/ : Regexp.new(eval(Setting[:discovery_facts_software]))
|
189
|
+
ipmi = Setting[:discovery_facts_ipmi].empty? ? /^ipmi/ : Regexp.new(eval(Setting[:discovery_facts_ipmi]))
|
190
|
+
@regex_array = [hightlights, storage, hardware, network, software, ipmi, false]
|
191
|
+
@categories = Array.new(7) { Hash.new }
|
192
|
+
@categories_names = [:Hightlights, :Storage, :Hardware, :Network, :Software, :IPMI, :Misceleneous]
|
193
|
+
end
|
194
|
+
|
195
|
+
def assign_fact_to_category(key, value )
|
196
|
+
@regex_array.each_with_index do |regex, index|
|
197
|
+
if !regex
|
198
|
+
@categories[index][key] = value
|
199
|
+
elsif regex.match key
|
200
|
+
@categories[index][key] = value
|
201
|
+
break
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
174
206
|
def resource_base
|
175
207
|
@resource_base ||= ::Host::Discovered.authorized(current_permission, ::Host::Discovered)
|
176
208
|
end
|
177
209
|
|
178
210
|
def load_vars_for_ajax
|
179
211
|
return unless @host
|
180
|
-
|
181
212
|
@environment = @host.environment
|
182
213
|
@architecture = @host.architecture
|
183
214
|
@domain = @host.domain
|
@@ -213,13 +244,17 @@ class DiscoveredHostsController < ::ApplicationController
|
|
213
244
|
end
|
214
245
|
end
|
215
246
|
|
216
|
-
def find_by_name
|
247
|
+
def find_by_name(*includes)
|
217
248
|
params[:id].downcase! if params[:id].present?
|
218
|
-
@host = resource_base.find_by_id(params[:id])
|
219
|
-
@host ||= resource_base.find_by_name(params[:id])
|
249
|
+
@host = includes.empty? ? resource_base.find_by_id(params[:id]) : resource_base.includes(includes).find_by_id(params[:id])
|
250
|
+
@host ||= includes.empty? ? resource_base.find_by_name(params[:id]) : resource_base.includes(includes).find_by_name(params[:id])
|
220
251
|
return false unless @host
|
221
252
|
end
|
222
253
|
|
254
|
+
def find_by_name_incl_subnet
|
255
|
+
find_by_name({:interfaces => :subnet})
|
256
|
+
end
|
257
|
+
|
223
258
|
def find_multiple
|
224
259
|
# Lets search by name or id and make sure one of them exists first
|
225
260
|
if params[:host_names].present? or params[:host_ids].present?
|
@@ -262,4 +297,17 @@ class DiscoveredHostsController < ::ApplicationController
|
|
262
297
|
ensure
|
263
298
|
Bullet.enable = true if defined? Bullet
|
264
299
|
end
|
300
|
+
|
301
|
+
def get_interfaces
|
302
|
+
@host.interfaces.each do |interface|
|
303
|
+
@interfaces << {:identifier => interface["identifier"], :type => interface["type"], :mac => interface["mac"], :ip => interface["ip"]? interface["ip"] : "N/A", :primary => interface["primary"], :provision => interface["provision"]}
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
def add_custom_facts
|
308
|
+
unless @host.primary_interface.subnet.nil?
|
309
|
+
discovery_subnet = "#{@host.primary_interface.subnet.name} (#{@host.primary_interface.subnet.network})"
|
310
|
+
assign_fact_to_category("discovery_subnet", discovery_subnet)
|
311
|
+
end
|
312
|
+
end
|
265
313
|
end
|
@@ -1,5 +1,12 @@
|
|
1
1
|
module DiscoveredHostsHelper
|
2
2
|
|
3
|
+
def attach_flags(interface)
|
4
|
+
flags = ""
|
5
|
+
flags += "flag-primary " if interface[:primary]
|
6
|
+
flags += "flag-provision" if interface[:provision]
|
7
|
+
flags
|
8
|
+
end
|
9
|
+
|
3
10
|
def disc_report_column(record)
|
4
11
|
record.last_report? ? (_("%s ago") % time_ago_in_words(record.last_report.getlocal)) : ""
|
5
12
|
end
|
@@ -10,12 +17,20 @@ module DiscoveredHostsHelper
|
|
10
17
|
actions << [_('Refresh facts') ,hash_for_refresh_facts_discovered_host_path(:id => host)]
|
11
18
|
actions << [_('Reboot') ,hash_for_reboot_discovered_host_path(:id => host), :method => :put]
|
12
19
|
title_actions(
|
20
|
+
button_group(
|
21
|
+
link_to(_("Back"), :back)
|
22
|
+
),
|
13
23
|
select_action_button( _("Select Action"), {},
|
14
24
|
actions.map do |action|
|
15
25
|
method = action[2] if action.size > 1
|
16
26
|
link_to(action[0] , action[1], method)
|
17
27
|
end.flatten
|
18
28
|
),
|
29
|
+
button_group(
|
30
|
+
link_to(_("Expand All"),"#",:class => "btn ",:onclick => "$('.glyphicon-plus-sign').toggleClass('glyphicon glyphicon-minus-sign glyphicon glyphicon-plus-sign');
|
31
|
+
$('.facts-panel').addClass('collapse in').height('auto');"
|
32
|
+
)
|
33
|
+
),
|
19
34
|
button_group(
|
20
35
|
link_to(_("Delete"), hash_for_discovered_host_path(:id => host),
|
21
36
|
:class => "btn btn-danger", :confirm => _('Are you sure?'), :method => :delete)
|
@@ -5,6 +5,8 @@ class DiscoveryRule < ActiveRecord::Base
|
|
5
5
|
include Parameterizable::ByIdName
|
6
6
|
include Taxonomix
|
7
7
|
|
8
|
+
attr_accessible :name, :priority, :search, :enabled, :hostgroup, :hostgroup_id, :max_count, :hostname
|
9
|
+
|
8
10
|
validates :name, :presence => true, :uniqueness => true,
|
9
11
|
:format => { :with => /\A(\S+)\Z/, :message => N_("can't contain white spaces.") }
|
10
12
|
validates :search, :presence => true
|
@@ -10,6 +10,7 @@ module Host::ManagedExtensions
|
|
10
10
|
|
11
11
|
# extra flag for post_queue callbacks which has no access to facts
|
12
12
|
attr_accessor :legacy_api
|
13
|
+
attr_accessible :discovery_rule_id
|
13
14
|
end
|
14
15
|
|
15
16
|
def queue_reboot
|
@@ -35,11 +36,16 @@ module Host::ManagedExtensions
|
|
35
36
|
end
|
36
37
|
|
37
38
|
def boot_url pxe_file
|
38
|
-
|
39
|
+
raise ::Foreman::Exception.new(N_("Operating system not set for host/hostgroup")) unless operatingsystem
|
40
|
+
base = operatingsystem.medium_uri(self)
|
41
|
+
raise ::Foreman::Exception.new(N_("Medium not set for host/hostgroup")) unless base
|
42
|
+
path = operatingsystem.url_for_boot(pxe_file)
|
43
|
+
operatingsystem.medium_vars_to_uri("#{base}/#{path}", architecture.name, operatingsystem).to_s
|
39
44
|
end
|
40
45
|
|
41
46
|
def setKexec
|
42
47
|
template = provisioning_template(:kind => 'kexec')
|
48
|
+
raise ::Foreman::Exception.new(N_("Kexec template not associated with operating system")) unless template
|
43
49
|
@host = self
|
44
50
|
@kernel = boot_url(:kernel)
|
45
51
|
@initrd = boot_url(:initrd)
|
@@ -2,6 +2,12 @@ class Setting::Discovered < ::Setting
|
|
2
2
|
BLANK_ATTRS << "discovery_location"
|
3
3
|
BLANK_ATTRS << "discovery_organization"
|
4
4
|
BLANK_ATTRS << "discovery_fact_column"
|
5
|
+
BLANK_ATTRS << 'discovery_facts_highlights'
|
6
|
+
BLANK_ATTRS << 'discovery_facts_storage'
|
7
|
+
BLANK_ATTRS << 'discovery_facts_software'
|
8
|
+
BLANK_ATTRS << 'discovery_facts_hardware'
|
9
|
+
BLANK_ATTRS << 'discovery_facts_network'
|
10
|
+
BLANK_ATTRS << 'discovery_facts_ipmi'
|
5
11
|
|
6
12
|
def self.load_defaults
|
7
13
|
# Check the table exists
|
@@ -42,6 +48,16 @@ class Setting::Discovered < ::Setting
|
|
42
48
|
end
|
43
49
|
end
|
44
50
|
|
51
|
+
Setting.transaction do
|
52
|
+
[
|
53
|
+
self.set('discovery_facts_highlights', N_("Regex to organize facts for highlights section"), ""),
|
54
|
+
self.set('discovery_facts_storage', N_("Regex to organize facts for storage section"), ""),
|
55
|
+
self.set('discovery_facts_software', N_("Regex to organize facts for software section"), ""),
|
56
|
+
self.set('discovery_facts_hardware', N_("Regex to organize facts for hardware section"), ""),
|
57
|
+
self.set('discovery_facts_network', N_("Regex to organize facts for network section"), ""),
|
58
|
+
self.set('discovery_facts_ipmi', N_("Regex to organize facts for ipmi section"), ""),
|
59
|
+
].compact.each { |s| self.create s.update(:category => "Setting::Discovered")}
|
60
|
+
end
|
45
61
|
true
|
46
62
|
|
47
63
|
end
|
@@ -14,44 +14,4 @@ module ForemanDiscovery::NodeAPI
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
18
|
-
class PowerService < NodeResource
|
19
|
-
def url
|
20
|
-
@args[:url] + "/power"
|
21
|
-
end
|
22
|
-
|
23
|
-
def reboot
|
24
|
-
put({}, "/reboot")
|
25
|
-
end
|
26
|
-
|
27
|
-
def kexec(json)
|
28
|
-
put(json, "/kexec")
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
# legacy /reboot call direct
|
34
|
-
class PowerLegacyDirectService < NodeResource
|
35
|
-
def initialize(args)
|
36
|
-
super args
|
37
|
-
raise ArgumentError, "Legacy direct service only supports http scheme" if scheme != 'http'
|
38
|
-
raise ArgumentError, "Legacy direct service only supports port 8443" if port != 8443
|
39
|
-
Foreman::Deprecation.deprecation_warning("1.11", "Discovery legacy API will be removed, use the new Power API")
|
40
|
-
end
|
41
|
-
|
42
|
-
def reboot
|
43
|
-
::ProxyAPI::BMC.new(:url => url).power :action => "cycle"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
# legacy /reboot call via proxy
|
48
|
-
class PowerLegacyProxiedService < NodeResource
|
49
|
-
def initialize(args)
|
50
|
-
super args.merge(:proxy => true)
|
51
|
-
end
|
52
|
-
|
53
|
-
def reboot
|
54
|
-
put({}, "/reboot")
|
55
|
-
end
|
56
|
-
end
|
57
17
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module ForemanDiscovery::NodeAPI
|
2
|
+
# legacy /reboot call direct
|
3
|
+
class PowerLegacyDirectService < NodeResource
|
4
|
+
def initialize(args)
|
5
|
+
super args
|
6
|
+
raise ArgumentError, "Legacy direct service only supports http scheme" if scheme != 'http'
|
7
|
+
raise ArgumentError, "Legacy direct service only supports port 8443" if port != 8443
|
8
|
+
Foreman::Deprecation.deprecation_warning("1.11", "Discovery legacy API will be removed, use the new Power API")
|
9
|
+
end
|
10
|
+
|
11
|
+
def reboot
|
12
|
+
::ProxyAPI::BMC.new(:url => url).power :action => "cycle"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -2,15 +2,94 @@
|
|
2
2
|
|
3
3
|
<%= discovered_hosts_title_actions(@host) %>
|
4
4
|
|
5
|
-
<
|
6
|
-
<
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
</table>
|
5
|
+
<div class="row">
|
6
|
+
<div class="col-md-6">
|
7
|
+
<div class="panel panel-default">
|
8
|
+
<div class="panel-heading" ><strong> <%= @categories_names[0] %></strong> </div>
|
9
|
+
<table class="table table-bordered table-condensed table-fixed">
|
10
|
+
<% @categories[0].sort.each do |keys, val| %>
|
11
|
+
<tr class="">
|
12
|
+
<th class="ellipsis" width="40%"> <strong> <%= keys %> </strong></th>
|
13
|
+
<td><%= val %></td>
|
14
|
+
</tr>
|
15
|
+
<% end -%>
|
16
|
+
</table>
|
17
|
+
</div>
|
18
|
+
<% unless @interfaces.empty? %>
|
19
|
+
<div class="panel panel-default">
|
20
|
+
<div class="panel-heading" role="tab">
|
21
|
+
<h4 class="panel-title">
|
22
|
+
<a role="button" class="expendable-link" data-toggle="collapse" data-parent="#accordion" href="#interfaces-panel" aria-expanded="true" onclick="$(this).find(':first-child').toggleClass('glyphicon glyphicon-minus-sign glyphicon glyphicon-plus-sign')">
|
23
|
+
<span class="glyphicon glyphicon-minus-sign" aria-hidden="true"></span>
|
24
|
+
Interfaces
|
25
|
+
</a>
|
26
|
+
</h4>
|
27
|
+
</div>
|
28
|
+
<div id="interfaces-panel" class="panel-collapse collapse facts-panel in" >
|
29
|
+
<table class="table table-bordered table-condensed table-fixed" id="interfaceList">
|
30
|
+
<tr>
|
31
|
+
<th class="hidden-xs " width="12%"></th>
|
32
|
+
<th class="hidden-xs "><%= _('Identifier') %></th>
|
33
|
+
<th class="hidden-xs "><%= _("MAC address") %></th>
|
34
|
+
<th class="hidden-xs "><%= _("IP address") %></th>
|
35
|
+
</tr>
|
36
|
+
<% @interfaces.each do |interface| %>
|
37
|
+
<tr>
|
38
|
+
<td class="<%= attach_flags(interface) %> ellipsis"></td>
|
39
|
+
<td class="ellipsis"><%= interface[:identifier] %></td>
|
40
|
+
<td class="ellipsis"><%= interface[:mac] %></td>
|
41
|
+
<td class="ellipsis"><%= interface[:ip] %></td>
|
42
|
+
</tr>
|
43
|
+
<% end %>
|
44
|
+
</table>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
<% end %>
|
48
|
+
</div>
|
49
|
+
|
50
|
+
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
|
51
|
+
<div class="col-md-6">
|
52
|
+
<% @categories.each_with_index do |val, index| %>
|
53
|
+
<% next if index == 0 || val.empty? %>
|
54
|
+
<div class="panel panel-default">
|
55
|
+
<div class="panel-heading" role="tab">
|
56
|
+
<h4 class="panel-title">
|
57
|
+
<a role="button" class="expendable-link" data-toggle="collapse" data-parent="#accordion" href="#<%= @categories_names[index].to_s + "panel" %>" aria-expanded="true" onclick="$(this).find(':first-child').toggleClass('glyphicon glyphicon-minus-sign glyphicon glyphicon-plus-sign')">
|
58
|
+
<span class="glyphicon glyphicon<%= (@categories_names[index].to_s.include?("Storage")? "-minus-sign":"-plus-sign")%>" aria-hidden="true"></span>
|
59
|
+
<%= @categories_names[index] %>
|
60
|
+
</a>
|
61
|
+
</h4>
|
62
|
+
</div>
|
63
|
+
<div id="<%= @categories_names[index].to_s + "panel" %>" class="panel-collapse collapse facts-panel <%= "in" if @categories_names[index].to_s.include?"Storage"%>" role="tabpanel">
|
64
|
+
<table class="table table-bordered table-condensed table-fixed">
|
65
|
+
<% val.sort.each do |key, value| %>
|
66
|
+
<tr class="">
|
67
|
+
<th width="40%" class="ellipsis"><strong> <%= key %> </strong> </th>
|
68
|
+
<td class="ellipsis"> <%= value %> </td>
|
69
|
+
</tr>
|
70
|
+
<% end %>
|
71
|
+
</table>
|
72
|
+
</div>
|
73
|
+
</div>
|
74
|
+
<% end -%>
|
75
|
+
</div>
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
|
79
|
+
<script type="text/javascript" charset="utf-8">
|
80
|
+
$(document).ready(function(){
|
81
|
+
$("table").css('padding', '0');
|
82
|
+
$("table").css("cssText", 'margin-bottom: 0 !important;');
|
83
|
+
$(".panel-default").css('margin-bottom', "10px")
|
84
|
+
|
85
|
+
provision_class = 'active'
|
86
|
+
primary_class = 'active'
|
87
|
+
var flag_primary = '<i class="glyphicon glyphicon glyphicon-tag primary-flag '+ primary_class +'" title="" data-original-title="'+ __('Primary') +'"></i>';
|
88
|
+
var flags_provision = '<i class="glyphicon glyphicon glyphicon-hdd provision-flag '+ provision_class +'" title="" data-original-title="'+ __('Provisioning') +'"></i>';
|
89
|
+
|
90
|
+
$('.flag-primary').html(flag_primary);
|
91
|
+
$('.flag-provision').append(flags_provision);
|
92
|
+
$('.primary-flag').tooltip();
|
93
|
+
$('.provision-flag').tooltip();
|
94
|
+
});
|
95
|
+
</script>
|
data/config/routes.rb
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
Rails.application.routes.draw do
|
3
3
|
|
4
4
|
# Needed to make the hosts/edit form render
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
get 'architecture_selected_discovered_hosts' => 'hosts#architecture_selected'
|
6
|
+
get 'os_selected_discovered_hosts' => 'hosts#os_selected'
|
7
|
+
get 'medium_selected_discovered_hosts' => 'hosts#medium_selected'
|
8
8
|
|
9
9
|
constraints(:id => /[^\/]+/) do
|
10
10
|
resources :discovered_hosts, :except => [:new, :create] do
|
@@ -1,9 +1,8 @@
|
|
1
|
-
kind = TemplateKind.
|
1
|
+
kind = TemplateKind.where(:name => 'kexec').first_or_create
|
2
2
|
|
3
3
|
ProvisioningTemplate.without_auditing do
|
4
4
|
content = File.read(File.join(ForemanDiscovery::Engine.root, 'app', 'views', 'foreman_discovery', 'redhat_kexec.erb'))
|
5
|
-
tmpl = ProvisioningTemplate.
|
6
|
-
:name => 'Discovery Red Hat kexec',
|
5
|
+
tmpl = ProvisioningTemplate.where(:name => 'Discovery Red Hat kexec').first_or_create(
|
7
6
|
:template_kind_id => kind.id,
|
8
7
|
:snippet => false,
|
9
8
|
:template => content
|
@@ -1,2 +1,2 @@
|
|
1
|
-
f = Feature.
|
1
|
+
f = Feature.where(:name => 'Discovery').first_or_create
|
2
2
|
raise "Unable to create proxy feature: #{format_errors f}" if f.nil? || f.errors.any?
|
@@ -39,12 +39,14 @@ module ForemanDiscovery
|
|
39
39
|
|
40
40
|
# Add any db migrations
|
41
41
|
initializer "foreman_discovery.load_app_instance_data" do |app|
|
42
|
-
|
42
|
+
ForemanDiscovery::Engine.paths['db/migrate'].existent.each do |path|
|
43
|
+
app.config.paths['db/migrate'] << path
|
44
|
+
end
|
43
45
|
end
|
44
46
|
|
45
47
|
initializer 'foreman_discovery.register_plugin', :after=> :finisher_hook do |app|
|
46
48
|
Foreman::Plugin.register :foreman_discovery do
|
47
|
-
requires_foreman '>= 1.
|
49
|
+
requires_foreman '>= 1.11.0'
|
48
50
|
|
49
51
|
# discovered hosts permissions
|
50
52
|
security_block :discovery do
|
@@ -147,10 +149,6 @@ module ForemanDiscovery
|
|
147
149
|
end
|
148
150
|
end
|
149
151
|
|
150
|
-
initializer "foreman_discovery.load_app_instance_data" do |app|
|
151
|
-
app.config.paths['db/migrate'] += ForemanDiscovery::Engine.paths['db/migrate'].existent
|
152
|
-
end
|
153
|
-
|
154
152
|
initializer "foreman_discovery.apipie" do
|
155
153
|
if Apipie.configuration.respond_to?(:checksum_path)
|
156
154
|
Apipie.configuration.checksum_path += ['/discovered_hosts/']
|
Binary file
|
@@ -0,0 +1,506 @@
|
|
1
|
+
# SOME DESCRIPTIVE TITLE.
|
2
|
+
# Copyright (C) 2015 Foreman developers
|
3
|
+
# This file is distributed under the same license as the foreman_discovery package.
|
4
|
+
#
|
5
|
+
# Translators:
|
6
|
+
# Robert Antoni Buj i Gelonch <rbuj@fedoraproject.org>, 2015
|
7
|
+
msgid ""
|
8
|
+
msgstr ""
|
9
|
+
"Project-Id-Version: Foreman\n"
|
10
|
+
"Report-Msgid-Bugs-To: foreman-dev@googlegroups.com\n"
|
11
|
+
"POT-Creation-Date: 2015-10-15 09:33+0200\n"
|
12
|
+
"PO-Revision-Date: 2015-12-08 13:32+0000\n"
|
13
|
+
"Last-Translator: Robert Antoni Buj i Gelonch <rbuj@fedoraproject.org>\n"
|
14
|
+
"Language-Team: Catalan (http://www.transifex.com/foreman/foreman/language/ca/)\n"
|
15
|
+
"MIME-Version: 1.0\n"
|
16
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
17
|
+
"Content-Transfer-Encoding: 8bit\n"
|
18
|
+
"Language: ca\n"
|
19
|
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
20
|
+
|
21
|
+
msgid "%s - The following hosts are about to be changed"
|
22
|
+
msgstr "%s - Els següents amfitrions estan a punt de ser canviats"
|
23
|
+
|
24
|
+
msgid "%s ago"
|
25
|
+
msgstr "fa %s"
|
26
|
+
|
27
|
+
msgid "%s discovered hosts were provisioned"
|
28
|
+
msgstr "%s amfitrions descoberts van ser aprovisionats"
|
29
|
+
|
30
|
+
msgid "Are you sure?"
|
31
|
+
msgstr "Esteu segur?"
|
32
|
+
|
33
|
+
msgid "Assign Location"
|
34
|
+
msgstr "Assigna la ubicació"
|
35
|
+
|
36
|
+
msgid "Assign Organization"
|
37
|
+
msgstr "Assigna l'organització"
|
38
|
+
|
39
|
+
msgid "Auto Provision"
|
40
|
+
msgstr ""
|
41
|
+
|
42
|
+
msgid "Auto Provision All"
|
43
|
+
msgstr ""
|
44
|
+
|
45
|
+
msgid ""
|
46
|
+
"Automatically provision newly discovered hosts, according to the "
|
47
|
+
"provisioning rules"
|
48
|
+
msgstr ""
|
49
|
+
|
50
|
+
msgid "Automatically reboot discovered host during provisioning"
|
51
|
+
msgstr ""
|
52
|
+
|
53
|
+
msgid "CPUs"
|
54
|
+
msgstr "Les CPU"
|
55
|
+
|
56
|
+
msgid "Cancel"
|
57
|
+
msgstr "Cancel·la"
|
58
|
+
|
59
|
+
msgid "Could not get facts from proxy %{url}: %{error}"
|
60
|
+
msgstr "No s'han pogut obtenir els objectes d'interès del servidor intermediari %{url}: %{error}"
|
61
|
+
|
62
|
+
msgid "Create a discovered host for testing (use /facts to create new hosts)"
|
63
|
+
msgstr "Crea un amfitrió descobert per a provar-ho (utilitzeu /facts per crear nous amfitrions)"
|
64
|
+
|
65
|
+
msgid "Create a discovery rule"
|
66
|
+
msgstr "Crea una regla de descobriment"
|
67
|
+
|
68
|
+
msgid "Delete"
|
69
|
+
msgstr "Suprimeix"
|
70
|
+
|
71
|
+
msgid "Delete %s?"
|
72
|
+
msgstr "Voleu suprimir %s?"
|
73
|
+
|
74
|
+
msgid "Delete a discovered host"
|
75
|
+
msgstr ""
|
76
|
+
|
77
|
+
msgid "Delete a rule"
|
78
|
+
msgstr "Suprimeix una regla"
|
79
|
+
|
80
|
+
msgid "Delete hosts"
|
81
|
+
msgstr ""
|
82
|
+
|
83
|
+
msgid "Destroyed selected hosts"
|
84
|
+
msgstr ""
|
85
|
+
|
86
|
+
msgid "Disable"
|
87
|
+
msgstr ""
|
88
|
+
|
89
|
+
msgid "Disable rule?"
|
90
|
+
msgstr ""
|
91
|
+
|
92
|
+
msgid "Discovered host: %s"
|
93
|
+
msgstr ""
|
94
|
+
|
95
|
+
msgid "Discovered hosts"
|
96
|
+
msgstr ""
|
97
|
+
|
98
|
+
msgid "Discovered hosts are provisioning now"
|
99
|
+
msgstr ""
|
100
|
+
|
101
|
+
msgid "Discovered hosts are rebooting now"
|
102
|
+
msgstr ""
|
103
|
+
|
104
|
+
msgid "Discovery Rules"
|
105
|
+
msgstr "Regles de descobriment"
|
106
|
+
|
107
|
+
msgid "DiscoveryRule|Enabled"
|
108
|
+
msgstr "Habilitada"
|
109
|
+
|
110
|
+
msgid "DiscoveryRule|Name"
|
111
|
+
msgstr "Nom"
|
112
|
+
|
113
|
+
msgid "DiscoveryRule|Priority"
|
114
|
+
msgstr "Prioritat"
|
115
|
+
|
116
|
+
msgid "DiscoveryRule|Query"
|
117
|
+
msgstr "Consulta"
|
118
|
+
|
119
|
+
msgid "Disk count"
|
120
|
+
msgstr "Nombre de disc"
|
121
|
+
|
122
|
+
msgid "Disks size"
|
123
|
+
msgstr "Mida de disc"
|
124
|
+
|
125
|
+
msgid ""
|
126
|
+
"Domain will be appended automatically. A hostname based on MAC address will "
|
127
|
+
"be used when left blank. In addition to @host attribute function rand for "
|
128
|
+
"random integers is available. Examples:"
|
129
|
+
msgstr ""
|
130
|
+
|
131
|
+
msgid "Edit Discovery Rule"
|
132
|
+
msgstr "Edita la regla de descobriment"
|
133
|
+
|
134
|
+
msgid "Enable"
|
135
|
+
msgstr ""
|
136
|
+
|
137
|
+
msgid "Enable rule?"
|
138
|
+
msgstr ""
|
139
|
+
|
140
|
+
msgid "Errors during auto provisioning: %s"
|
141
|
+
msgstr ""
|
142
|
+
|
143
|
+
msgid "Errors during reboot: %s"
|
144
|
+
msgstr ""
|
145
|
+
|
146
|
+
msgid "Execute rules against a discovered host"
|
147
|
+
msgstr ""
|
148
|
+
|
149
|
+
msgid "Execute rules against all currently discovered hosts"
|
150
|
+
msgstr ""
|
151
|
+
|
152
|
+
msgid ""
|
153
|
+
"Expected discovery_fact '%s' is missing, unable to detect primary interface "
|
154
|
+
"and set hostname"
|
155
|
+
msgstr ""
|
156
|
+
|
157
|
+
msgid "Extra facter columns to show in host lists (separate by comma)"
|
158
|
+
msgstr ""
|
159
|
+
|
160
|
+
msgid "Fact"
|
161
|
+
msgstr "Objecte d'interès"
|
162
|
+
|
163
|
+
msgid "Fact name to use for primary interface detection and hostname"
|
164
|
+
msgstr "Nom de l'objecte d'interès per utilitzar-ho per a la detecció de la interfície primària i el nom d'amfitrió"
|
165
|
+
|
166
|
+
msgid "Facts discovered on this host"
|
167
|
+
msgstr "Els objectes d'interès que s'han descobert en aquest amfitrió"
|
168
|
+
|
169
|
+
msgid "Facts refreshed for %s"
|
170
|
+
msgstr "Els objectes d'interès que s'han refrescat per a %s"
|
171
|
+
|
172
|
+
msgid "Failed to auto provision host %s: %s"
|
173
|
+
msgstr ""
|
174
|
+
|
175
|
+
msgid "Failed to reboot host %s"
|
176
|
+
msgstr ""
|
177
|
+
|
178
|
+
msgid "Failed to reboot host %{hostname} with error %{error_message}"
|
179
|
+
msgstr ""
|
180
|
+
|
181
|
+
msgid "Failed to refresh facts for %s"
|
182
|
+
msgstr "No s'ha pogut refrescar els objectes d'interès per a %s"
|
183
|
+
|
184
|
+
msgid "Host"
|
185
|
+
msgstr "Amfitrió"
|
186
|
+
|
187
|
+
msgid "Host %{host} was provisioned with rule %{rule}"
|
188
|
+
msgstr ""
|
189
|
+
|
190
|
+
msgid "Host group"
|
191
|
+
msgstr "Grup d'amfitrions"
|
192
|
+
|
193
|
+
msgid "Host group location %s must also be associated to the discovery rule"
|
194
|
+
msgid_plural ""
|
195
|
+
"Host group locations %s must also be associated to the discovery rule"
|
196
|
+
msgstr[0] ""
|
197
|
+
msgstr[1] ""
|
198
|
+
|
199
|
+
msgid ""
|
200
|
+
"Host group organization %s must also be associated to the discovery rule"
|
201
|
+
msgid_plural ""
|
202
|
+
"Host group organizations %s must also be associated to the discovery rule"
|
203
|
+
msgstr[0] ""
|
204
|
+
msgstr[1] ""
|
205
|
+
|
206
|
+
msgid "Host of type %s can not be rebooted"
|
207
|
+
msgstr ""
|
208
|
+
|
209
|
+
msgid "Hostname for provisioned hosts"
|
210
|
+
msgstr ""
|
211
|
+
|
212
|
+
msgid "Hosts limit"
|
213
|
+
msgstr ""
|
214
|
+
|
215
|
+
msgid "Hosts/limit"
|
216
|
+
msgstr "Amfitrions/límit"
|
217
|
+
|
218
|
+
msgid "IP Address"
|
219
|
+
msgstr "Adreça IP"
|
220
|
+
|
221
|
+
msgid "Image API processing error: %{msg} (HTTP/%{code}, body: %{body})"
|
222
|
+
msgstr ""
|
223
|
+
|
224
|
+
msgid "Image API returned HTTP/%{code} with '%{body}"
|
225
|
+
msgstr ""
|
226
|
+
|
227
|
+
msgid "Incompatible version of puppet fact parser"
|
228
|
+
msgstr "Versió incompatible de l'analitzador sintàctic de l'objecte d'interès de puppet"
|
229
|
+
|
230
|
+
msgid "Invalid facts, must be a Hash"
|
231
|
+
msgstr "Objectes d'interès no vàlids, han de tenir un Hash"
|
232
|
+
|
233
|
+
msgid "Last facts upload"
|
234
|
+
msgstr "Última pujada dels objectes d'interès"
|
235
|
+
|
236
|
+
msgid "List all discovered hosts"
|
237
|
+
msgstr "Llista tots els amfitrions descoberts"
|
238
|
+
|
239
|
+
msgid "List all discovery rules"
|
240
|
+
msgstr "Llista totes les regles de descobriment"
|
241
|
+
|
242
|
+
msgid "Location"
|
243
|
+
msgstr "Ubicació"
|
244
|
+
|
245
|
+
msgid "Locations"
|
246
|
+
msgstr "Ubicacions"
|
247
|
+
|
248
|
+
msgid "Maximum hosts provisioned with this rule (0 = unlimited)"
|
249
|
+
msgstr ""
|
250
|
+
|
251
|
+
msgid "Memory"
|
252
|
+
msgstr "Memòria"
|
253
|
+
|
254
|
+
msgid "Model"
|
255
|
+
msgstr "Model"
|
256
|
+
|
257
|
+
msgid "N/A"
|
258
|
+
msgstr ""
|
259
|
+
|
260
|
+
msgid "Name"
|
261
|
+
msgstr "Nom"
|
262
|
+
|
263
|
+
msgid "New Discovery Rule"
|
264
|
+
msgstr "Nova regla de descobriment"
|
265
|
+
|
266
|
+
msgid "New Rule"
|
267
|
+
msgstr "Nova regla"
|
268
|
+
|
269
|
+
msgid "New in the last 24 hours"
|
270
|
+
msgstr ""
|
271
|
+
|
272
|
+
msgid "No discovered hosts available"
|
273
|
+
msgstr ""
|
274
|
+
|
275
|
+
msgid "No discovered hosts to provision"
|
276
|
+
msgstr ""
|
277
|
+
|
278
|
+
msgid "No discovered hosts to reboot"
|
279
|
+
msgstr ""
|
280
|
+
|
281
|
+
msgid "No hosts selected"
|
282
|
+
msgstr ""
|
283
|
+
|
284
|
+
msgid "No hosts were found with that id or name"
|
285
|
+
msgstr ""
|
286
|
+
|
287
|
+
msgid "No rule found for host %s"
|
288
|
+
msgstr ""
|
289
|
+
|
290
|
+
msgid "Not reported in more than 7 days"
|
291
|
+
msgstr "No es va informar en més de 7 dies"
|
292
|
+
|
293
|
+
msgid "Organization"
|
294
|
+
msgstr "Organització"
|
295
|
+
|
296
|
+
msgid "Organizations"
|
297
|
+
msgstr "Organitzacions"
|
298
|
+
|
299
|
+
msgid "Please Confirm"
|
300
|
+
msgstr ""
|
301
|
+
|
302
|
+
msgid "Primary"
|
303
|
+
msgstr "Primària"
|
304
|
+
|
305
|
+
msgid "Provision"
|
306
|
+
msgstr ""
|
307
|
+
|
308
|
+
msgid "Provision a discovered host"
|
309
|
+
msgstr ""
|
310
|
+
|
311
|
+
msgid "Reboot"
|
312
|
+
msgstr ""
|
313
|
+
|
314
|
+
msgid "Reboot All"
|
315
|
+
msgstr ""
|
316
|
+
|
317
|
+
msgid "Rebooting %s"
|
318
|
+
msgstr ""
|
319
|
+
|
320
|
+
msgid "Rebooting a discovered host"
|
321
|
+
msgstr ""
|
322
|
+
|
323
|
+
msgid "Rebooting all discovered hosts"
|
324
|
+
msgstr ""
|
325
|
+
|
326
|
+
msgid "Rebooting host %s"
|
327
|
+
msgstr ""
|
328
|
+
|
329
|
+
msgid "Refresh facts"
|
330
|
+
msgstr "Refresca els objectes d'interès"
|
331
|
+
|
332
|
+
msgid "Refreshing the facts of a discovered host"
|
333
|
+
msgstr "S'estan refrescant els objectes d'interès d'un amfitrió descobert"
|
334
|
+
|
335
|
+
msgid "Reloading kernel on %s"
|
336
|
+
msgstr "S'està tornant a carregar el kernel a %s"
|
337
|
+
|
338
|
+
msgid "Reported in the last 7 days"
|
339
|
+
msgstr ""
|
340
|
+
|
341
|
+
msgid "Rule disabled"
|
342
|
+
msgstr ""
|
343
|
+
|
344
|
+
msgid "Rule enabled"
|
345
|
+
msgstr ""
|
346
|
+
|
347
|
+
msgid "Rule priority (lower integer means higher priority)"
|
348
|
+
msgstr ""
|
349
|
+
|
350
|
+
msgid "Select Action"
|
351
|
+
msgstr ""
|
352
|
+
|
353
|
+
msgid "Select all items in this page"
|
354
|
+
msgstr "Selecciona tots els ítems en aquesta pàgina"
|
355
|
+
|
356
|
+
msgid "Select location"
|
357
|
+
msgstr ""
|
358
|
+
|
359
|
+
msgid "Select organization"
|
360
|
+
msgstr "Selecciona l'organització"
|
361
|
+
|
362
|
+
msgid "Show a discovered host"
|
363
|
+
msgstr ""
|
364
|
+
|
365
|
+
msgid "Show a discovery rule"
|
366
|
+
msgstr "Mostra una regla de descobriment"
|
367
|
+
|
368
|
+
msgid "Something went wrong while selecting hosts - %s"
|
369
|
+
msgstr ""
|
370
|
+
|
371
|
+
msgid ""
|
372
|
+
"Specify target hostname template pattern in the same syntax as in "
|
373
|
+
"Provisioning Templates (ERB)."
|
374
|
+
msgstr ""
|
375
|
+
|
376
|
+
msgid "Submit"
|
377
|
+
msgstr "Envia"
|
378
|
+
|
379
|
+
msgid "Subnet"
|
380
|
+
msgstr "Subxarxa"
|
381
|
+
|
382
|
+
msgid "Target host group for this rule with all properties set"
|
383
|
+
msgstr ""
|
384
|
+
|
385
|
+
msgid "Template"
|
386
|
+
msgstr "Plantilla"
|
387
|
+
|
388
|
+
msgid "The default location to place discovered hosts in"
|
389
|
+
msgstr ""
|
390
|
+
|
391
|
+
msgid "The default organization to place discovered hosts in"
|
392
|
+
msgstr ""
|
393
|
+
|
394
|
+
msgid "The default prefix to use for the host name, must start with a letter"
|
395
|
+
msgstr ""
|
396
|
+
|
397
|
+
msgid "The following hosts were not deleted: %s"
|
398
|
+
msgstr ""
|
399
|
+
|
400
|
+
msgid ""
|
401
|
+
"This might take a while, as all hosts, facts and reports will be destroyed "
|
402
|
+
"as well"
|
403
|
+
msgstr ""
|
404
|
+
|
405
|
+
msgid ""
|
406
|
+
"UUID to track orchestration tasks status, GET /api/orchestration/:UUID/tasks"
|
407
|
+
msgstr ""
|
408
|
+
|
409
|
+
msgid "Unable to assign subnet, primary interface is missing IP address"
|
410
|
+
msgstr ""
|
411
|
+
|
412
|
+
msgid ""
|
413
|
+
"Unable to detect primary interface using MAC '%{mac}' specified by "
|
414
|
+
"discovery_fact '%{fact}'"
|
415
|
+
msgstr ""
|
416
|
+
|
417
|
+
msgid "Unable to find a discovery rule, no host provided (check permissions)"
|
418
|
+
msgstr ""
|
419
|
+
|
420
|
+
msgid "Unable to perform kexec on %{name} via %{url}: %{msg}"
|
421
|
+
msgstr ""
|
422
|
+
|
423
|
+
msgid "Unable to provision %{host}: %{errors}"
|
424
|
+
msgstr ""
|
425
|
+
|
426
|
+
msgid "Unable to reboot %{name} via %{url}: %{msg}"
|
427
|
+
msgstr ""
|
428
|
+
|
429
|
+
msgid "Update a rule"
|
430
|
+
msgstr "Actualitza una regla"
|
431
|
+
|
432
|
+
msgid "Upload facts for a host, creating the host if required"
|
433
|
+
msgstr "Puja els objectes d'interès per un amfitrió, creant el nou amfitrió si fos necessari"
|
434
|
+
|
435
|
+
msgid "Value"
|
436
|
+
msgstr "Valor"
|
437
|
+
|
438
|
+
msgid "Warning"
|
439
|
+
msgstr "Advertència"
|
440
|
+
|
441
|
+
msgid ""
|
442
|
+
"When creating hostname patterns, make sure the resulting host names are "
|
443
|
+
"unique. Hostnames must not start with numbers. A good approach is to use "
|
444
|
+
"unique information provided by facter (MAC address, BIOS or serial ID)."
|
445
|
+
msgstr ""
|
446
|
+
|
447
|
+
msgid "can't contain white spaces."
|
448
|
+
msgstr ""
|
449
|
+
|
450
|
+
msgid ""
|
451
|
+
"defines a pattern to assign human-readable hostnames to the matching hosts"
|
452
|
+
msgstr ""
|
453
|
+
|
454
|
+
msgid "enables to limit maximum amount of provisioned hosts per rule"
|
455
|
+
msgstr ""
|
456
|
+
|
457
|
+
msgid "filter results"
|
458
|
+
msgstr "filtra els resultats"
|
459
|
+
|
460
|
+
msgid "flag is used for temporary shutdown of rules"
|
461
|
+
msgstr ""
|
462
|
+
|
463
|
+
msgid ""
|
464
|
+
"hash containing facts for the host with minimum set of facts: "
|
465
|
+
"discovery_bootif, macaddress_eth0, ipaddress, ipaddress_eth0, interfaces: "
|
466
|
+
"eth0 (example in case primary interface is named eth0)"
|
467
|
+
msgstr ""
|
468
|
+
|
469
|
+
msgid "items selected. Uncheck to Clear"
|
470
|
+
msgstr "ítems seleccionats. Desmarca per netejar"
|
471
|
+
|
472
|
+
msgid "must start with a letter or ERB."
|
473
|
+
msgstr ""
|
474
|
+
|
475
|
+
msgid "not required if it's a virtual machine"
|
476
|
+
msgstr ""
|
477
|
+
|
478
|
+
msgid "not required if using a subnet with DHCP proxy"
|
479
|
+
msgstr ""
|
480
|
+
|
481
|
+
msgid "number of entries per request"
|
482
|
+
msgstr "Nombre d'entrades per petició"
|
483
|
+
|
484
|
+
msgid "paginate results"
|
485
|
+
msgstr "pagina els resultats"
|
486
|
+
|
487
|
+
msgid ""
|
488
|
+
"puts the rules in order, low numbers go first. Must be greater then zero"
|
489
|
+
msgstr ""
|
490
|
+
|
491
|
+
msgid "query to match discovered hosts for the particular rule"
|
492
|
+
msgstr ""
|
493
|
+
|
494
|
+
msgid "represents rule name shown to the users"
|
495
|
+
msgstr ""
|
496
|
+
|
497
|
+
msgid ""
|
498
|
+
"required if value is not inherited from host group or default password in "
|
499
|
+
"settings"
|
500
|
+
msgstr ""
|
501
|
+
|
502
|
+
msgid "sort results"
|
503
|
+
msgstr "ordena els resultats"
|
504
|
+
|
505
|
+
msgid "the hostgroup that is used to auto provision a host"
|
506
|
+
msgstr ""
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_discovery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amos Benari
|
@@ -32,20 +32,20 @@ authors:
|
|
32
32
|
autorequire:
|
33
33
|
bindir: bin
|
34
34
|
cert_chain: []
|
35
|
-
date:
|
35
|
+
date: 2016-01-26 00:00:00.000000000 Z
|
36
36
|
dependencies:
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: deface
|
39
39
|
requirement: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- - <
|
41
|
+
- - "<"
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: '2.0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
46
|
version_requirements: !ruby/object:Gem::Requirement
|
47
47
|
requirements:
|
48
|
-
- - <
|
48
|
+
- - "<"
|
49
49
|
- !ruby/object:Gem::Version
|
50
50
|
version: '2.0'
|
51
51
|
description: MaaS Discovery Plugin engine for Foreman
|
@@ -63,7 +63,10 @@ files:
|
|
63
63
|
- app/controllers/api/v2/discovered_hosts_controller.rb
|
64
64
|
- app/lib/puppet_fact_parser_extensions.rb
|
65
65
|
- app/lib/facter_utils.rb
|
66
|
+
- app/services/foreman_discovery/node_api/power_service.rb
|
67
|
+
- app/services/foreman_discovery/node_api/power_legacy_direct_service.rb
|
66
68
|
- app/services/foreman_discovery/node_api/node_resource.rb
|
69
|
+
- app/services/foreman_discovery/node_api/power_legacy_proxied_service.rb
|
67
70
|
- app/services/foreman_discovery/node_api/power.rb
|
68
71
|
- app/services/foreman_discovery/node_api/inventory.rb
|
69
72
|
- app/services/foreman_discovery/host_converter.rb
|
@@ -139,6 +142,7 @@ files:
|
|
139
142
|
- locale/es/foreman_discovery.po
|
140
143
|
- locale/fr/foreman_discovery.po
|
141
144
|
- locale/it/foreman_discovery.po
|
145
|
+
- locale/ca/foreman_discovery.po
|
142
146
|
- locale/ja/foreman_discovery.po
|
143
147
|
- locale/ko/foreman_discovery.po
|
144
148
|
- locale/zh_CN/foreman_discovery.po
|
@@ -154,6 +158,7 @@ files:
|
|
154
158
|
- locale/fr/LC_MESSAGES/foreman_discovery.mo
|
155
159
|
- locale/it/LC_MESSAGES/foreman_discovery.mo
|
156
160
|
- locale/messages.mo
|
161
|
+
- locale/ca/LC_MESSAGES/foreman_discovery.mo
|
157
162
|
- locale/ja/LC_MESSAGES/foreman_discovery.mo
|
158
163
|
- locale/ko/LC_MESSAGES/foreman_discovery.mo
|
159
164
|
- locale/zh_CN/LC_MESSAGES/foreman_discovery.mo
|
@@ -185,12 +190,12 @@ require_paths:
|
|
185
190
|
- lib
|
186
191
|
required_ruby_version: !ruby/object:Gem::Requirement
|
187
192
|
requirements:
|
188
|
-
- -
|
193
|
+
- - ">="
|
189
194
|
- !ruby/object:Gem::Version
|
190
195
|
version: '0'
|
191
196
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
197
|
requirements:
|
193
|
-
- -
|
198
|
+
- - ">="
|
194
199
|
- !ruby/object:Gem::Version
|
195
200
|
version: '0'
|
196
201
|
requirements: []
|