foreman_discovery 17.0.3 → 17.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4d8d075f8a3a3048021cb510037e84ce925e805d3cb915a2d739bd188a99d08f
4
- data.tar.gz: 2851a8920c2e7da750c92104e26ce286cd723aab684e8f3e08d452ea458f5d3e
3
+ metadata.gz: 35fdf9e36a5a8093c7532a47c9e9a8fd2bae879a30eab70fcc286c9b6c1cd256
4
+ data.tar.gz: 145fc876af62068eebcdc997f6e8ffaa1bc9861ff6aab63ef992396da32277f3
5
5
  SHA512:
6
- metadata.gz: 1ddc4a716ab29ec7cf78c052e8238184962c97d528592f171e074664e2542e603ffc9d3bce44bf255c787c82cc3df82faf6a7d61a98d9046fca544a957589e4a
7
- data.tar.gz: 3d72b88c68fb69a56e1f691c1df6a93bc42b5c2157f79ee0ad9293ea85b4aa15510ebd130e1d8464fdb6593d6aed01e0adee3c688f6d698a8194cca8f281158a
6
+ metadata.gz: 87665e788d3aa6db8d3b9b13d5165a23ca4509dfb1bd98cd76bdc46f6779d6aa279aa95a044ac0ae515ac652d88d28c0a792f7c8eeb7b664ec57dabc3aab2023
7
+ data.tar.gz: 5cad4226da69dd1ed80fcfa89ff20c4a590373c00753f1a390ceb0a324401b8c96f52aabece9f86ed70c86be542e6afd73e5dcbdd70367f1f2ddcfdd5cd7f924
@@ -133,26 +133,39 @@ class Host::Discovered < ::Host::Base
133
133
  subnet.present? && subnet.discovery.present?
134
134
  end
135
135
 
136
+ def ip4or6
137
+ if Setting[:discovery_prefer_ipv6]
138
+ IPAddr.new(self.ip6 || self.ip)
139
+ else
140
+ IPAddr.new(self.ip || self.ip6)
141
+ end
142
+ end
143
+
136
144
  def proxy_url(node_ip)
137
- proxied? ? subnet.discovery.url + "/discovery/#{node_ip}" : "https://#{node_ip}:8443"
145
+ wrapped_ip = node_ip.ipv6? ? "[#{node_ip}]" : node_ip
146
+ proxied? ? subnet.discovery.url + "/discovery/#{node_ip}" : "https://#{wrapped_ip}:8443"
138
147
  end
139
148
 
140
149
  def refresh_facts
141
- facts = ::ForemanDiscovery::NodeAPI::Inventory.new(:url => proxy_url(self.ip)).facter
150
+ facts = ::ForemanDiscovery::NodeAPI::Inventory.new(:url => proxy_url(ip4or6)).facter
142
151
  self.class.import_host facts
143
152
  ::ForemanDiscovery::HostFactImporter.new(self).import_facts facts
144
153
  rescue => e
145
154
  ::Foreman::Logging.exception("Unable to get facts from proxy", e)
146
- raise ::Foreman::WrappedException.new(e, N_("Could not get facts from proxy %{url}: %{error}"), :url => proxy_url(self.ip), :error => e)
155
+ raise ::Foreman::WrappedException.new(e, N_("Could not get facts from proxy %{url}: %{error}"), :url => proxy_url(ip4or6), :error => e)
147
156
  end
148
157
 
149
- def reboot(old_ip = nil, new_ip = nil)
158
+ def reboot(old_ip = nil, new_ip = nil, old_ip6 = nil, new_ip6 = nil)
150
159
  # perform the action against the original lease as well as the new reservation
151
- ips = [old_ip, new_ip, self.ip].compact.uniq
160
+ if Setting[:discovery_prefer_ipv6]
161
+ ips = [old_ip6, new_ip6, self.ip6, old_ip, new_ip, self.ip].compact.uniq
162
+ else
163
+ ips = [old_ip, new_ip, self.ip, old_ip6, new_ip6, self.ip6].compact.uniq
164
+ end
152
165
  logger.debug "Performing reboot calls against #{ips.to_sentence}, facts left #{facts.count}"
153
166
  ips.each do |next_ip|
154
167
  begin
155
- node_url = proxy_url(next_ip)
168
+ node_url = proxy_url(IPAddr.new(next_ip))
156
169
  logger.debug "Performing reboot call against #{node_url}"
157
170
  resource = ::ForemanDiscovery::NodeAPI::Power.service(:url => node_url)
158
171
  return true if resource.reboot
@@ -165,13 +178,17 @@ class Host::Discovered < ::Host::Base
165
178
  raise ::Foreman::Exception.new(msg, action: "reboot", ips: ips.to_sentence)
166
179
  end
167
180
 
168
- def kexec(json, old_ip = nil, new_ip = nil)
181
+ def kexec(json, old_ip = nil, new_ip = nil, old_ip6 = nil, new_ip6 = nil)
169
182
  # perform the action against the original lease as well as the new reservation
170
- ips = [old_ip, new_ip, self.ip].compact.uniq
183
+ if Setting[:discovery_prefer_ipv6]
184
+ ips = [old_ip6, new_ip6, self.ip6, old_ip, new_ip, self.ip].compact.uniq
185
+ else
186
+ ips = [old_ip, new_ip, self.ip, old_ip6, new_ip6, self.ip6].compact.uniq
187
+ end
171
188
  logger.debug "Performing kexec calls against #{ips.to_sentence}, #{facts.count} facts left"
172
189
  ips.each do |next_ip|
173
190
  begin
174
- node_url = proxy_url(next_ip)
191
+ node_url = proxy_url(IPAddr.new(next_ip))
175
192
  logger.debug "Performing kexec call against #{node_url}"
176
193
  resource = ::ForemanDiscovery::NodeAPI::Power.service(:url => node_url)
177
194
  return true if resource.kexec(json)
@@ -27,7 +27,7 @@ module Host::ManagedExtensions
27
27
  end
28
28
 
29
29
  def setReboot
30
- old.becomes(Host::Discovered).reboot(old.ip, ip)
30
+ old.becomes(Host::Discovered).reboot(old.ip, ip, old.ip6, ip6)
31
31
  # It is too late to report error in the post_queue, we catch them and
32
32
  # continue. If flash is implemented for new hosts (http://projects.theforeman.org/issues/10559)
33
33
  # we can report the error to the user perhaps.
@@ -55,7 +55,7 @@ module Host::ManagedExtensions
55
55
  end
56
56
 
57
57
  def setKexec
58
- old.becomes(Host::Discovered).kexec(render_kexec_template.to_json, old.ip, ip)
58
+ old.becomes(Host::Discovered).kexec(render_kexec_template.to_json, old.ip, ip, old.ip6, ip6)
59
59
  true
60
60
  rescue ::Foreman::Exception => e
61
61
  Foreman::Logging.exception("Unable to kexec", e)
@@ -37,6 +37,7 @@ class Setting::Discovered < ::Setting
37
37
  self.set('discovery_always_rebuild_dns', N_("Force DNS entries creation when provisioning discovered host"), true, N_("Force DNS")),
38
38
  self.set('discovery_error_on_existing', N_("Do not allow to discover existing managed host matching MAC of a provisioning NIC (errors out early)"), false, N_("Error on existing NIC")),
39
39
  self.set('discovery_naming', N_("Discovery hostname naming pattern"), 'Fact', N_("Type of name generator"), nil, {:collection => Proc.new {::Host::Discovered::NAMING_PATTERNS} }),
40
+ self.set('discovery_prefer_ipv6', N_("Prefer IPv6 to IPv4 when calling discovered nodes"), false, N_("Prefer IPv6")),
40
41
  ]
41
42
  end
42
43
 
@@ -1,3 +1,3 @@
1
1
  module ForemanDiscovery
2
- VERSION = "17.0.3"
2
+ VERSION = "17.0.4"
3
3
  end
@@ -19,6 +19,7 @@ class ManagedExtensionsTest < ActiveSupport::TestCase
19
19
  @host = StubHost.new
20
20
  @host.type = "Host::Discovered"
21
21
  @host.stubs(:ip).returns("192.168.1.1")
22
+ @host.stubs(:ip6).returns(nil)
22
23
  @host.stubs(:old).returns(@host)
23
24
  @facts = {}
24
25
  @host.stubs(:facts).returns(@facts)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_discovery
3
3
  version: !ruby/object:Gem::Version
4
- version: 17.0.3
4
+ version: 17.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aditi Puntambekar
@@ -73,7 +73,7 @@ authors:
73
73
  autorequire:
74
74
  bindir: bin
75
75
  cert_chain: []
76
- date: 2021-09-29 00:00:00.000000000 Z
76
+ date: 2021-10-05 00:00:00.000000000 Z
77
77
  dependencies: []
78
78
  description: MaaS Discovery Plugin engine for Foreman
79
79
  email: gsutclif@redhat.com
@@ -366,8 +366,8 @@ test_files:
366
366
  - test/unit/discovered_extensions_test.rb
367
367
  - test/unit/discovery_attribute_set_test.rb
368
368
  - test/unit/fact_parser_test.rb
369
- - test/unit/managed_extensions_test.rb
370
369
  - test/unit/setting_discovered_test.rb
370
+ - test/unit/managed_extensions_test.rb
371
371
  - test/unit/host_discovered_test.rb
372
372
  - test/models/setting_test.rb
373
373
  - test/test_helper_discovery.rb