foreman_discovery 14.0.1 → 15.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -4
- data/app/controllers/api/v2/discovery_rules_controller.rb +2 -2
- data/app/controllers/concerns/foreman/controller/discovered_extensions.rb +2 -6
- data/app/controllers/discovered_hosts_controller.rb +4 -8
- data/app/helpers/discovered_hosts_helper.rb +3 -3
- data/app/helpers/discovery_rules_helper.rb +3 -3
- data/app/models/discovery_rule.rb +9 -13
- data/app/models/host/discovered.rb +6 -10
- data/app/models/host/managed_extensions.rb +6 -6
- data/app/models/setting/discovered.rb +2 -16
- data/app/services/foreman_discovery/import_hooks/subnet_and_taxonomy.rb +4 -4
- data/app/views/api/v2/discovered_hosts/main.json.rabl +2 -7
- data/app/views/api/v2/discovery_rules/main.json.rabl +4 -8
- data/app/views/discovered_hosts/_discovered_hosts_list.html.erb +8 -17
- data/app/views/discovered_hosts/_selected_hosts.html.erb +2 -10
- data/app/views/discovered_hosts/multiple_destroy.html.erb +1 -1
- data/app/views/discovered_hosts/select_multiple_location.html.erb +1 -1
- data/app/views/discovered_hosts/select_multiple_organization.html.erb +1 -1
- data/app/views/foreman_discovery/debian_kexec.erb +1 -1
- data/app/views/foreman_discovery/redhat_kexec.erb +5 -2
- data/db/seeds.d/50_discovery_templates.rb +2 -2
- data/lib/foreman_discovery/engine.rb +3 -3
- 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 +92 -98
- data/locale/ca/foreman_discovery.po +2 -8
- data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/de/foreman_discovery.edit.po +111 -116
- data/locale/de/foreman_discovery.po +21 -26
- data/locale/en/foreman_discovery.edit.po +92 -100
- data/locale/en/foreman_discovery.po +0 -6
- data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en_GB/foreman_discovery.edit.po +92 -98
- data/locale/en_GB/foreman_discovery.po +2 -8
- data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/es/foreman_discovery.edit.po +106 -112
- data/locale/es/foreman_discovery.po +16 -22
- data/locale/foreman_discovery.pot +103 -109
- data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/fr/foreman_discovery.edit.po +107 -113
- data/locale/fr/foreman_discovery.po +17 -23
- data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/gl/foreman_discovery.edit.po +92 -98
- data/locale/gl/foreman_discovery.po +2 -8
- data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/it/foreman_discovery.edit.po +92 -98
- data/locale/it/foreman_discovery.po +2 -8
- data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ja/foreman_discovery.edit.po +106 -112
- data/locale/ja/foreman_discovery.po +16 -22
- data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ko/foreman_discovery.edit.po +92 -98
- data/locale/ko/foreman_discovery.po +2 -8
- data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/pt_BR/foreman_discovery.edit.po +106 -112
- data/locale/pt_BR/foreman_discovery.po +16 -22
- data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ru/foreman_discovery.edit.po +92 -98
- data/locale/ru/foreman_discovery.po +2 -8
- data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/sv_SE/foreman_discovery.edit.po +92 -98
- data/locale/sv_SE/foreman_discovery.po +2 -8
- data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_CN/foreman_discovery.edit.po +106 -112
- data/locale/zh_CN/foreman_discovery.po +16 -22
- data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_TW/foreman_discovery.edit.po +92 -98
- data/locale/zh_TW/foreman_discovery.po +2 -8
- data/test/factories/discovery_rule_related.rb +2 -2
- data/test/facts/asswweb061.json +2967 -0
- data/test/facts/qemu_noip.json +2 -0
- data/test/functional/api/v2/discovered_hosts_controller_test.rb +0 -16
- data/test/functional/discovered_hosts_controller_test.rb +19 -21
- data/test/test_helper_discovery.rb +1 -1
- data/test/unit/discovery_rule_test.rb +0 -2
- data/test/unit/host_discovered_test.rb +72 -16
- data/test/unit/managed_extensions_test.rb +2 -2
- data/test/unit/ui_notifications/destroy_host_test.rb +9 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 305477b201b75199eef688c2bea65f1a514d556b106315c2fd0f654584e70a29
|
4
|
+
data.tar.gz: c5326ee72b7fea7a727eae0307b9c10242b0ff9f9cc24ff75dfc4ca7fd914a89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 806df7387b0d27b0ff717a9e882f8ab235585bce379b8fbe1e009936b9663b87e4a19d9211c5cc8beea1ddce5f97469ab6ebaeac81d6886a6479a92e31454dfc
|
7
|
+
data.tar.gz: 88b1b13517df83ce74a27d07a38e946db6330182f37a4e4ab98dec82afcd34a3704ffa1c4868e8d87c07b601232dd3ebc950ab3098d9c589ee0080e3e867abfa
|
data/README.md
CHANGED
@@ -22,11 +22,15 @@ see the [API README](README.api.md)
|
|
22
22
|
We use [RedMine instance](http://projects.theforeman.org/projects/discovery/issues)
|
23
23
|
instead of github.com issues. Please report issues there.
|
24
24
|
|
25
|
-
##
|
25
|
+
## Testing
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
There are unit and integration tests in the repository, to run them execute the following in the *Foreman core* directory:
|
28
|
+
|
29
|
+
bundle exec rake test:discovery
|
30
|
+
|
31
|
+
It is possible to execute a single test, however the path must be *absolute* (e.g. use `$HOME` variable):
|
32
|
+
|
33
|
+
bundle exec rake test:discovery TEST=~/work/foreman_discovery/test/unit/host_discovered_test.rb
|
30
34
|
|
31
35
|
# Copyright
|
32
36
|
|
@@ -36,8 +36,8 @@ module Api
|
|
36
36
|
param :max_count, Integer, :desc => N_("enables to limit maximum amount of provisioned hosts per rule")
|
37
37
|
param :priority, Integer, :desc => N_("puts the rules in order, low numbers go first. Must be greater then zero")
|
38
38
|
param :enabled, :bool, :desc => N_("flag is used for temporary shutdown of rules")
|
39
|
-
param :location_ids, Array, :required => true, :desc => N_("location ID for provisioned hosts")
|
40
|
-
param :organization_ids, Array, :required => true, :desc => N_("organization ID for provisioned hosts")
|
39
|
+
param :location_ids, Array, :required => true, :desc => N_("location ID for provisioned hosts")
|
40
|
+
param :organization_ids, Array, :required => true, :desc => N_("organization ID for provisioned hosts")
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -33,12 +33,8 @@ module Foreman::Controller::DiscoveredExtensions
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def validate_rule_by_taxonomy rule, host
|
36
|
-
|
37
|
-
|
38
|
-
end
|
39
|
-
if SETTINGS[:locations_enabled]
|
40
|
-
return false unless rule.locations.include?(host.location)
|
41
|
-
end
|
36
|
+
return false unless rule.organizations.include?(host.organization)
|
37
|
+
return false unless rule.locations.include?(host.location)
|
42
38
|
true
|
43
39
|
end
|
44
40
|
|
@@ -318,14 +318,10 @@ class DiscoveredHostsController < ::ApplicationController
|
|
318
318
|
@location = @host.location
|
319
319
|
end
|
320
320
|
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
if SETTINGS[:locations_enabled]
|
326
|
-
@location ||= Location.current
|
327
|
-
@location ||= Location.my_locations.first
|
328
|
-
end
|
321
|
+
@organization ||= Organization.current
|
322
|
+
@organization ||= Organization.my_organizations.first
|
323
|
+
@location ||= Location.current
|
324
|
+
@location ||= Location.my_locations.first
|
329
325
|
end
|
330
326
|
|
331
327
|
# particular actions will always raise N+1 queries
|
@@ -28,13 +28,13 @@ module DiscoveredHostsHelper
|
|
28
28
|
def multiple_discovered_hosts_actions_select
|
29
29
|
actions = [[_('Auto Provision'), multiple_auto_provision_discovered_hosts_path, hash_for_multiple_auto_provision_discovered_hosts_path]]
|
30
30
|
actions << [_('Reboot'), multiple_reboot_discovered_hosts_path, hash_for_multiple_reboot_discovered_hosts_path]
|
31
|
-
actions << [_('Assign Organization'), select_multiple_organization_discovered_hosts_path, hash_for_select_multiple_organization_discovered_hosts_path]
|
32
|
-
actions << [_('Assign Location'), select_multiple_location_discovered_hosts_path, hash_for_select_multiple_location_discovered_hosts_path]
|
31
|
+
actions << [_('Assign Organization'), select_multiple_organization_discovered_hosts_path, hash_for_select_multiple_organization_discovered_hosts_path]
|
32
|
+
actions << [_('Assign Location'), select_multiple_location_discovered_hosts_path, hash_for_select_multiple_location_discovered_hosts_path]
|
33
33
|
actions << [_('Delete'), multiple_destroy_discovered_hosts_path, hash_for_multiple_destroy_discovered_hosts_path]
|
34
34
|
|
35
35
|
select_action_button( _("Select Action"), {:id => 'submit_multiple'},
|
36
36
|
actions.map do |action|
|
37
|
-
link_to_function(action[0], "
|
37
|
+
link_to_function(action[0], "tfm.hosts.table.buildModal(this, '#{action[1]}')", :'data-dialog-title' => _("%s - The following hosts are about to be changed") % action[0]) if authorized_for(action[2])
|
38
38
|
end.flatten
|
39
39
|
)
|
40
40
|
end
|
@@ -26,10 +26,10 @@ module DiscoveryRulesHelper
|
|
26
26
|
actions = [display_link_if_authorized(_('Discovered Hosts'), hash_for_discovered_hosts_path.merge(:search => rule.search))]
|
27
27
|
actions << display_link_if_authorized(_('Associated Hosts'), hash_for_hosts_path.merge(:search => "discovery_rule = \"#{rule.name}\""))
|
28
28
|
if rule.enabled?
|
29
|
-
actions << display_link_if_authorized(_('Disable'), hash_for_disable_discovery_rule_path(:id => rule).merge(:auth_object => rule, :authorizer => authorizer), :confirm => _("Disable rule '%s'?") % rule)
|
29
|
+
actions << display_link_if_authorized(_('Disable'), hash_for_disable_discovery_rule_path(:id => rule).merge(:auth_object => rule, :authorizer => authorizer), :data => { :confirm => _("Disable rule '%s'?") % rule })
|
30
30
|
else
|
31
|
-
actions << display_link_if_authorized(_('Enable'), hash_for_enable_discovery_rule_path(:id => rule).merge(:auth_object => rule, :authorizer => authorizer), :confirm => _("Enable rule '%s'?") % rule)
|
31
|
+
actions << display_link_if_authorized(_('Enable'), hash_for_enable_discovery_rule_path(:id => rule).merge(:auth_object => rule, :authorizer => authorizer), :data => { :confirm => _("Enable rule '%s'?") % rule })
|
32
32
|
end
|
33
|
-
actions << display_delete_if_authorized(hash_for_discovery_rule_path(:id => rule).merge(:auth_object => rule, :authorizer => authorizer), :confirm => _("Delete rule '%s'?") % rule)
|
33
|
+
actions << display_delete_if_authorized(hash_for_discovery_rule_path(:id => rule).merge(:auth_object => rule, :authorizer => authorizer), :data => { :confirm => _("Delete rule '%s'?") % rule })
|
34
34
|
end
|
35
35
|
end
|
@@ -25,10 +25,10 @@ class DiscoveryRule < ApplicationRecord
|
|
25
25
|
has_many :hosts, :dependent => :nullify
|
26
26
|
|
27
27
|
scoped_search :on => :name, :complete_value => :true
|
28
|
-
scoped_search :on => :priority
|
29
|
-
scoped_search :on => :search
|
28
|
+
scoped_search :on => :priority, :only_explicit => true
|
29
|
+
scoped_search :on => :search, :only_explicit => true
|
30
30
|
scoped_search :on => :enabled
|
31
|
-
scoped_search :relation => :hostgroup, :on => :name, :complete_value => true, :rename => :hostgroup
|
31
|
+
scoped_search :relation => :hostgroup, :on => :name, :complete_value => true, :rename => :hostgroup, :only_explicit => true
|
32
32
|
|
33
33
|
default_scope lambda {
|
34
34
|
with_taxonomy_scope do
|
@@ -47,17 +47,13 @@ class DiscoveryRule < ApplicationRecord
|
|
47
47
|
|
48
48
|
def enforce_taxonomy
|
49
49
|
return if hostgroup.nil?
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
errors.add(:organizations, n_("Host group organization %s must also be associated to the discovery rule", "Host group organizations %s must also be associated to the discovery rule", ms.size) % names)
|
54
|
-
end
|
50
|
+
unless (ms = hostgroup.organizations - organizations).empty?
|
51
|
+
names = ms.collect(&:name).to_sentence
|
52
|
+
errors.add(:organizations, n_("Host group organization %s must also be associated to the discovery rule", "Host group organizations %s must also be associated to the discovery rule", ms.size) % names)
|
55
53
|
end
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
errors.add(:locations, n_("Host group location %s must also be associated to the discovery rule", "Host group locations %s must also be associated to the discovery rule", ms.size) % names)
|
60
|
-
end
|
54
|
+
unless (ms = hostgroup.locations - locations).empty?
|
55
|
+
names = ms.collect(&:name).to_sentence
|
56
|
+
errors.add(:locations, n_("Host group location %s must also be associated to the discovery rule", "Host group locations %s must also be associated to the discovery rule", ms.size) % names)
|
61
57
|
end
|
62
58
|
end
|
63
59
|
end
|
@@ -20,16 +20,12 @@ class Host::Discovered < ::Host::Base
|
|
20
20
|
scoped_search :on => :last_report, :complete_value => true, :only_explicit => true
|
21
21
|
scoped_search :relation => :primary_interface, :on => :ip, :complete_value => true
|
22
22
|
scoped_search :relation => :primary_interface, :on => :mac, :complete_value => true
|
23
|
-
scoped_search :relation => :model, :on => :name, :complete_value => true, :rename => :model
|
23
|
+
scoped_search :relation => :model, :on => :name, :complete_value => true, :rename => :model, :only_explicit => true
|
24
24
|
scoped_search :relation => :fact_values, :on => :value, :in_key => :fact_names, :on_key => :name, :rename => :facts, :complete_value => true, :only_explicit => true
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
if SETTINGS[:organizations_enabled]
|
30
|
-
scoped_search :relation => :organization, :on => :name, :rename => :organization, :complete_value => true, :only_explicit => true
|
31
|
-
scoped_search :on => :organization_id, :complete_value => false, :only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
|
32
|
-
end
|
25
|
+
scoped_search :relation => :location, :on => :name, :rename => :location, :complete_value => true, :only_explicit => true
|
26
|
+
scoped_search :on => :location_id, :complete_value => false, :only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
|
27
|
+
scoped_search :relation => :organization, :on => :name, :rename => :organization, :complete_value => true, :only_explicit => true
|
28
|
+
scoped_search :on => :organization_id, :complete_value => false, :only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
|
33
29
|
scoped_search :relation => :subnet, :on => :network, :complete_value => true, :rename => :subnet
|
34
30
|
scoped_search :relation => :subnet, :on => :name, :complete_value => true, :rename => 'subnet.name'
|
35
31
|
scoped_search :relation => :discovery_attribute_set, :on => :cpu_count, :rename => :cpu_count, :complete_value => true, :only_explicit => true
|
@@ -208,7 +204,7 @@ class Host::Discovered < ::Host::Base
|
|
208
204
|
end
|
209
205
|
|
210
206
|
def notification_recipients_ids
|
211
|
-
org_recipients = find_organization_users
|
207
|
+
org_recipients = find_organization_users
|
212
208
|
org_recipients ||= []
|
213
209
|
|
214
210
|
admins = User.unscoped.only_admin.except_hidden.
|
@@ -8,7 +8,7 @@ module Host::ManagedExtensions
|
|
8
8
|
|
9
9
|
belongs_to :discovery_rule
|
10
10
|
|
11
|
-
scoped_search :relation => :discovery_rule, :on => :name, :rename => :discovery_rule, :complete_value => true
|
11
|
+
scoped_search :relation => :discovery_rule, :on => :name, :rename => :discovery_rule, :complete_value => true, :only_explicit => true
|
12
12
|
end
|
13
13
|
|
14
14
|
def queue_reboot
|
@@ -45,9 +45,7 @@ module Host::ManagedExtensions
|
|
45
45
|
template = provisioning_template(:kind => 'kexec')
|
46
46
|
raise ::Foreman::Exception.new(N_("Kexec template not associated with operating system")) unless template
|
47
47
|
|
48
|
-
|
49
|
-
scope = Foreman::Renderer.get_scope(host: self, source: source)
|
50
|
-
json = JSON.parse(Foreman::Renderer.render(source, scope))
|
48
|
+
json = JSON.parse(render_template(template: template))
|
51
49
|
::Foreman::Exception.new(N_("Kernel kexec URL is invalid: '%s'"), json['kernel']) unless json['kernel'] =~ /\Ahttp.+\Z/
|
52
50
|
::Foreman::Exception.new(N_("Init RAM kexec URL is invalid: '%s'"), json['initrd']) unless json['initrd'] =~ /\Ahttp.+\Z/
|
53
51
|
json
|
@@ -70,12 +68,14 @@ module Host::ManagedExtensions
|
|
70
68
|
|
71
69
|
def delete_discovery_attribute_set
|
72
70
|
return if new_record?
|
73
|
-
|
71
|
+
|
72
|
+
DiscoveryAttributeSet.where(:host_id => self.id).destroy_all if saved_change_to_attribute?(:type) && type_previously_changed?
|
74
73
|
end
|
75
74
|
|
76
75
|
def update_notifications
|
77
76
|
return if new_record?
|
78
|
-
return unless saved_change_to_attribute?(:type)
|
77
|
+
return unless saved_change_to_attribute?(:type) || type_previously_changed?
|
78
|
+
|
79
79
|
ForemanDiscovery::UINotifications::DestroyHost.deliver!(self)
|
80
80
|
end
|
81
81
|
end
|
@@ -16,6 +16,8 @@ class Setting::Discovered < ::Setting
|
|
16
16
|
|
17
17
|
Setting.transaction do
|
18
18
|
[
|
19
|
+
self.set('discovery_location', N_("The default location to place discovered hosts in"), "", N_("Discovery location"), nil, { :collection => Proc.new {Hash[Location.all.map{|loc| [loc[:title], loc[:title]]}]} }),
|
20
|
+
self.set('discovery_organization', N_("The default organization to place discovered hosts in"), "", N_("Discovery organization"), nil, { :collection => Proc.new {Hash[Organization.all.map{|org| [org[:title], org[:title]]}]} }),
|
19
21
|
self.set('discovery_fact', N_("Fact name to use for primary interface detection"), "discovery_bootif", N_("Interface fact")),
|
20
22
|
self.set('discovery_auto_bond', N_("Automatic bond interface (if another interface is detected on the same VLAN via LLDP)"), false, N_("Create bond interfaces")),
|
21
23
|
self.set('discovery_clean_facts', N_("Clean all reported facts during provisioning (except discovery facts)"), false, N_("Clean all facts")),
|
@@ -40,22 +42,6 @@ class Setting::Discovered < ::Setting
|
|
40
42
|
].compact.each { |s| self.create s.update(:category => "Setting::Discovered")}
|
41
43
|
end
|
42
44
|
|
43
|
-
if SETTINGS[:locations_enabled]
|
44
|
-
Setting.transaction do
|
45
|
-
[
|
46
|
-
self.set('discovery_location', N_("The default location to place discovered hosts in"), "", N_("Discovery location"), nil, { :collection => Proc.new {Hash[Location.all.map{|loc| [loc[:title], loc[:title]]}]} }),
|
47
|
-
].compact.each { |s| self.create s.update(:category => "Setting::Discovered")}
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
if SETTINGS[:organizations_enabled]
|
52
|
-
Setting.transaction do
|
53
|
-
[
|
54
|
-
self.set('discovery_organization', N_("The default organization to place discovered hosts in"), "", N_("Discovery organization"), nil, { :collection => Proc.new {Hash[Organization.all.map{|org| [org[:title], org[:title]]}]} }),
|
55
|
-
].compact.each { |s| self.create s.update(:category => "Setting::Discovered")}
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
45
|
true
|
60
46
|
end
|
61
47
|
|
@@ -34,26 +34,26 @@ module ForemanDiscovery
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def set_location
|
37
|
-
return unless SETTINGS[:locations_enabled]
|
38
37
|
host.location = suggested_location
|
39
38
|
logger.info "Assigned location: #{host.location}"
|
40
39
|
end
|
41
40
|
|
42
41
|
def suggested_location
|
43
|
-
|
42
|
+
logger.warn("Do not use 'foreman_location' fact for discovery and use 'discovery_location' instead") if facts["foreman_location"]
|
43
|
+
Location.find_by_title(facts["discovery_location"]) ||
|
44
44
|
Location.find_by_title(Setting[:discovery_location]) ||
|
45
45
|
host.subnet.try(:locations).try(:first) ||
|
46
46
|
Location.first
|
47
47
|
end
|
48
48
|
|
49
49
|
def set_organization
|
50
|
-
return unless SETTINGS[:organizations_enabled]
|
51
50
|
host.organization = suggested_organization
|
52
51
|
logger.info "Assigned organization: #{host.organization}"
|
53
52
|
end
|
54
53
|
|
55
54
|
def suggested_organization
|
56
|
-
|
55
|
+
logger.warn("Do not use 'foreman_organization' fact for discovery and use 'discovery_organization' instead") if facts["foreman_organization"]
|
56
|
+
Organization.find_by_title(facts["discovery_organization"]) ||
|
57
57
|
Organization.find_by_title(Setting[:discovery_organization]) ||
|
58
58
|
host.subnet.try(:organizations).try(:first) ||
|
59
59
|
Organization.first
|
@@ -9,10 +9,5 @@ node :subnet_name do |host|
|
|
9
9
|
host.subnet.to_label if host.subnet.present?
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
if SETTINGS[:locations_enabled]
|
17
|
-
attributes :location_id, :location_name
|
18
|
-
end
|
12
|
+
attributes :organization_id, :organization_name
|
13
|
+
attributes :location_id, :location_name
|
@@ -9,14 +9,10 @@ child :hosts do
|
|
9
9
|
extends "api/v2/discovered_hosts/base"
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
attributes :id, :name
|
15
|
-
end
|
12
|
+
child :organizations => :organizations do
|
13
|
+
attributes :id, :name
|
16
14
|
end
|
17
15
|
|
18
|
-
|
19
|
-
|
20
|
-
attributes :id, :name
|
21
|
-
end
|
16
|
+
child :locations => :locations do
|
17
|
+
attributes :id, :name
|
22
18
|
end
|
@@ -1,8 +1,7 @@
|
|
1
|
-
<%= javascript "host_checkbox" %>
|
2
1
|
<% title _('Discovered Hosts') %>
|
3
2
|
<table class="<%= table_css_classes('table-condensed') %>" >
|
4
3
|
<tr>
|
5
|
-
<th class="ca"><%= check_box_tag "check_all", "", false, { :onclick => "toggleCheck()", :'check-title' => _("Select all items in this page"), :'uncheck-title'=> _("items selected. Uncheck to Clear") } %></th>
|
4
|
+
<th class="ca"><%= check_box_tag "check_all", "", false, { :onclick => "tfm.hosts.table.toggleCheck()", :'check-title' => _("Select all items in this page"), :'uncheck-title'=> _("items selected. Uncheck to Clear") } %></th>
|
6
5
|
<th class=''><%= sort :name, :as => _('Name') %></th>
|
7
6
|
<th class="hidden-tablet hidden-xs"><%= sort :model, :as => _('Model') %></th>
|
8
7
|
<th class="hidden-tablet hidden-xs"><%= sort :ip, :as => _('IP Address') %></th>
|
@@ -13,12 +12,8 @@
|
|
13
12
|
<% Setting::Discovered.discovery_fact_column_array.each do |fact_column| %>
|
14
13
|
<th class="hidden-tablet hidden-xs"><%= fact_column.capitalize %></th>
|
15
14
|
<% end %>
|
16
|
-
|
17
|
-
|
18
|
-
<% end -%>
|
19
|
-
<% if SETTINGS[:organizations_enabled] -%>
|
20
|
-
<th class="hidden-tablet hidden-xs"><%= sort :organization, :as => _('Organization') %></th>
|
21
|
-
<% end -%>
|
15
|
+
<th class="hidden-tablet hidden-xs"><%= sort :location, :as => _('Location') %></th>
|
16
|
+
<th class="hidden-tablet hidden-xs"><%= sort :organization, :as => _('Organization') %></th>
|
22
17
|
<th class="hidden-tablet hidden-xs"><%= sort :subnet, :as => _("Subnet") %></th>
|
23
18
|
<th class="hidden-tablet hidden-xs"><%= sort :last_report, :as => _("Last Facts Upload") %></th>
|
24
19
|
<th class="hidden-tablet hidden-xs"><%= _("Actions") %></th>
|
@@ -26,15 +21,11 @@
|
|
26
21
|
<% @hosts.each do |host| -%>
|
27
22
|
<tr>
|
28
23
|
<td class="ca">
|
29
|
-
<%= check_box_tag "host_ids[]", nil, false, :id => "host_ids_#{host.id}", :disabled => !authorized_for_edit_destroy?, :class => 'host_select_boxes', :onclick => 'hostChecked(this)' -%>
|
24
|
+
<%= check_box_tag "host_ids[]", nil, false, :id => "host_ids_#{host.id}", :disabled => !authorized_for_edit_destroy?, :class => 'host_select_boxes', :onclick => 'tfm.hosts.table.hostChecked(this)' -%>
|
30
25
|
</td>
|
31
26
|
<%= render :partial => "discovered_host", :locals => {:host => host} %>
|
32
|
-
|
33
|
-
|
34
|
-
<% end -%>
|
35
|
-
<% if SETTINGS[:organizations_enabled] -%>
|
36
|
-
<td class="hidden-tablet hidden-xs"><%= host.organization.try(:title) %></td>
|
37
|
-
<% end -%>
|
27
|
+
<td class="hidden-tablet hidden-xs"><%= host.location.try(:title) %></td>
|
28
|
+
<td class="hidden-tablet hidden-xs"><%= host.organization.try(:title) %></td>
|
38
29
|
<td class="hidden-tablet hidden-xs"><%= host.primary_interface.try(:subnet).try(:to_label) %></td>
|
39
30
|
<td class="hidden-tablet hidden-xs"><%= disc_report_column(host) %></td>
|
40
31
|
<td>
|
@@ -46,7 +37,7 @@
|
|
46
37
|
display_link_if_authorized(_("Auto Provision"), hash_for_auto_provision_discovered_host_path(:id => host), :method => :post),
|
47
38
|
display_link_if_authorized(_("Refresh facts"), hash_for_refresh_facts_discovered_host_path(:id => host)),
|
48
39
|
display_link_if_authorized(_("Reboot"), hash_for_reboot_discovered_host_path(:id => host), :method => :put),
|
49
|
-
display_delete_if_authorized(hash_for_discovered_host_path(:id => host), :confirm => _("Delete %s?") % host.name, :action => :destroy))%>
|
40
|
+
display_delete_if_authorized(hash_for_discovered_host_path(:id => host), :data => { :confirm => _("Delete %s?") % host.name }, :action => :destroy)) %>
|
50
41
|
</td>
|
51
42
|
</tr>
|
52
43
|
<% end -%>
|
@@ -64,7 +55,7 @@
|
|
64
55
|
</div>
|
65
56
|
<div class="modal-footer">
|
66
57
|
<button type="button" class="btn btn-default" data-dismiss="modal"><%= _('Cancel') %></button>
|
67
|
-
<button type="button" class="btn btn-primary" onclick="
|
58
|
+
<button type="button" class="btn btn-primary" onclick="tfm.hosts.table.submitModalForm()"><%= _('Submit') %></button>
|
68
59
|
</div>
|
69
60
|
</div><!-- /.modal-content -->
|
70
61
|
</div><!-- /.modal-dialog -->
|
@@ -6,12 +6,8 @@
|
|
6
6
|
<tr>
|
7
7
|
<th><%= _('Name') %></th>
|
8
8
|
<th><%= _('Model') %></th>
|
9
|
-
|
10
|
-
|
11
|
-
<% end %>
|
12
|
-
<% if SETTINGS[:organizations_enabled] %>
|
13
|
-
<th><%= _('Organization') %></th>
|
14
|
-
<% end %>
|
9
|
+
<th><%= _('Location') %></th>
|
10
|
+
<th><%= _('Organization') %></th>
|
15
11
|
</tr>
|
16
12
|
</thead>
|
17
13
|
<tbody>
|
@@ -19,12 +15,8 @@
|
|
19
15
|
<tr>
|
20
16
|
<td><%=h host %> </td>
|
21
17
|
<td><%=h host.model %> </td>
|
22
|
-
<% if SETTINGS[:locations_enabled]%>
|
23
18
|
<td><%=h host.try(:location) %></td>
|
24
|
-
<% end %>
|
25
|
-
<% if SETTINGS[:organizations_enabled]%>
|
26
19
|
<td><%=h host.try(:organization) %></td>
|
27
|
-
<% end %>
|
28
20
|
</tr>
|
29
21
|
<% end -%>
|
30
22
|
</tbody>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= form_tag submit_multiple_destroy_discovered_hosts_path(:host_ids => params[:host_ids]), :onsubmit => "resetSelection()" do -%>
|
1
|
+
<%= form_tag submit_multiple_destroy_discovered_hosts_path(:host_ids => params[:host_ids]), :onsubmit => "tfm.hosts.table.resetSelection()" do -%>
|
2
2
|
<%= alert :class => 'alert-warning',
|
3
3
|
:text => _("This might take a while, as all hosts, facts and reports will be destroyed as well"),
|
4
4
|
:header => '' %>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<div class="col-md-8">
|
4
4
|
<%= form_for :location, :url => update_multiple_location_discovered_hosts_path(:host_ids => params[:host_ids]) do |f| %>
|
5
5
|
<%= f.select :id, Location.all.map{|e| [e.name, e.id]},{:include_blank => _("Select location")},
|
6
|
-
:onchange => "
|
6
|
+
:onchange => "tfm.hosts.table.toggleMultipleOkButton (this)" %>
|
7
7
|
<%= f.hidden_field :optimistic_import, :value => "yes" %>
|
8
8
|
<% end %>
|
9
9
|
</div>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<div class="col-md-8">
|
4
4
|
<%= form_for :organization, :url => update_multiple_organization_discovered_hosts_path(:host_ids => params[:host_ids]) do |f| %>
|
5
5
|
<%= f.select :id, Organization.all.map{|e| [e.name, e.id]},{:include_blank => _("Select organization")},
|
6
|
-
:onchange => "
|
6
|
+
:onchange => "tfm.hosts.table.toggleMultipleOkButton (this)" %>
|
7
7
|
<%= f.hidden_field :optimistic_import, :value => "yes" %>
|
8
8
|
<% end %>
|
9
9
|
</div>
|
@@ -24,7 +24,7 @@ Please read kexec(8) man page for more information about semantics.
|
|
24
24
|
mask = @host.facts['discovery_netmask']
|
25
25
|
gw = @host.facts['discovery_gateway']
|
26
26
|
dns = @host.facts['discovery_dns']
|
27
|
-
options = ["nomodeset", "auto=true"]
|
27
|
+
options = ["nomodeset", "nokaslr", "auto=true"]
|
28
28
|
options << @host.facts['append']
|
29
29
|
options << "domain=#{@host.domain}"
|
30
30
|
options << 'console-setup/ask_detect=false console-setup/layout=USA console-setup/variant=USA keyboard-configuration/layoutcode=us localechooser/translation/warn-light=true localechooser/translation/warn-severe=true'
|