foreman_discovery 2.0.2 → 3.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 +3 -182
- data/app/controllers/api/v2/discovered_hosts_controller.rb +2 -2
- data/app/controllers/api/v2/discovery_rules_controller.rb +16 -8
- data/app/controllers/discovered_hosts_controller.rb +8 -1
- data/app/helpers/discovered_hosts_helper.rb +1 -1
- data/app/models/discovery_rule.rb +0 -7
- data/app/models/host/discovered.rb +14 -4
- data/app/services/host_converter.rb +2 -2
- data/app/views/api/v2/discovery_rules/main.json.rabl +1 -6
- data/app/views/discovered_hosts/_discovered_host.html.erb +1 -1
- data/app/views/discovered_hosts/_discovered_hosts_list.html.erb +2 -2
- data/app/views/discovery_rules/index.html.erb +3 -3
- data/lib/foreman_discovery/engine.rb +5 -8
- data/lib/foreman_discovery/version.rb +1 -1
- data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/de/foreman_discovery.po +211 -20
- data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en_GB/foreman_discovery.po +208 -17
- data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/es/foreman_discovery.po +212 -19
- data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/fr/foreman_discovery.po +209 -18
- data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/gl/foreman_discovery.po +203 -12
- data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/it/foreman_discovery.po +209 -18
- data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ja/foreman_discovery.po +209 -18
- data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ko/foreman_discovery.po +209 -18
- data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/pt_BR/foreman_discovery.po +209 -18
- data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ru/foreman_discovery.po +209 -18
- data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/sv_SE/foreman_discovery.po +209 -18
- data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_CN/foreman_discovery.po +209 -18
- data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_TW/foreman_discovery.po +209 -18
- data/test/factories/discovery_rule_related.rb +1 -0
- data/test/functional/api/v2/discovered_hosts_controller_test.rb +19 -4
- data/test/functional/discovered_hosts_controller_test.rb +4 -3
- data/test/unit/discovered_extensions_test.rb +9 -7
- data/test/unit/facts.json +3 -1
- data/test/unit/host_discovered_test.rb +7 -8
- metadata +2 -5
- data/db/migrate/20150310153859_remove_discovery_attribute_sets_from_managed_hosts.rb +0 -8
- data/test/unit/discovery_rule_test.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73911ee5b9b16a403e8f2709babed0be65bcdd31
|
4
|
+
data.tar.gz: ba4db8e574a8fac66bf4a7b481750581c2e22484
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab7fba75b6799fcc3c95890a3f942cafea7f4c590a45514f0ebba707256cff977bc5cdec67bdea7bd5ed96c0a5897e6f3c1133b47bc930184fc3750458eee121
|
7
|
+
data.tar.gz: 3fc4a54ee297c7c3134c3ef02e373225bfc809bc162a90b07dad598455318926065da63696fa0925066709cf1bbb4f54a00183ed8d9da1151243a8b048154695
|
data/README.md
CHANGED
@@ -1,40 +1,10 @@
|
|
1
1
|
# foreman\_discovery
|
2
2
|
|
3
|
-
This plugin enables MaaS hardware discovery in Foreman.
|
4
|
-
artifacts (and terms) used in this document:
|
3
|
+
This plugin enables MaaS hardware discovery in Foreman.
|
5
4
|
|
6
|
-
|
7
|
-
Hosts menu entry, API and required configuration
|
8
|
-
* discovery image - net-bootable image that needs to be installed in the TFTP
|
9
|
-
server and configured in Foreman for new (unknown) hosts to boot from over
|
10
|
-
PXE
|
5
|
+
# Documentation
|
11
6
|
|
12
|
-
|
13
|
-
|
14
|
-
Since the bootable image runs from memory, keep in mind the minimum
|
15
|
-
requirement of 500 MB RAM otherwise kernel panic can be seen during boot
|
16
|
-
sequence.
|
17
|
-
|
18
|
-
# Installation (plugin)
|
19
|
-
|
20
|
-
Please see the Foreman wiki for appropriate instructions:
|
21
|
-
|
22
|
-
* [Foreman: How to Install a Plugin](http://projects.theforeman.org/projects/foreman/wiki/How_to_Install_a_Plugin)
|
23
|
-
|
24
|
-
The gem name is "foreman_discovery".
|
25
|
-
|
26
|
-
RPM users can install the "ruby193-rubygem-foreman_discovery" or
|
27
|
-
"rubygem-foreman_discovery" packages.
|
28
|
-
|
29
|
-
## Compatibility
|
30
|
-
|
31
|
-
| Foreman Version | Plugin Version | Image Version |
|
32
|
-
| --------------- | --------------:| -------------------:|
|
33
|
-
| <= 1.2 | 1.0.2 | N/A |
|
34
|
-
| = 1.3 | 1.1.0 | 0.1.0 |
|
35
|
-
| = 1.4 | 1.2.0 | 0.3.0-1 |
|
36
|
-
| = 1.5 | 1.3.0 | 0.5.0-1 |
|
37
|
-
| >= 1.6 | 1.4.0 | 0.6 or 2.0 |
|
7
|
+
The main documentation can be found in [Foreman Discovery 2.0 Manual] (http://theforeman.org/plugins/foreman_discovery/2.0/).
|
38
8
|
|
39
9
|
## Latest code
|
40
10
|
|
@@ -43,155 +13,6 @@ branch of the plugin can be obtained by updating the Gemfile in this way:
|
|
43
13
|
|
44
14
|
gem 'foreman_discovery', :git => "https://github.com/theforeman/foreman_discovery.git"
|
45
15
|
|
46
|
-
# Installation (image)
|
47
|
-
|
48
|
-
The image is based on CentOS 7 and about 150 MB in size. The recommended
|
49
|
-
option is to download a prebuilt image from the Foreman repositories.
|
50
|
-
|
51
|
-
## Downloading an image
|
52
|
-
|
53
|
-
### Download via installer
|
54
|
-
|
55
|
-
As of Foreman 1.6, the foreman-installer is able to automatically download
|
56
|
-
latest stable image. For this, re-run the installer with the following
|
57
|
-
option:
|
58
|
-
|
59
|
-
# foreman-installer \
|
60
|
-
--enable-foreman-plugin-discovery \
|
61
|
-
--foreman-plugin-discovery-install-images=true
|
62
|
-
|
63
|
-
### Manual download
|
64
|
-
|
65
|
-
Images are available from:
|
66
|
-
|
67
|
-
* http://downloads.theforeman.org/discovery/
|
68
|
-
|
69
|
-
To download the latest release to the expected location, do the following:
|
70
|
-
|
71
|
-
# wget http://downloads.theforeman.org/discovery/releases/latest/fdi-image-latest.tar \
|
72
|
-
-O - | tar x --overwrite -C /var/lib/tftpboot/boot
|
73
|
-
|
74
|
-
After download, verify checksums:
|
75
|
-
|
76
|
-
# cat /var/lib/tftpboot/boot/fdi-image/SHA256SUM
|
77
|
-
beb3cfba7d9fb9d71481c0c8f... initrd0.img
|
78
|
-
f03bce150d2473a28697d2988... vmlinuz0
|
79
|
-
# sha256sum /var/lib/tftpboot/boot/fdi-image/*
|
80
|
-
|
81
|
-
### Building an image
|
82
|
-
|
83
|
-
To build a discovery image, please visit the
|
84
|
-
[foreman-discovery-image](https://github.com/theforeman/foreman-discovery-image)
|
85
|
-
git repository and find the README for further instructions.
|
86
|
-
|
87
|
-
# Configuration (image)
|
88
|
-
|
89
|
-
Foreman Discovery relies on intercepting the normal boot process for machines
|
90
|
-
not registered in Foreman. To achieve this, the PXE default.cfg file needs to
|
91
|
-
be altered to instruct new machines to boot the discovery image.
|
92
|
-
|
93
|
-
In the Foreman UI, go to Provisioning Templates, edit *PXELinux global default*
|
94
|
-
template and add the following after the "LABEL local" block of options:
|
95
|
-
|
96
|
-
LABEL discovery
|
97
|
-
MENU LABEL Foreman Discovery
|
98
|
-
MENU DEFAULT
|
99
|
-
KERNEL boot/fdi-image/vmlinuz0
|
100
|
-
APPEND initrd=boot/fdi-image/initrd0.img rootflags=loop root=live:/fdi.iso rootfstype=auto ro rd.live.image acpi=force rd.luks=0 rd.md=0 rd.dm=0 rd.lvm=0 rd.bootif=0 rd.neednet=0 nomodeset proxy.url=http://xyz proxy.type=proxy
|
101
|
-
IPAPPEND 2
|
102
|
-
|
103
|
-
The `proxy.type` option can be either `proxy` or `foreman`. In the first case
|
104
|
-
all communication goes through Smart Proxy, in the latter case the
|
105
|
-
communication goes directly to Foreman (legacy mode). This is the default when
|
106
|
-
not specified.
|
107
|
-
|
108
|
-
The `proxy.url` specifies URL of the Smart Proxy or Foreman depending on the
|
109
|
-
previous setting. Both http and https schemes are supported. For backward
|
110
|
-
compatibility, `foreman.url` is an alias for this setting.
|
111
|
-
|
112
|
-
Once the APPEND line is modified properly, set the entry to be default via the
|
113
|
-
`ONTIMEOUT` option:
|
114
|
-
|
115
|
-
ONTIMEOUT discovery
|
116
|
-
|
117
|
-
*Alternatively*, the Discovery image also searches for DNS SRV record named
|
118
|
-
`_x-foreman._tcp`. If the DNS server is configured for this (see the example
|
119
|
-
for ISC BIND below), then it is not required to provide `foreman.url` at all.
|
120
|
-
|
121
|
-
_x-foreman._tcp SRV 0 5 443 foreman
|
122
|
-
|
123
|
-
This can still be overriden with the command line opts.
|
124
|
-
|
125
|
-
It is important to have *IPAPPEND 2* option which adds BOOTIF=MAC option which
|
126
|
-
is then reported via facter as `discovery_bootif` which is key fact which is
|
127
|
-
used for provisioning. Without this line, DNS will not work properly as well.
|
128
|
-
|
129
|
-
It is important to know that DNS servers from DHCP are enabled only for the
|
130
|
-
interface that was specified via the BOOTIF option. This means when a system
|
131
|
-
have multiple NICs, DNS will work for the correct interface - the one that was
|
132
|
-
booted from.
|
133
|
-
|
134
|
-
_Warning_: For now, the selinux=0 option *must* be provided, the image is read
|
135
|
-
only anyway but we plan to enable and test with SELinux too.
|
136
|
-
|
137
|
-
## Updating the on-disk `default` file
|
138
|
-
|
139
|
-
Once the template has been updated, click the Build PXE Default button at the top
|
140
|
-
of the Provisioning Templates page. This will instruct the TFTP proxy to rewrite
|
141
|
-
the `pxelinux.cfg/default` file.
|
142
|
-
|
143
|
-
# Configuration (plugin)
|
144
|
-
|
145
|
-
No configuration of the plugin in the Foreman UI is required, but some
|
146
|
-
configuration is available.
|
147
|
-
|
148
|
-
If Locations and/or Organisations are enabled, Foreman will default to using
|
149
|
-
the first Location and first Organisation for Discovered hosts. If hosts should
|
150
|
-
be placed in some other Location/Organization, alter the default Loc/Org in
|
151
|
-
`More->Settings->Discovered`
|
152
|
-
|
153
|
-
There is also setting called `discovery_fact` which defaults to
|
154
|
-
`discovery_bootif` which specifies which incoming fact should be used to get
|
155
|
-
the MAC address. By default PXELinux BOOTIF kernel command line option is used
|
156
|
-
which gives a MAC address of the interface which was booted from. Make sure
|
157
|
-
the `IPAPPEND 2` option is set correctly in the Foreman template.
|
158
|
-
|
159
|
-
# Usage
|
160
|
-
|
161
|
-
Boot a machine using the new PXE config above. It should register with
|
162
|
-
Foreman. The new Host should show up in `Hosts->Discovered Hosts`. Then select
|
163
|
-
a Discovered Host and choose Provision. This will redirect to the normal Edit
|
164
|
-
page for a Host, with the discovered data filled in where possible. Fill in
|
165
|
-
the details as normal.
|
166
|
-
|
167
|
-
On save, a reboot is sent to the discovered host, after which it should reboot into
|
168
|
-
the installer for the chosen OS, and finally into the installed OS.
|
169
|
-
|
170
|
-
Delete a machine and reboot it to have it move back to the Discovery Pool.
|
171
|
-
|
172
|
-
# Permissions
|
173
|
-
|
174
|
-
The plugin will create a Role called `Discovery` when first started. This can
|
175
|
-
be assigned to roles for non-admins to allow them to use the discovery plugin.
|
176
|
-
Alternatively assign the `:perform_discovery` permission to an existing Role.
|
177
|
-
|
178
|
-
# Troubleshooting
|
179
|
-
|
180
|
-
If the booted machine fails to register with Foreman, then there are a number of common causes:
|
181
|
-
|
182
|
-
* Machine did not boot the correct image
|
183
|
-
* check your `pxelinux.cfg/default` has the right config as above
|
184
|
-
* Machine booted image but failed to contact Foreman
|
185
|
-
* Check the `foreman.url` option in `pxelinux.cfg/default` is correctly defined
|
186
|
-
* Check DNS is working for that image, or use an IP in `foreman.url`
|
187
|
-
* Check DHCP is handing IPs to the booted image correctly
|
188
|
-
|
189
|
-
To log in the running image you need to set root password which is locked by
|
190
|
-
default. In addition, you can enable ssh server as well. To do this, provide
|
191
|
-
the following kernel command line options:
|
192
|
-
|
193
|
-
APPEND ... fdi.ssh=1 fdi.rootpw=redhat
|
194
|
-
|
195
16
|
# API
|
196
17
|
|
197
18
|
see the [API README](README.api.md)
|
@@ -119,7 +119,7 @@ module Api
|
|
119
119
|
def auto_provision
|
120
120
|
@discovered_host.transaction do
|
121
121
|
if rule = find_discovery_rule(@discovered_host)
|
122
|
-
msg = _("Host %
|
122
|
+
msg = _("Host %{host} was provisioned with rule %{rule}") % {:host => @discovered_host.name, :rule => rule.name}
|
123
123
|
process_response perform_auto_provision(@discovered_host, rule), msg
|
124
124
|
else
|
125
125
|
process_success _("No rule found for host %s") % @discovered_host.name
|
@@ -135,7 +135,7 @@ module Api
|
|
135
135
|
result = true
|
136
136
|
error_message = _("Errors during auto provisioning: %s")
|
137
137
|
|
138
|
-
if
|
138
|
+
if Host::Discovered.count == 0
|
139
139
|
error_message = _("No discovered hosts to provision")
|
140
140
|
result = false
|
141
141
|
end
|
@@ -28,13 +28,13 @@ module Api
|
|
28
28
|
|
29
29
|
def_param_group :discovery_rule do
|
30
30
|
param :discovery_rule, Hash, :action_aware => true do
|
31
|
-
param :name, String, :required => true
|
32
|
-
param :search, String, :required => true
|
33
|
-
param :hostgroup_id, Integer, :required => true
|
34
|
-
param :hostname, String, :
|
35
|
-
param :max_count, Integer
|
36
|
-
param :priority, Integer
|
37
|
-
param :enabled, :bool
|
31
|
+
param :name, String, :required => true
|
32
|
+
param :search, String, :required => true
|
33
|
+
param :hostgroup_id, Integer, :required => true
|
34
|
+
param :hostname, String, :required => true
|
35
|
+
param :max_count, Integer
|
36
|
+
param :priority, Integer
|
37
|
+
param :enabled, :bool
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -48,7 +48,15 @@ module Api
|
|
48
48
|
|
49
49
|
api :PUT, "/discovery_rules/:id/", N_("Update a rule")
|
50
50
|
param :id, :identifier, :required => true
|
51
|
-
|
51
|
+
param :discovery_rule, Hash, :action_aware => true do
|
52
|
+
param :name, String, :required => true
|
53
|
+
param :search, String, :required => true
|
54
|
+
param :hostgroup_id, Integer, :required => true
|
55
|
+
param :hostname, String, :required => true
|
56
|
+
param :max_count, Integer
|
57
|
+
param :priority, Integer
|
58
|
+
param :enabled, :bool
|
59
|
+
end
|
52
60
|
|
53
61
|
def update
|
54
62
|
process_response @discovery_rule.update_attributes(params[:discovery_rule])
|
@@ -154,6 +154,13 @@ class DiscoveredHostsController < ::ApplicationController
|
|
154
154
|
|
155
155
|
def auto_provision_all
|
156
156
|
result = true
|
157
|
+
error_message = _("Errors during auto provisioning: %s")
|
158
|
+
|
159
|
+
if Host::Discovered.count == 0
|
160
|
+
error_message = _("No discovered hosts to provision")
|
161
|
+
result = false
|
162
|
+
end
|
163
|
+
|
157
164
|
Host.transaction do
|
158
165
|
overall_errors = ""
|
159
166
|
Host::Discovered.all.each do |discovered_host|
|
@@ -169,7 +176,7 @@ class DiscoveredHostsController < ::ApplicationController
|
|
169
176
|
if result
|
170
177
|
process_success :success_msg => _("Discovered hosts are provisioning now"), :success_redirect => :back
|
171
178
|
else
|
172
|
-
process_error :error_msg =>
|
179
|
+
process_error :error_msg => error_message % overall_errors, :redirect => :back
|
173
180
|
end
|
174
181
|
end
|
175
182
|
end
|
@@ -30,7 +30,7 @@ module DiscoveredHostsHelper
|
|
30
30
|
|
31
31
|
select_action_button( _("Select Action"), {:id => 'submit_multiple'},
|
32
32
|
actions.map do |action|
|
33
|
-
|
33
|
+
link_to_function(action[0], "build_modal(this, '#{action[1]}')", :'data-dialog-title' => _("%s - The following hosts are about to be changed") % action[0])
|
34
34
|
end.flatten
|
35
35
|
)
|
36
36
|
|
@@ -15,7 +15,6 @@ class DiscoveryRule < ActiveRecord::Base
|
|
15
15
|
validates :max_count, :numericality => { :only_integer => true, :greater_than_or_equal_to => 0 }
|
16
16
|
validates :priority, :presence => true, :numericality => { :only_integer => true, :greater_than_or_equal_to => 0 }
|
17
17
|
validates_lengths_from_database
|
18
|
-
before_validation :default_int_attributes
|
19
18
|
|
20
19
|
belongs_to :hostgroup
|
21
20
|
has_many :hosts
|
@@ -24,10 +23,4 @@ class DiscoveryRule < ActiveRecord::Base
|
|
24
23
|
scoped_search :on => :priority
|
25
24
|
scoped_search :on => :search
|
26
25
|
scoped_search :on => :enabled
|
27
|
-
scoped_search :in => :hostgroup, :on => :name, :complete_value => true, :rename => :hostgroup
|
28
|
-
|
29
|
-
def default_int_attributes
|
30
|
-
self.max_count ||= 0
|
31
|
-
self.priority ||= 0
|
32
|
-
end
|
33
26
|
end
|
@@ -9,8 +9,6 @@ class Host::Discovered < ::Host::Base
|
|
9
9
|
belongs_to :hostgroup
|
10
10
|
has_one :discovery_attribute_set, :foreign_key => :host_id, :dependent => :destroy
|
11
11
|
|
12
|
-
validates :mac, :uniqueness => true, :mac_address => true, :presence => true
|
13
|
-
validates :ip, :format => {:with => Net::Validations::IP_REGEXP}, :uniqueness => true
|
14
12
|
validates :discovery_attribute_set, :presence => true
|
15
13
|
|
16
14
|
delegate :memory, :cpu_count, :disk_count, :disks_size, :to => :discovery_attribute_set
|
@@ -92,8 +90,14 @@ class Host::Discovered < ::Host::Base
|
|
92
90
|
super
|
93
91
|
end
|
94
92
|
|
93
|
+
def setup_clone
|
94
|
+
# Nic::Managed needs this method but Discovered hosts shouldn't
|
95
|
+
# be doing orchestration anyway...
|
96
|
+
clone
|
97
|
+
end
|
98
|
+
|
95
99
|
def attributes_to_import_from_facts
|
96
|
-
super
|
100
|
+
super
|
97
101
|
end
|
98
102
|
|
99
103
|
def populate_fields_from_facts facts = self.facts_hash, type = 'puppet'
|
@@ -103,7 +107,7 @@ class Host::Discovered < ::Host::Base
|
|
103
107
|
else
|
104
108
|
importer = super(facts)
|
105
109
|
end
|
106
|
-
self.subnet = Subnet.subnet_for(
|
110
|
+
self.primary_interface.subnet = Subnet.subnet_for(self.primary_interface.ip)
|
107
111
|
self.discovery_attribute_set = DiscoveryAttributeSet.where(:host_id => id).first_or_create
|
108
112
|
self.discovery_attribute_set.update_attributes(import_from_facts)
|
109
113
|
self.save
|
@@ -178,4 +182,10 @@ class Host::Discovered < ::Host::Base
|
|
178
182
|
false
|
179
183
|
end
|
180
184
|
|
185
|
+
def lookup_value_match
|
186
|
+
# We don't really expect lookup values to be used to match discovered hosts,
|
187
|
+
# so simply put a string that won't match anything here
|
188
|
+
"discovery-not-matched"
|
189
|
+
end
|
190
|
+
|
181
191
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class ForemanDiscovery::HostConverter
|
2
2
|
|
3
|
-
# must be called from SQL transaction
|
3
|
+
# must be called from SQL transaction
|
4
4
|
def self.to_managed(original_host, set_managed = true, set_build = true)
|
5
5
|
if ActiveRecord::Base.connection.open_transactions <= 0
|
6
6
|
raise "This method must be executed with explicit transaction"
|
@@ -10,7 +10,7 @@ class ForemanDiscovery::HostConverter
|
|
10
10
|
# the following flags can be skipped when parameters are set to false
|
11
11
|
if set_managed
|
12
12
|
host.managed = set_managed
|
13
|
-
host.managed = set_managed
|
13
|
+
host.primary_interface.managed = set_managed
|
14
14
|
end
|
15
15
|
host.build = set_build if set_build
|
16
16
|
# this gets rolled back when anything in the transaction fails
|
@@ -2,9 +2,4 @@ object @discovery_rule
|
|
2
2
|
|
3
3
|
extends "api/v2/discovery_rules/base"
|
4
4
|
|
5
|
-
attributes :name, :enabled, :hostgroup_id, :
|
6
|
-
attribute :max_count => :hosts_limit
|
7
|
-
|
8
|
-
child :hosts do
|
9
|
-
extends "api/v2/discovered_hosts/base"
|
10
|
-
end
|
5
|
+
attributes :name, :enabled, :hostgroup_id, :hostname, :max_count, :priority, :search
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<td><%= link_to h(host.name), discovered_host_path(host) %></td>
|
1
|
+
<td><%= link_to trunc_with_tooltip(h(host.name)), discovered_host_path(host) %></td>
|
2
2
|
<td class="hidden-tablet hidden-xs"><%= model_name host %></td>
|
3
3
|
<td class="hidden-tablet hidden-xs"><%= host.ip %></td>
|
4
4
|
<td class="hidden-tablet hidden-xs"><%= discovery_attribute(host, :cpu_count) %></td>
|
@@ -35,7 +35,7 @@
|
|
35
35
|
<% if SETTINGS[:organizations_enabled] -%>
|
36
36
|
<td class="hidden-tablet hidden-xs"><%= host.organization.try(:name) %></td>
|
37
37
|
<% end -%>
|
38
|
-
<td class="hidden-tablet hidden-xs"><%= host.subnet %></td>
|
38
|
+
<td class="hidden-tablet hidden-xs"><%= host.primary_interface.try(:subnet) %></td>
|
39
39
|
<td class="hidden-tablet hidden-xs"><%= disc_report_column(host) %></td>
|
40
40
|
<td>
|
41
41
|
<%= action_buttons(
|
@@ -61,7 +61,7 @@
|
|
61
61
|
</div>
|
62
62
|
<div class="modal-footer">
|
63
63
|
<button type="button" class="btn btn-default" data-dismiss="modal"><%= _('Cancel') %></button>
|
64
|
-
<button type="button" class="btn btn-primary"><%= _('Submit') %></button>
|
64
|
+
<button type="button" class="btn btn-primary" onclick="submit_modal_form()"><%= _('Submit') %></button>
|
65
65
|
</div>
|
66
66
|
</div><!-- /.modal-content -->
|
67
67
|
</div><!-- /.modal-dialog -->
|
@@ -13,10 +13,10 @@
|
|
13
13
|
</tr>
|
14
14
|
<% for rule in @discovery_rules %>
|
15
15
|
<tr>
|
16
|
-
<td class='col-md-3 display-two-pane'><%= link_to_if_authorized(rule.name, hash_for_edit_discovery_rule_path(:id => rule).merge(:auth_object => rule, :authorizer => authorizer)) %></td>
|
16
|
+
<td class='col-md-3 display-two-pane'><%= link_to_if_authorized(trunc_with_tooltip(rule.name), hash_for_edit_discovery_rule_path(:id => rule).merge(:auth_object => rule, :authorizer => authorizer)) %></td>
|
17
17
|
<td><%= rule.priority %></td>
|
18
|
-
<td><%= rule.search %></td>
|
19
|
-
<td><%= rule.hostgroup
|
18
|
+
<td><%= trunc_with_tooltip(rule.search) %></td>
|
19
|
+
<td><%= label_with_link(rule.hostgroup, 26, authorizer) %></td>
|
20
20
|
<td><%= rule.hosts.count %> / <%= rule.max_count %></td>
|
21
21
|
<td><%= rule.enabled %></td>
|
22
22
|
<td><%= action_buttons(*permitted_discovery_actions(rule)) %></td>
|
@@ -37,7 +37,7 @@ module ForemanDiscovery
|
|
37
37
|
|
38
38
|
initializer 'foreman_discovery.register_plugin', :after=> :finisher_hook do |app|
|
39
39
|
Foreman::Plugin.register :foreman_discovery do
|
40
|
-
requires_foreman '
|
40
|
+
requires_foreman '>= 1.8.0'
|
41
41
|
|
42
42
|
# discovered hosts permissions
|
43
43
|
security_block :discovery do
|
@@ -106,6 +106,10 @@ module ForemanDiscovery
|
|
106
106
|
|
107
107
|
# add template helpers
|
108
108
|
allowed_template_helpers :rand
|
109
|
+
|
110
|
+
# apipie API documentation
|
111
|
+
# Only available in 1.8, otherwise it has to be in the initializer below
|
112
|
+
apipie_documented_controllers ["#{ForemanDiscovery::Engine.root}/app/controllers/api/v2/*.rb"]
|
109
113
|
end
|
110
114
|
end
|
111
115
|
|
@@ -114,13 +118,6 @@ module ForemanDiscovery
|
|
114
118
|
end
|
115
119
|
|
116
120
|
initializer "foreman_discovery.apipie" do
|
117
|
-
# this condition is here for compatibility reason to work with Foreman 1.4.x
|
118
|
-
# Also need to handle the reverse of the 1.8 method above
|
119
|
-
unless (SETTINGS[:version].to_s.include?('develop') or Gem::Version.new(SETTINGS[:version]) >= Gem::Version.new('1.8'))
|
120
|
-
if Apipie.configuration.api_controllers_matcher.is_a?(Array)
|
121
|
-
Apipie.configuration.api_controllers_matcher << "#{ForemanDiscovery::Engine.root}/app/controllers/api/v2/*.rb"
|
122
|
-
end
|
123
|
-
end
|
124
121
|
if Apipie.configuration.respond_to?(:checksum_path)
|
125
122
|
Apipie.configuration.checksum_path += ['/discovered_hosts/']
|
126
123
|
end
|