Sha256: e7488fcc7b0479cb09688f36eaa1d4186576f95a2b73f282eb99cd8d847e6c56
Contents?: true
Size: 1.16 KB
Versions: 2
Compression:
Stored size: 1.16 KB
Contents
# frozen_string_literal: true require 'resolv' module ForemanAnsible # Ensures Ansible reports from hosts where the IP was used, are assigned # to the right hostname in Foreman module AnsibleReportImporter extend ActiveSupport::Concern included do def host hostname = name.downcase if AnsibleReportScanner.ansible_report?(raw) && (Resolv::IPv4::Regex.match?(hostname) || Resolv::IPv6::Regex.match?(hostname)) && Nic::Interface.find_by(:ip => hostname) @host = Nic::Interface.find_by(:ip => hostname).host end super partial_hostname_match(hostname) end def self.authorized_smart_proxy_features super + ['Ansible'] end def partial_hostname_match(hostname) return @host unless @host.new_record? hosts = Host.where(Host.arel_table[:name].matches("#{hostname}.%")) if hosts.count > 1 msg = "More than 1 host found for name #{hostname}, " msg += 'please use host FQDN when uploading reports' Rails.logger.warn msg return @host end @host = hosts.first || @host end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
foreman_ansible-7.0.1 | app/services/foreman_ansible/ansible_report_importer.rb |
foreman_ansible-7.0.0 | app/services/foreman_ansible/ansible_report_importer.rb |