foreman_discovery 6.0.0 → 7.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 +1 -1
- data/app/controllers/api/v2/discovered_hosts_controller.rb +6 -4
- data/app/controllers/api/v2/discovery_rules_controller.rb +3 -2
- data/app/controllers/concerns/foreman/controller/parameters/discovered_host.rb +24 -0
- data/app/controllers/concerns/foreman/controller/parameters/discovery_rule.rb +17 -0
- data/app/controllers/discovered_hosts_controller.rb +3 -2
- data/app/controllers/discovery_rules_controller.rb +4 -2
- data/app/helpers/discovered_hosts_helper.rb +7 -10
- data/app/models/concerns/discovery_subnet.rb +0 -2
- data/app/models/concerns/fact_value_extensions.rb +5 -0
- data/app/models/discovery_attribute_set.rb +0 -1
- data/app/models/discovery_rule.rb +0 -2
- data/app/models/host/discovered.rb +0 -2
- data/app/models/host/managed_extensions.rb +1 -3
- data/app/models/hostgroup_extensions.rb +0 -1
- data/app/models/nic/managed_extensions.rb +26 -0
- data/app/models/setting/discovered.rb +1 -0
- data/app/views/discovered_hosts/_discovered_host_modal.html.erb +30 -0
- data/app/views/discovered_hosts/_discovered_hosts_list.html.erb +1 -29
- data/app/views/discovered_hosts/show.html.erb +20 -12
- data/app/views/discovery_rules/_form.html.erb +1 -1
- data/app/views/foreman_discovery/debian_kexec.erb +2 -3
- data/app/views/foreman_discovery/redhat_kexec.erb +2 -3
- data/lib/foreman_discovery/engine.rb +8 -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 +2 -2
- data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/de/foreman_discovery.edit.po +33 -33
- data/locale/de/foreman_discovery.po +67 -67
- data/locale/en/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en/foreman_discovery.edit.po +138 -130
- data/locale/en/foreman_discovery.po +13 -7
- data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en_GB/foreman_discovery.edit.po +34 -33
- data/locale/en_GB/foreman_discovery.po +33 -32
- data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/es/foreman_discovery.edit.po +51 -51
- data/locale/es/foreman_discovery.po +51 -51
- data/locale/foreman_discovery.pot +151 -144
- data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/fr/foreman_discovery.edit.po +1 -1
- data/locale/fr/foreman_discovery.po +33 -33
- 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 +2 -2
- data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/it/foreman_discovery.edit.po +5 -5
- data/locale/it/foreman_discovery.po +5 -5
- data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ja/foreman_discovery.edit.po +37 -37
- data/locale/ja/foreman_discovery.po +36 -36
- data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ko/foreman_discovery.edit.po +36 -36
- data/locale/ko/foreman_discovery.po +35 -35
- data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/pt_BR/foreman_discovery.edit.po +40 -40
- data/locale/pt_BR/foreman_discovery.po +39 -39
- data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ru/foreman_discovery.edit.po +8 -8
- data/locale/ru/foreman_discovery.po +8 -8
- 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 +2 -2
- data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_CN/foreman_discovery.edit.po +37 -37
- data/locale/zh_CN/foreman_discovery.po +36 -36
- data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_TW/foreman_discovery.edit.po +36 -36
- data/locale/zh_TW/foreman_discovery.po +35 -35
- data/test/factories/discovery_rule_related.rb +19 -2
- data/test/functional/api/v2/discovered_hosts_controller_test.rb +1 -0
- data/test/functional/api/v2/discovery_rules_controller_test.rb +13 -5
- data/test/functional/discovered_hosts_controller_test.rb +71 -3
- data/test/functional/discovery_rules_controller_test.rb +23 -6
- data/test/test_helper_discovery.rb +4 -0
- data/test/unit/discovered_extensions_test.rb +2 -0
- data/test/unit/fact_value_extensions_test.rb +11 -0
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb5bd6046ce32fec83f20be39d6a013432f3b68a
|
4
|
+
data.tar.gz: a731fce4e700240569682ad27870e595c877cad7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4062bb0efcd048821962c566f1b33ac4151caaf09d9a1787116a78cbefa5f38eb48afcb135502f25d31fe0270a6c973636ec77ac56d66c4f1d9c4e616a2d9478
|
7
|
+
data.tar.gz: 274935dfa8429e46473404b331b346b528467872e23b4d49eecdab59f5fe4b3eb5690d61905db2bc509d4558242a7ad9645b9dd42b009a18a82ba16785559da3
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ The main documentation can be found in the [Foreman Discovery manual] (http://th
|
|
11
11
|
If a source-based install of Foreman is in use, the develop
|
12
12
|
branch of the plugin can be obtained by updating the Gemfile in this way:
|
13
13
|
|
14
|
-
gem 'foreman_discovery', :git => "https://github.com/theforeman/foreman_discovery.git"
|
14
|
+
gem 'foreman_discovery', :git => "https://github.com/theforeman/foreman_discovery.git", :branch => 'develop'
|
15
15
|
|
16
16
|
# API
|
17
17
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Api
|
2
2
|
module V2
|
3
3
|
class DiscoveredHostsController < ::Api::V2::BaseController
|
4
|
+
include Foreman::Controller::Parameters::DiscoveredHost
|
4
5
|
include Foreman::Controller::DiscoveredExtensions
|
5
6
|
|
6
7
|
before_filter :find_resource, :except => %w{index create facts auto_provision_all reboot_all}
|
@@ -40,7 +41,7 @@ module Api
|
|
40
41
|
param_group :discovered_host, :as => :create
|
41
42
|
|
42
43
|
def create
|
43
|
-
@discovered_host = Host::Discovered.new(
|
44
|
+
@discovered_host = Host::Discovered.new(discovered_host_params)
|
44
45
|
process_response @discovered_host.save
|
45
46
|
end
|
46
47
|
|
@@ -78,7 +79,7 @@ module Api
|
|
78
79
|
def update
|
79
80
|
@host = ::ForemanDiscovery::HostConverter.to_managed(@discovered_host)
|
80
81
|
forward_request_url
|
81
|
-
update_response = @host.update_attributes(
|
82
|
+
update_response = @host.update_attributes(discovered_host_params)
|
82
83
|
process_response update_response
|
83
84
|
end
|
84
85
|
|
@@ -93,15 +94,16 @@ module Api
|
|
93
94
|
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)")
|
94
95
|
|
95
96
|
def facts
|
97
|
+
facts = params['facts']
|
96
98
|
state = true
|
97
|
-
@discovered_host = Host::Discovered.import_host(
|
99
|
+
@discovered_host = Host::Discovered.import_host(facts)
|
98
100
|
Rails.logger.warn "Discovered facts import unsuccessful, skipping auto provisioning" unless @discovered_host
|
99
101
|
if Setting['discovery_auto'] && @discovered_host && rule = find_discovery_rule(@discovered_host)
|
100
102
|
state = perform_auto_provision(@discovered_host, rule)
|
101
103
|
end
|
102
104
|
process_response state
|
103
105
|
rescue Exception => e
|
104
|
-
logger.warn "Host discovery failed, facts: #{
|
106
|
+
logger.warn "Host discovery failed, facts: #{facts}"
|
105
107
|
logger.debug e.message + "\n" + e.backtrace.join("\n")
|
106
108
|
render :json => {'message'=>e.to_s}, :status => :unprocessable_entity
|
107
109
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Api
|
2
2
|
module V2
|
3
3
|
class DiscoveryRulesController < ::Api::V2::BaseController
|
4
|
+
include Foreman::Controller::Parameters::DiscoveryRule
|
4
5
|
|
5
6
|
before_filter :find_resource, :except => %w{index create facts}
|
6
7
|
|
@@ -43,7 +44,7 @@ module Api
|
|
43
44
|
param_group :discovery_rule, :as => :create
|
44
45
|
|
45
46
|
def create
|
46
|
-
@discovery_rule = DiscoveryRule.new(
|
47
|
+
@discovery_rule = DiscoveryRule.new(discovery_rule_params)
|
47
48
|
process_response @discovery_rule.save
|
48
49
|
end
|
49
50
|
|
@@ -52,7 +53,7 @@ module Api
|
|
52
53
|
param_group :discovery_rule, :as => :update
|
53
54
|
|
54
55
|
def update
|
55
|
-
process_response @discovery_rule.update_attributes(
|
56
|
+
process_response @discovery_rule.update_attributes(discovery_rule_params)
|
56
57
|
end
|
57
58
|
|
58
59
|
api :DELETE, "/discovery_rules/:id/", N_("Delete a rule")
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Foreman::Controller::Parameters::DiscoveredHost
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
include Foreman::Controller::Parameters::HostBase
|
4
|
+
include Foreman::Controller::Parameters::HostCommon
|
5
|
+
|
6
|
+
class_methods do
|
7
|
+
def discovered_host_params_filter
|
8
|
+
Foreman::ParameterFilter.new(::Host::Discovered).tap do |filter|
|
9
|
+
filter.permit :discovery_rule_id
|
10
|
+
|
11
|
+
add_host_base_params_filter(filter)
|
12
|
+
add_host_common_params_filter(filter)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def discovered_host_params
|
18
|
+
self.class.discovered_host_params_filter.filter_params(params, parameter_filter_context)
|
19
|
+
end
|
20
|
+
|
21
|
+
def discovered_host_params_host
|
22
|
+
self.class.discovered_host_params_filter.filter_params(params, parameter_filter_context, :host)
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Foreman::Controller::Parameters::DiscoveryRule
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
include Foreman::Controller::Parameters::Taxonomix
|
4
|
+
|
5
|
+
class_methods do
|
6
|
+
def discovery_rule_params_filter
|
7
|
+
Foreman::ParameterFilter.new(::DiscoveryRule).tap do |filter|
|
8
|
+
filter.permit :name, :search, :hostname, :priority, :enabled, :hostgroup, :hostgroup_id, :max_count
|
9
|
+
add_taxonomix_params_filter(filter)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def discovery_rule_params
|
15
|
+
self.class.discovery_rule_params_filter.filter_params(params, parameter_filter_context)
|
16
|
+
end
|
17
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
class DiscoveredHostsController < ::ApplicationController
|
2
|
+
include Foreman::Controller::Parameters::DiscoveredHost
|
2
3
|
include Foreman::Controller::AutoCompleteSearch
|
3
4
|
include Foreman::Controller::TaxonomyMultiple
|
4
5
|
include Foreman::Controller::DiscoveredExtensions
|
@@ -50,7 +51,7 @@ class DiscoveredHostsController < ::ApplicationController
|
|
50
51
|
|
51
52
|
def edit
|
52
53
|
@host = ::ForemanDiscovery::HostConverter.to_managed(@host, true, false) unless @host.nil?
|
53
|
-
@host.attributes = @host.apply_inherited_attributes(
|
54
|
+
@host.attributes = @host.apply_inherited_attributes(discovered_host_params_host) unless discovered_host_params_host.empty?
|
54
55
|
@host.set_hostgroup_defaults
|
55
56
|
setup_host_class_variables(@host)
|
56
57
|
@override_taxonomy = true
|
@@ -64,7 +65,7 @@ class DiscoveredHostsController < ::ApplicationController
|
|
64
65
|
def update
|
65
66
|
@host = ::ForemanDiscovery::HostConverter.to_managed(@host)
|
66
67
|
forward_url_options
|
67
|
-
@host.attributes =
|
68
|
+
@host.attributes = discovered_host_params_host
|
68
69
|
|
69
70
|
perform_update(@host)
|
70
71
|
end
|
@@ -2,6 +2,8 @@ class DiscoveryRulesController < ApplicationController
|
|
2
2
|
# Two-pane searching must be disabled for rules otherwise query completion will not work
|
3
3
|
#include Foreman::Controller::AutoCompleteSearch
|
4
4
|
|
5
|
+
include Foreman::Controller::Parameters::DiscoveryRule
|
6
|
+
|
5
7
|
before_filter :find_resource, :only => [:edit, :update, :destroy, :enable, :disable, :auto_provision]
|
6
8
|
|
7
9
|
def index
|
@@ -14,7 +16,7 @@ class DiscoveryRulesController < ApplicationController
|
|
14
16
|
end
|
15
17
|
|
16
18
|
def create
|
17
|
-
@discovery_rule = DiscoveryRule.new(
|
19
|
+
@discovery_rule = DiscoveryRule.new(discovery_rule_params)
|
18
20
|
if @discovery_rule.save
|
19
21
|
process_success
|
20
22
|
else
|
@@ -26,7 +28,7 @@ class DiscoveryRulesController < ApplicationController
|
|
26
28
|
end
|
27
29
|
|
28
30
|
def update
|
29
|
-
if @discovery_rule.update_attributes(
|
31
|
+
if @discovery_rule.update_attributes(discovery_rule_params)
|
30
32
|
process_success
|
31
33
|
else
|
32
34
|
process_error
|
@@ -11,15 +11,14 @@ module DiscoveredHostsHelper
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def discovered_hosts_title_actions(host)
|
14
|
-
actions =
|
15
|
-
actions << [_('Auto Provision'), hash_for_auto_provision_discovered_host_path(:id => host).merge(:auth_object => host, :permission => :auto_provision_discovered_hosts), :method => :post]
|
14
|
+
actions = [[_('Auto Provision'), hash_for_auto_provision_discovered_host_path(:id => host).merge(:auth_object => host, :permission => :auto_provision_discovered_hosts), :method => :post]]
|
16
15
|
actions << [_('Refresh facts') ,hash_for_refresh_facts_discovered_host_path(:id => host).merge(:auth_object => host, :permission => :edit_discovered_hosts)]
|
17
16
|
actions << [_('Reboot') ,hash_for_reboot_discovered_host_path(:id => host).merge(:auth_object => host, :permission => :edit_discovered_hosts), :method => :put]
|
18
17
|
title_actions(
|
19
18
|
button_group(
|
20
19
|
link_to(_("Back"), :back, :class => "btn btn-default")
|
21
20
|
),
|
22
|
-
select_action_button( _("Select Action"), {}, actions.map { |action| display_link_if_authorized(action[0] , action[1], action[2] || {}) }.flatten ),
|
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 ),
|
23
22
|
button_group(
|
24
23
|
link_to(_("Expand All"),"#",:class => "btn btn-default",:onclick => "$('.glyphicon-plus-sign').toggleClass('glyphicon glyphicon-minus-sign glyphicon glyphicon-plus-sign');
|
25
24
|
$('.facts-panel').addClass('collapse in').height('auto');"
|
@@ -90,12 +89,10 @@ module DiscoveredHostsHelper
|
|
90
89
|
def provision_button(host, authorization_options)
|
91
90
|
return '' unless authorized_for(authorization_options)
|
92
91
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
:toggle => 'modal',
|
99
|
-
:target => "#fixedPropertiesSelector-#{host.id}"})
|
92
|
+
link_to(
|
93
|
+
_('Provision'), "#",
|
94
|
+
:data => {
|
95
|
+
:toggle => 'modal',
|
96
|
+
:target => "#fixedPropertiesSelector-#{host.id}"})
|
100
97
|
end
|
101
98
|
end
|
@@ -4,5 +4,10 @@ module FactValueExtensions
|
|
4
4
|
included do
|
5
5
|
belongs_to :discovered_host, :class_name => "Host::Discovered", :foreign_key => :host_id
|
6
6
|
scoped_search :in => :discovered_host, :on => :id, :complete_enabled => false, :only_explicit => true, :rename => :discovered_host
|
7
|
+
|
8
|
+
def host
|
9
|
+
return discovered_host if discovered_host.present?
|
10
|
+
super
|
11
|
+
end
|
7
12
|
end
|
8
13
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
class DiscoveryAttributeSet < ActiveRecord::Base
|
2
2
|
belongs_to :host, :class_name => "Host::Discovered", :foreign_key => :host_id
|
3
|
-
attr_accessible :cpu_count, :disk_count, :disks_size, :memory
|
4
3
|
|
5
4
|
validates :cpu_count, :presence => true, :numericality => {:greater_than_or_equal_to => 0}
|
6
5
|
validates :memory, :presence => true, :numericality => {:greater_than_or_equal_to => 0}
|
@@ -5,8 +5,6 @@ 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
|
-
|
10
8
|
validates :name, :presence => true, :uniqueness => true,
|
11
9
|
:format => { :with => /\A(\S+)\Z/, :message => N_("can't contain white spaces.") }
|
12
10
|
validates :search, :presence => true
|
@@ -12,7 +12,6 @@ module Host::ManagedExtensions
|
|
12
12
|
|
13
13
|
# extra flag for post_queue callbacks which has no access to facts
|
14
14
|
attr_accessor :legacy_api
|
15
|
-
attr_accessible :discovery_rule_id
|
16
15
|
end
|
17
16
|
|
18
17
|
def queue_reboot
|
@@ -45,8 +44,7 @@ module Host::ManagedExtensions
|
|
45
44
|
template = provisioning_template(:kind => 'kexec')
|
46
45
|
raise ::Foreman::Exception.new(N_("Kexec template not associated with operating system")) unless template
|
47
46
|
@host = self
|
48
|
-
|
49
|
-
@kernel, @initrd = operatingsystem.boot_files_uri(@host.medium, @host.architecture)
|
47
|
+
@kexec_kernel, @kexec_initrd = operatingsystem.boot_files_uri(@host.medium, @host.architecture)
|
50
48
|
json = unattended_render(template)
|
51
49
|
old.becomes(Host::Discovered).kexec json
|
52
50
|
true
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Nic::ManagedExtensions
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
after_validation :discovery_queue_rebuild_dns
|
6
|
+
end
|
7
|
+
|
8
|
+
def discovery_queue_rebuild_dns
|
9
|
+
return unless (dns? || dns6? || reverse_dns? || reverse_dns6?) && errors.empty? && Setting[:discovery_always_rebuild_dns]
|
10
|
+
return if self.host.new_record? # Discovered Hosts already exist, and new_records will break `find`
|
11
|
+
return unless self.host.type_changed? and ::Host::Base.find(self.host.id).type == "Host::Discovered"
|
12
|
+
return if self.pending_dns_record_changes?
|
13
|
+
logger.debug "Queuing DNS rebuild for #{self}"
|
14
|
+
queue.create(:name => _("Rebuild DNS for %s") % self, :priority => 10, :action => [self, :set_discovery_rebuild_dns])
|
15
|
+
end
|
16
|
+
|
17
|
+
def set_discovery_rebuild_dns
|
18
|
+
logger.debug "Executing DNS rebuild for #{self}"
|
19
|
+
rebuild_dns
|
20
|
+
end
|
21
|
+
|
22
|
+
def del_discovery_rebuild_dns
|
23
|
+
# Just a place holder, so if rollback is needed, we won't get an exception about not knowing how to rollback.
|
24
|
+
# This is a no-op, since we cannot really rollback rebuild_dns
|
25
|
+
end
|
26
|
+
end
|
@@ -31,6 +31,7 @@ class Setting::Discovered < ::Setting
|
|
31
31
|
self.set('discovery_facts_ipmi', N_("Regex to organize facts for ipmi section"), "", N_("IPMI facts")),
|
32
32
|
self.set('discovery_lock', N_("Automatically generate PXE configuration to pin a newly discovered host to discovery"), false, N_("Lock PXE")),
|
33
33
|
self.set('discovery_lock_template', N_("PXE template to be used when pinning a host to discovery"), 'pxelinux_discovery', N_("Locked template name"),nil,{ :collection => Proc.new {Hash[ProvisioningTemplate.all.map{|template| [template[:name], template[:name]]}]} }),
|
34
|
+
self.set('discovery_always_rebuild_dns', N_("Force DNS entries creation when provisioning discovered host"), true, N_("Force DNS")),
|
34
35
|
].compact.each { |s| self.create s.update(:category => "Setting::Discovered")}
|
35
36
|
end
|
36
37
|
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<div class="modal" id="<%= "fixedPropertiesSelector-#{host.id}" %>" tabindex="-1" role="dialog" aria-labelledby="fixedPropertiesSelectorLabel">
|
2
|
+
<div class="modal-dialog" role="document">
|
3
|
+
<div class="modal-content">
|
4
|
+
<%= form_for host, :url => edit_discovered_host_path(host), :method => :get do |f| %>
|
5
|
+
<div class="modal-header">
|
6
|
+
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
7
|
+
<h4 class="modal-title" id="fixedPropertiesSelectorLabel"><%= _('Select initial host properties') %></h4>
|
8
|
+
</div>
|
9
|
+
<div class="modal-body">
|
10
|
+
<%= select_f f, :hostgroup_id, accessible_resource_records(:hostgroup, :title).to_a, :id, :to_label,
|
11
|
+
{ :include_blank => true },
|
12
|
+
{ :help_inline => :indicator, :size => 'col-md-10' } %>
|
13
|
+
|
14
|
+
<% if show_organization_tab? %>
|
15
|
+
<%= select_f f, :organization_id, Organization.my_organizations, :id, :to_label, {}, {:size => 'col-md-10'} %>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<% if show_location_tab? %>
|
19
|
+
<%= select_f f, :location_id, Location.my_locations, :id, :to_label, {}, {:size => 'col-md-10'} %>
|
20
|
+
<% end %>
|
21
|
+
</div>
|
22
|
+
<div class="modal-footer">
|
23
|
+
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
24
|
+
<input type="submit" class="btn btn-default" value="<%= _('Quick create') %>" name="quick_submit" />
|
25
|
+
<input type="submit" class="btn btn-primary" value="<%= _('Create host') %>" />
|
26
|
+
</div>
|
27
|
+
<% end %>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
</div>
|
@@ -39,36 +39,8 @@
|
|
39
39
|
<td class="hidden-tablet hidden-xs"><%= disc_report_column(host) %></td>
|
40
40
|
<td>
|
41
41
|
<!-- Modal -->
|
42
|
-
|
43
|
-
<div class="modal-dialog" role="document">
|
44
|
-
<div class="modal-content">
|
45
|
-
<%= form_for host, :url => edit_discovered_host_path(host), :method => :get do |f| %>
|
46
|
-
<div class="modal-header">
|
47
|
-
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
48
|
-
<h4 class="modal-title" id="fixedPropertiesSelectorLabel"><%= _('Select initial host properties') %></h4>
|
49
|
-
</div>
|
50
|
-
<div class="modal-body">
|
51
|
-
<%= select_f f, :hostgroup_id, accessible_hostgroups, :id, :to_label,
|
52
|
-
{ :include_blank => true },
|
53
|
-
{ :help_inline => :indicator, :size => 'col-md-10' } %>
|
54
|
-
|
55
|
-
<% if show_organization_tab? %>
|
56
|
-
<%= select_f f, :organization_id, Organization.my_organizations, :id, :to_label, {}, {:size => 'col-md-10'} %>
|
57
|
-
<% end %>
|
58
|
-
|
59
|
-
<% if show_location_tab? %>
|
60
|
-
<%= select_f f, :location_id, Location.my_locations, :id, :to_label, {}, {:size => 'col-md-10'} %>
|
61
|
-
<% end %>
|
62
|
-
</div>
|
63
|
-
<div class="modal-footer">
|
64
|
-
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
65
|
-
<input type="submit" class="btn btn-default" value="<%= _('Quick create') %>" name="quick_submit"></input>
|
66
|
-
<input type="submit" class="btn btn-primary" value="<%= _('Create host') %>"></input>
|
67
|
-
</div>
|
68
|
-
<% end %>
|
69
|
-
</div>
|
42
|
+
<%= render :partial => "discovered_host_modal", :locals => {:host => host} %>
|
70
43
|
</div>
|
71
|
-
</div>
|
72
44
|
<%= action_buttons(
|
73
45
|
provision_button(host, hash_for_edit_discovered_host_path(:id => host)),
|
74
46
|
display_link_if_authorized(_("Auto Provision"), hash_for_auto_provision_discovered_host_path(:id => host), :method => :post),
|
@@ -2,25 +2,35 @@
|
|
2
2
|
|
3
3
|
<%= discovered_hosts_title_actions(@host) %>
|
4
4
|
|
5
|
+
<!-- Modal -->
|
6
|
+
<%= render :partial => "discovered_host_modal", :locals => {:host => @host} %>
|
7
|
+
|
5
8
|
<div class="row">
|
6
9
|
<div class="col-md-6">
|
7
10
|
<div id="category-highlights" class="panel panel-default">
|
8
|
-
<div class="panel-heading"
|
11
|
+
<div class="panel-heading" role="tab">
|
12
|
+
<h4 class="panel-title">
|
13
|
+
<a role="button" class="expendable-link" data-toggle="collapse" href="#highlights-panel" aria-expanded="true">
|
14
|
+
<%= _(@categories_names[0]) %>
|
15
|
+
</a>
|
16
|
+
</h4>
|
17
|
+
</div>
|
18
|
+
<div id="highlights-panel" class="panel-collapse collapse facts-panel in" >
|
9
19
|
<table class="table table-bordered table-condensed table-fixed">
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
20
|
+
<% @categories[0].sort.each do |key, val| %>
|
21
|
+
<tr id="fact-<%= key.try(:downcase) %>" class="">
|
22
|
+
<th class="ellipsis" width="40%"> <strong> <%= key %> </strong></th>
|
23
|
+
<td><%= val %></td>
|
24
|
+
</tr>
|
15
25
|
<% end -%>
|
16
26
|
</table>
|
27
|
+
</div>
|
17
28
|
</div>
|
18
29
|
<% unless @interfaces.empty? %>
|
19
30
|
<div class="panel panel-default">
|
20
31
|
<div class="panel-heading" role="tab">
|
21
32
|
<h4 class="panel-title">
|
22
|
-
<a role="button" class="expendable-link" data-toggle="collapse"
|
23
|
-
<span class="glyphicon glyphicon-minus-sign" aria-hidden="true"></span>
|
33
|
+
<a role="button" class="expendable-link" data-toggle="collapse" href="#interfaces-panel" aria-expanded="true">
|
24
34
|
<%= _("Interfaces") %>
|
25
35
|
</a>
|
26
36
|
</h4>
|
@@ -28,7 +38,7 @@
|
|
28
38
|
<div id="interfaces-panel" class="panel-collapse collapse facts-panel in" >
|
29
39
|
<table class="table table-bordered table-condensed table-fixed" id="interfaceList">
|
30
40
|
<tr>
|
31
|
-
<th class="hidden-xs " width="12%"
|
41
|
+
<th class="hidden-xs " width="12%"><%= _('Type') %></th>
|
32
42
|
<th class="hidden-xs "><%= _('Identifier') %></th>
|
33
43
|
<th class="hidden-xs "><%= _("MAC address") %></th>
|
34
44
|
<th class="hidden-xs "><%= _("IP address") %></th>
|
@@ -54,8 +64,7 @@
|
|
54
64
|
<div id="category-<%= @categories_names[index].downcase %>" class="panel panel-default">
|
55
65
|
<div class="panel-heading" role="tab">
|
56
66
|
<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"
|
58
|
-
<span class="glyphicon glyphicon<%= (@categories_names[index].to_s.include?("Storage")? "-minus-sign":"-plus-sign")%>" aria-hidden="true"></span>
|
67
|
+
<a role="button" class="expendable-link" data-toggle="collapse" data-parent="#accordion" href="#<%= @categories_names[index].to_s + "panel" %>" aria-expanded="true">
|
59
68
|
<%= _(@categories_names[index]) %>
|
60
69
|
</a>
|
61
70
|
</h4>
|
@@ -80,7 +89,6 @@
|
|
80
89
|
$(document).ready(function(){
|
81
90
|
$("table").css('padding', '0');
|
82
91
|
$("table").css("cssText", 'margin-bottom: 0 !important;');
|
83
|
-
$(".panel-default").css('margin-bottom', "10px")
|
84
92
|
|
85
93
|
provision_class = 'active'
|
86
94
|
primary_class = 'active'
|