foreman_discovery 9.1.5 → 10.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/api/v2/discovered_hosts_controller.rb +5 -4
- data/app/controllers/api/v2/discovery_rules_controller.rb +1 -1
- data/app/controllers/concerns/foreman/controller/parameters/discovered_host.rb +2 -9
- data/app/controllers/discovered_hosts_controller.rb +10 -21
- data/app/controllers/discovery_rules_controller.rb +1 -1
- data/app/controllers/foreman_discovery/concerns/hosts_controller_extensions.rb +1 -1
- data/app/helpers/discovered_hosts_helper.rb +2 -3
- data/app/models/discovery_attribute_set.rb +1 -1
- data/app/models/discovery_rule.rb +1 -1
- data/app/models/host/discovered.rb +23 -17
- data/app/models/host/managed_extensions.rb +2 -5
- data/app/services/foreman_discovery/host_converter.rb +0 -6
- data/app/services/foreman_discovery/node_api/power.rb +0 -8
- data/app/views/discovered_hosts/_discovered_host_modal.html.erb +12 -13
- data/app/views/discovered_hosts/_selected_hosts.html.erb +1 -1
- data/app/views/discovered_hosts/multiple_destroy.html.erb +5 -4
- data/app/views/discovered_hosts/show.html.erb +9 -1
- data/app/views/discovered_hosts/welcome.html.erb +10 -0
- data/db/migrate/20141223142759_fill_discovery_attribute_sets_for_existing_hosts.rb +1 -1
- data/db/migrate/20150714144500_review_discovery_permissions.rb +9 -7
- data/db/migrate/20161006094714_add_constraints_on_subnets_smart_proxies.rb +0 -3
- data/extra/discover-host +18 -11
- data/extra/discovery/rhel7-vlan.json +352 -0
- data/lib/foreman_discovery/engine.rb +2 -1
- data/lib/foreman_discovery/version.rb +1 -1
- data/locale/ca/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ca/foreman_discovery.edit.po +1 -1
- data/locale/ca/foreman_discovery.po +1 -1
- data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/de/foreman_discovery.edit.po +2 -2
- data/locale/de/foreman_discovery.po +2 -2
- data/locale/en/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en/foreman_discovery.edit.po +79 -75
- data/locale/en/foreman_discovery.po +13 -10
- data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en_GB/foreman_discovery.edit.po +1 -1
- data/locale/en_GB/foreman_discovery.po +1 -1
- data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/es/foreman_discovery.edit.po +2 -2
- data/locale/es/foreman_discovery.po +2 -2
- data/locale/foreman_discovery.pot +89 -81
- data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/fr/foreman_discovery.edit.po +2 -2
- data/locale/fr/foreman_discovery.po +2 -2
- data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/gl/foreman_discovery.edit.po +1 -1
- data/locale/gl/foreman_discovery.po +1 -1
- data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/it/foreman_discovery.edit.po +2 -2
- data/locale/it/foreman_discovery.po +2 -2
- data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ja/foreman_discovery.edit.po +2 -2
- data/locale/ja/foreman_discovery.po +2 -2
- data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ko/foreman_discovery.edit.po +2 -2
- data/locale/ko/foreman_discovery.po +2 -2
- data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/pt_BR/foreman_discovery.edit.po +2 -2
- data/locale/pt_BR/foreman_discovery.po +2 -2
- data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ru/foreman_discovery.edit.po +2 -2
- data/locale/ru/foreman_discovery.po +2 -2
- data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/sv_SE/foreman_discovery.edit.po +1 -1
- data/locale/sv_SE/foreman_discovery.po +1 -1
- data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_CN/foreman_discovery.edit.po +2 -2
- data/locale/zh_CN/foreman_discovery.po +2 -2
- data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_TW/foreman_discovery.edit.po +2 -2
- data/locale/zh_TW/foreman_discovery.po +2 -2
- data/test/functional/api/v2/discovered_hosts_controller_test.rb +16 -17
- data/test/functional/api/v2/discovery_rules_controller_test.rb +2 -3
- data/test/functional/api/v2/fact_value_extensions_test.rb +1 -1
- data/test/functional/discovered_hosts_controller_test.rb +102 -133
- data/test/functional/foreman_discovery/concerns/hosts_controller_extensions_test.rb +5 -6
- data/test/test_helper_discovery.rb +18 -0
- data/test/unit/discovered_extensions_test.rb +25 -33
- data/test/unit/discovery_attribute_set_test.rb +5 -8
- data/test/unit/discovery_taxonomy_extensions_test.rb +2 -2
- data/test/unit/host_discovered_test.rb +30 -30
- data/test/unit/managed_extensions_test.rb +0 -1
- metadata +6 -4
- data/app/services/foreman_discovery/node_api/power_legacy_direct_service.rb +0 -15
- data/app/services/foreman_discovery/node_api/power_legacy_proxied_service.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d782b90e35570098b6d74636a5a79a6a7f94026a
|
4
|
+
data.tar.gz: '07791a0d0a62b65eb04803473e2413748458b40a'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3172b396efe8c2b9a7a8727bc26739bcbfb4da40cd0fc1222ad4c2cd91267de873d61ef3c4fdc2e7e6cbf44881679c79b990b9ed795f699150ecb8f806d7aa3b
|
7
|
+
data.tar.gz: a8daeeadb503811032caebe4f2c6dd26acad998d615b7e3deeb96dff59880494ba7ce01cd9459431adcc439e7a13ab91a24ca467b2774b54a4c4265a31c2b17f
|
@@ -4,8 +4,8 @@ module Api
|
|
4
4
|
include Foreman::Controller::Parameters::DiscoveredHost
|
5
5
|
include Foreman::Controller::DiscoveredExtensions
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
before_action :find_resource, :except => %w{index create facts auto_provision_all reboot_all}
|
8
|
+
skip_before_action :authorize, :only => :facts
|
9
9
|
|
10
10
|
resource_description do
|
11
11
|
resource_id 'discovered_hosts'
|
@@ -80,7 +80,7 @@ module Api
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def update
|
83
|
-
@host = ::ForemanDiscovery::HostConverter.to_managed(@discovered_host, true, true,
|
83
|
+
@host = ::ForemanDiscovery::HostConverter.to_managed(@discovered_host, true, true, discovered_host_params)
|
84
84
|
forward_request_url
|
85
85
|
update_response = @host.save
|
86
86
|
process_response update_response
|
@@ -97,7 +97,8 @@ module Api
|
|
97
97
|
param :facts, Hash, :required => true, :desc => N_("hash containing facts for the host with minimum set of facts: discovery_bootif, macaddress_eth0, ipaddress, ipaddress_eth0, interfaces: eth0 (example in case primary interface is named eth0)")
|
98
98
|
|
99
99
|
def facts
|
100
|
-
facts
|
100
|
+
# creating a host from facts is not a mass assignment - we store them individually
|
101
|
+
facts = params['facts'].to_unsafe_h
|
101
102
|
state = true
|
102
103
|
User.as_anonymous_admin do
|
103
104
|
@discovered_host = Host::Discovered.import_host(facts)
|
@@ -3,7 +3,7 @@ module Api
|
|
3
3
|
class DiscoveryRulesController < ::Api::V2::BaseController
|
4
4
|
include Foreman::Controller::Parameters::DiscoveryRule
|
5
5
|
|
6
|
-
|
6
|
+
before_action :find_resource, :except => %w{index create facts}
|
7
7
|
|
8
8
|
resource_description do
|
9
9
|
resource_id 'discovery_rules'
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Foreman::Controller::Parameters::DiscoveredHost
|
2
2
|
extend ActiveSupport::Concern
|
3
|
-
include Foreman::Controller::Parameters::
|
3
|
+
include Foreman::Controller::Parameters::HostBase
|
4
|
+
include Foreman::Controller::Parameters::HostCommon
|
4
5
|
|
5
6
|
class_methods do
|
6
7
|
def discovered_host_params_filter
|
@@ -20,12 +21,4 @@ module Foreman::Controller::Parameters::DiscoveredHost
|
|
20
21
|
def discovered_host_params_host
|
21
22
|
self.class.discovered_host_params_filter.filter_params(params, parameter_filter_context, :host)
|
22
23
|
end
|
23
|
-
|
24
|
-
def managed_host_params_host
|
25
|
-
self.class.host_params_filter.filter_params(params, parameter_filter_context, :host)
|
26
|
-
end
|
27
|
-
|
28
|
-
def managed_host_params
|
29
|
-
self.class.host_params_filter.filter_params(params, parameter_filter_context)
|
30
|
-
end
|
31
24
|
end
|
@@ -5,17 +5,21 @@ class DiscoveredHostsController < ::ApplicationController
|
|
5
5
|
include Foreman::Controller::DiscoveredExtensions
|
6
6
|
include ActionView::Helpers::NumberHelper
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
before_action :find_by_name, :only => %w[edit update destroy refresh_facts convert reboot auto_provision]
|
9
|
+
before_action :find_by_name_incl_subnet, :only => [:show]
|
10
|
+
before_action :find_multiple, :only => [:multiple_destroy, :submit_multiple_destroy]
|
11
|
+
before_action :taxonomy_scope, :only => [:edit]
|
12
12
|
|
13
|
-
|
13
|
+
around_action :skip_bullet, :only => [:edit]
|
14
14
|
|
15
15
|
helper :hosts
|
16
16
|
|
17
17
|
layout 'layouts/application'
|
18
18
|
|
19
|
+
def model_of_controller
|
20
|
+
Host::Discovered
|
21
|
+
end
|
22
|
+
|
19
23
|
def index
|
20
24
|
@hosts = resource_base.search_for(params[:search], :order => params[:order]).includes([
|
21
25
|
:location,
|
@@ -62,7 +66,7 @@ class DiscoveredHostsController < ::ApplicationController
|
|
62
66
|
end
|
63
67
|
|
64
68
|
def update
|
65
|
-
@host = ::ForemanDiscovery::HostConverter.to_managed(@host, true, true,
|
69
|
+
@host = ::ForemanDiscovery::HostConverter.to_managed(@host, true, true, discovered_host_params_host)
|
66
70
|
forward_url_options
|
67
71
|
|
68
72
|
perform_update(@host)
|
@@ -142,21 +146,6 @@ class DiscoveredHostsController < ::ApplicationController
|
|
142
146
|
redirect_to(discovered_hosts_path)
|
143
147
|
end
|
144
148
|
|
145
|
-
def auto_complete_search
|
146
|
-
begin
|
147
|
-
@items = Host::Discovered.complete_for(params[:search])
|
148
|
-
@items = @items.map do |item|
|
149
|
-
category = (['and','or','not','has'].include?(item.to_s.sub(/^.*\s+/,''))) ? 'Operators' : ''
|
150
|
-
part = item.to_s.sub(/^.*\b(and|or)\b/i) {|match| match.sub(/^.*\s+/,'')}
|
151
|
-
completed = item.to_s.chomp(part)
|
152
|
-
{:completed => completed, :part => part, :label => item, :category => category}
|
153
|
-
end
|
154
|
-
rescue ScopedSearch::QueryNotSupported => e
|
155
|
-
@items = [{:error =>e.to_s}]
|
156
|
-
end
|
157
|
-
render :json => @items
|
158
|
-
end
|
159
|
-
|
160
149
|
def auto_provision
|
161
150
|
if rule = find_discovery_rule(@host)
|
162
151
|
if perform_auto_provision(@host, rule)
|
@@ -4,7 +4,7 @@ class DiscoveryRulesController < ApplicationController
|
|
4
4
|
|
5
5
|
include Foreman::Controller::Parameters::DiscoveryRule
|
6
6
|
|
7
|
-
|
7
|
+
before_action :find_resource, :only => [:edit, :update, :destroy, :enable, :disable, :auto_provision]
|
8
8
|
|
9
9
|
def index
|
10
10
|
base = resource_base.search_for(params[:search], :order => (params[:order]))
|
@@ -10,7 +10,7 @@ module ForemanDiscovery
|
|
10
10
|
# in the hosts controller like all the _selected methods, taxonomy_scope,
|
11
11
|
# etc.. expect a params[:host] to work.
|
12
12
|
def set_discovered_params
|
13
|
-
return
|
13
|
+
return if params[:discovered_host].nil?
|
14
14
|
params[:host] ||= params[:discovered_host]
|
15
15
|
end
|
16
16
|
end
|
@@ -20,12 +20,11 @@ module DiscoveredHostsHelper
|
|
20
20
|
),
|
21
21
|
select_action_button( _("Select Action"), {}, provision_button(host, hash_for_edit_discovered_host_path(:id => host)), actions.map { |action| display_link_if_authorized(action[0] , action[1], action[2] || {}) }.flatten ),
|
22
22
|
button_group(
|
23
|
-
link_to(_("Expand All"),"#"
|
24
|
-
$('.facts-panel').addClass('collapse in').height('auto');"
|
23
|
+
link_to(_("Expand All"),"#", :id => "expand_all", :class => "btn btn-default"
|
25
24
|
)
|
26
25
|
),
|
27
26
|
button_group(
|
28
|
-
display_delete_if_authorized(hash_for_discovered_host_path(:id => host).merge(:auth_object => host, :permission => :destroy_discovered_hosts), :class => "btn btn-
|
27
|
+
display_delete_if_authorized(hash_for_discovered_host_path(:id => host).merge(:auth_object => host, :permission => :destroy_discovered_hosts), :class => "btn btn-default", :data => { :confirm => _('Delete %s?') % host.name })
|
29
28
|
)
|
30
29
|
)
|
31
30
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class DiscoveryAttributeSet <
|
1
|
+
class DiscoveryAttributeSet < ApplicationRecord
|
2
2
|
belongs_to :host, :class_name => "Host::Discovered", :foreign_key => :host_id
|
3
3
|
|
4
4
|
validates :cpu_count, :presence => true, :numericality => {:greater_than_or_equal_to => 0}
|
@@ -34,7 +34,7 @@ class Host::Discovered < ::Host::Base
|
|
34
34
|
}
|
35
35
|
|
36
36
|
def self.import_host facts
|
37
|
-
raise(::Foreman::Exception.new(N_("Invalid facts, must be a Hash"))) unless facts.is_a?(Hash)
|
37
|
+
raise(::Foreman::Exception.new(N_("Invalid facts, must be a Hash"))) unless facts.is_a?(Hash) || facts.is_a?(ActionController::Parameters)
|
38
38
|
|
39
39
|
# filter facts
|
40
40
|
facts.reject!{|k,v| k =~ /kernel|operatingsystem|osfamily|ruby|path|time|swap|free|filesystem/i }
|
@@ -67,11 +67,13 @@ class Host::Discovered < ::Host::Base
|
|
67
67
|
host
|
68
68
|
end
|
69
69
|
|
70
|
-
def import_facts
|
70
|
+
def import_facts(facts)
|
71
71
|
# Discovered Hosts won't report in via puppet, so we can use that field to
|
72
72
|
# record the last time it sent facts...
|
73
73
|
self.last_report = Time.now
|
74
|
-
|
74
|
+
# Set the correct facts type for new foreman facts importing code.
|
75
|
+
facts[:_type] = :foreman_discovery if SETTINGS[:version].short > '1.16'
|
76
|
+
super(facts)
|
75
77
|
end
|
76
78
|
|
77
79
|
def setup_clone
|
@@ -84,10 +86,23 @@ class Host::Discovered < ::Host::Base
|
|
84
86
|
super
|
85
87
|
end
|
86
88
|
|
87
|
-
def populate_fields_from_facts(
|
88
|
-
|
89
|
-
|
89
|
+
def populate_fields_from_facts(*params)
|
90
|
+
if SETTINGS[:version].short > '1.16'
|
91
|
+
parser, type, source_proxy = params
|
92
|
+
facts = parser.facts
|
93
|
+
# detect interfaces and primary interface using extensions
|
94
|
+
super(parser, type, source_proxy)
|
95
|
+
else
|
96
|
+
# backwards compatibility
|
97
|
+
facts = params[0] || self.facts_hash
|
98
|
+
parser = super(facts, :foreman_discovery)
|
99
|
+
end
|
100
|
+
|
101
|
+
populate_discovery_fields_from_facts(facts)
|
102
|
+
parser
|
103
|
+
end
|
90
104
|
|
105
|
+
def populate_discovery_fields_from_facts(facts)
|
91
106
|
# set additional discovery attributes
|
92
107
|
primary_ip = self.primary_interface.ip
|
93
108
|
unless primary_ip.nil?
|
@@ -122,7 +137,6 @@ class Host::Discovered < ::Host::Base
|
|
122
137
|
# lock the host into discovery via PXE, if feature is enabled in settings
|
123
138
|
lock_templates if Setting::Discovered.discovery_lock? && self.subnet.tftp?
|
124
139
|
self.save!
|
125
|
-
parser
|
126
140
|
end
|
127
141
|
|
128
142
|
def lock_templates
|
@@ -176,16 +190,8 @@ class Host::Discovered < ::Host::Base
|
|
176
190
|
raise ::Foreman::WrappedException.new(e, N_("Could not get facts from proxy %{url}: %{error}"), :url => proxy_url, :error => e)
|
177
191
|
end
|
178
192
|
|
179
|
-
def reboot
|
180
|
-
|
181
|
-
if proxied?
|
182
|
-
resource = ::ForemanDiscovery::NodeAPI::Power.legacy_proxied_service(:url => proxy_url)
|
183
|
-
else
|
184
|
-
resource = ::ForemanDiscovery::NodeAPI::Power.legacy_direct_service(:url => proxy_url)
|
185
|
-
end
|
186
|
-
else
|
187
|
-
resource = ::ForemanDiscovery::NodeAPI::Power.service(:url => proxy_url)
|
188
|
-
end
|
193
|
+
def reboot
|
194
|
+
resource = ::ForemanDiscovery::NodeAPI::Power.service(:url => proxy_url)
|
189
195
|
resource.reboot
|
190
196
|
rescue => e
|
191
197
|
::Foreman::Logging.exception("Unable to reboot #{name}", e)
|
@@ -9,9 +9,6 @@ module Host::ManagedExtensions
|
|
9
9
|
belongs_to :discovery_rule
|
10
10
|
|
11
11
|
scoped_search :relation => :discovery_rule, :on => :name, :rename => :discovery_rule, :complete_value => true
|
12
|
-
|
13
|
-
# extra flag for post_queue callbacks which has no access to facts
|
14
|
-
attr_accessor :legacy_api
|
15
12
|
end
|
16
13
|
|
17
14
|
def queue_reboot
|
@@ -27,7 +24,7 @@ module Host::ManagedExtensions
|
|
27
24
|
end
|
28
25
|
|
29
26
|
def setReboot
|
30
|
-
old.becomes(Host::Discovered).reboot
|
27
|
+
old.becomes(Host::Discovered).reboot
|
31
28
|
# It is too late to report error in the post_queue, we catch them and
|
32
29
|
# continue. If flash is implemented for new hosts (http://projects.theforeman.org/issues/10559)
|
33
30
|
# we can report the error to the user perhaps.
|
@@ -63,7 +60,7 @@ module Host::ManagedExtensions
|
|
63
60
|
|
64
61
|
def delete_discovery_attribute_set
|
65
62
|
return if new_record?
|
66
|
-
DiscoveryAttributeSet.
|
63
|
+
DiscoveryAttributeSet.where(:host_id => self.id).destroy_all if type_changed?
|
67
64
|
end
|
68
65
|
|
69
66
|
def update_notifications
|
@@ -20,8 +20,6 @@ class ForemanDiscovery::HostConverter
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def self.set_build_clean_facts(host)
|
23
|
-
# set legacy_api flag for post_queue actions
|
24
|
-
host.legacy_api = self.legacy_host(host)
|
25
23
|
# fact cleaning
|
26
24
|
if Setting['discovery_clean_facts']
|
27
25
|
# clean all facts except those starting with "discovery_"
|
@@ -37,8 +35,4 @@ class ForemanDiscovery::HostConverter
|
|
37
35
|
host.build = true
|
38
36
|
end
|
39
37
|
|
40
|
-
def self.legacy_host(host)
|
41
|
-
Gem::Version.new(host.facts['discovery_version'] || '1.0.0') < Gem::Version.new('3.0.0')
|
42
|
-
end
|
43
|
-
|
44
38
|
end
|
@@ -4,14 +4,6 @@ module ForemanDiscovery::NodeAPI
|
|
4
4
|
def service(data)
|
5
5
|
ForemanDiscovery::NodeAPI::PowerService.new(data)
|
6
6
|
end
|
7
|
-
|
8
|
-
def legacy_direct_service(data)
|
9
|
-
ForemanDiscovery::NodeAPI::PowerLegacyDirectService.new(data)
|
10
|
-
end
|
11
|
-
|
12
|
-
def legacy_proxied_service(data)
|
13
|
-
ForemanDiscovery::NodeAPI::PowerLegacyProxiedService.new(data)
|
14
|
-
end
|
15
7
|
end
|
16
8
|
end
|
17
9
|
end
|
@@ -1,12 +1,11 @@
|
|
1
|
-
<div class="modal" id="<%= "fixedPropertiesSelector-#{host.id}" %>" tabindex="-1" role="dialog" aria-labelledby="fixedPropertiesSelectorLabel">
|
1
|
+
<div class="modal fade" id="<%= "fixedPropertiesSelector-#{host.id}" %>" tabindex="-1" role="dialog" aria-labelledby="fixedPropertiesSelectorLabel">
|
2
2
|
<div class="modal-dialog" role="document">
|
3
3
|
<div class="modal-content">
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
<div class="modal-body">
|
4
|
+
<div class="modal-header">
|
5
|
+
<h4 class="modal-title" id="fixedPropertiesSelectorLabel">Select initial host properties</h4>
|
6
|
+
</div>
|
7
|
+
<div class="modal-body">
|
8
|
+
<%= form_for host, :url => edit_discovered_host_path(host), :method => :get do |f| %>
|
10
9
|
<%= select_f f, :hostgroup_id, accessible_resource_records(:hostgroup, :title).to_a, :id, :to_label,
|
11
10
|
{ :include_blank => true },
|
12
11
|
{ :help_inline => :indicator, :size => 'col-md-10' } %>
|
@@ -18,12 +17,12 @@
|
|
18
17
|
<% if show_location_tab? %>
|
19
18
|
<%= select_f f, :location_id, Location.my_locations, :id, :to_label, {}, {:size => 'col-md-10'} %>
|
20
19
|
<% end %>
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
</div>
|
21
|
+
<div class="modal-footer">
|
22
|
+
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
23
|
+
<input type="submit" class="btn btn-default" value="<%= _('Customize Host') %>" />
|
24
|
+
<input type="submit" class="btn btn-primary" value="<%= _('Create Host') %>" name="quick_submit" />
|
25
|
+
</div>
|
27
26
|
<% end %>
|
28
27
|
</div>
|
29
28
|
</div>
|
@@ -1,6 +1,7 @@
|
|
1
|
-
<%= render 'selected_hosts', :hosts => @hosts %>
|
2
|
-
|
3
1
|
<%= form_tag submit_multiple_destroy_discovered_hosts_path(:host_ids => params[:host_ids]), :onsubmit => "resetSelection()" do -%>
|
4
|
-
|
5
|
-
|
2
|
+
<%= alert :class => 'alert-warning',
|
3
|
+
:text => _("This might take a while, as all hosts, facts and reports will be destroyed as well"),
|
4
|
+
:header => '' %>
|
6
5
|
<% end %>
|
6
|
+
|
7
|
+
<%= render 'selected_hosts', :hosts => @hosts %>
|
@@ -69,7 +69,7 @@
|
|
69
69
|
</a>
|
70
70
|
</h4>
|
71
71
|
</div>
|
72
|
-
<div id="<%= @categories_names[index].to_s + "panel" %>" class="panel-collapse collapse facts-panel
|
72
|
+
<div id="<%= @categories_names[index].to_s + "panel" %>" class="panel-collapse collapse facts-panel" role="tabpanel">
|
73
73
|
<table class="table table-bordered table-condensed table-fixed">
|
74
74
|
<% val.sort.each do |key, value| %>
|
75
75
|
<tr class="">
|
@@ -99,5 +99,13 @@
|
|
99
99
|
$('.flag-provision').append(flags_provision);
|
100
100
|
$('.primary-flag').tooltip();
|
101
101
|
$('.provision-flag').tooltip();
|
102
|
+
|
103
|
+
$('#expand_all').on('click', function () {
|
104
|
+
$('#accordion .panel-collapse').collapse('toggle');
|
105
|
+
$(this).text(function(i, text){
|
106
|
+
return text === "Expand All" ? "Collapse All" : "Expand All";
|
107
|
+
})
|
108
|
+
});
|
109
|
+
|
102
110
|
});
|
103
111
|
</script>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% content_for(:title, _("Discovered Hosts")) %>
|
2
|
+
<div class="blank-slate-pf">
|
3
|
+
<div class="blank-slate-pf-icon">
|
4
|
+
<%= icon_text("gears", "", :kind => "fa") %>
|
5
|
+
</div>
|
6
|
+
<h1><%= _('Discovered Hosts') %></h1>
|
7
|
+
<p><%= _("No discovered hosts found in this context.") %>
|
8
|
+
<%= _("This page shows discovered bare-metal or virtual nodes waiting to be provisioned.") %></p>
|
9
|
+
<p><%= link_to _('Learn more about this in the documentation.'), documentation_url("#{ForemanDiscovery::VERSION.scan(/\d+\.\d+/).first}/index.html", {:root_url => 'https://theforeman.org/plugins/foreman_discovery/'})%></p>
|
10
|
+
</div>
|
@@ -1,12 +1,14 @@
|
|
1
1
|
class ReviewDiscoveryPermissions < ActiveRecord::Migration
|
2
2
|
def up
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
3
|
+
Role.ignore_locking do
|
4
|
+
if (mgr = Role.find_by_name("Discovery Manager"))
|
5
|
+
perms = []
|
6
|
+
perms << "submit_discovered_hosts" if Permission.find_by_name("edit_discovered_hosts")
|
7
|
+
perms << "auto_provision_discovered_hosts" if Permission.find_by_name("provision_discovered_hosts")
|
8
|
+
perms << "create_discovery_rules" if Permission.find_by_name("new_discovery_rules")
|
9
|
+
perms << "destroy_discovery_rules" if Permission.find_by_name("delete_discovery_rules")
|
10
|
+
mgr.add_permissions!(perms)
|
11
|
+
end
|
10
12
|
end
|
11
13
|
Permission.find_by_name("new_discovery_rules").try(:destroy)
|
12
14
|
end
|
@@ -7,9 +7,6 @@ class AddConstraintsOnSubnetsSmartProxies < ActiveRecord::Migration
|
|
7
7
|
ActiveRecord::Migration.execute "SET FOREIGN_KEY_CHECKS=0;"
|
8
8
|
end
|
9
9
|
|
10
|
-
# if there's some wrong key already, clean the foreign key first
|
11
|
-
Subnet.unscoped.where(["discovery_id IS NOT NULL AND discovery_id NOT IN (?)", SmartProxy.unscoped.pluck(:id)]).update_all(:discovery_id => nil)
|
12
|
-
|
13
10
|
add_foreign_key "subnets", "smart_proxies", :name => "subnets_discovery_id_fk", :column => "discovery_id"
|
14
11
|
|
15
12
|
# turn on Foreign Key checks in MySQL only
|