foreman_discovery 17.0.3 → 17.0.4

Sign up to get free protection for your applications and to get access to all the features.
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