diff --git a/app/models/operating_system.rb b/app/models/operating_system.rb index 233b5cb6d40..bf76d2ffe82 100644 --- a/app/models/operating_system.rb +++ b/app/models/operating_system.rb @@ -28,7 +28,7 @@ class OperatingSystem < ApplicationRecord ["linux_debian", %w[debian]], ["linux_esx", %w[vmnixx86 vmwareesxserver esxserver vmwareesxi]], ["linux_solaris", %w[solaris]], - ["linux_oracle", %w[oracle]], + ["linux_oracle", ["oracle", /^ol/]], ["linux_photon", %w[photon]], ["linux_generic", %w[linux]], ["unix_aix", %w[aix vios]], @@ -79,7 +79,10 @@ def self.normalize_os_name(os_name) clean_os_name = os_name.downcase.gsub(/[^a-z0-9]/, "") OS_MAP.each do |normalized_name, candidate_names| candidate_names.each do |candidate| - return normalized_name if clean_os_name.include?(candidate) + if (candidate.kind_of?(String) && clean_os_name.include?(candidate)) || + (candidate.kind_of?(Regexp) && clean_os_name.match?(candidate)) + return normalized_name + end end end "unknown" diff --git a/spec/models/operating_system_spec.rb b/spec/models/operating_system_spec.rb index eeb4a7a92e9..4fff6587943 100644 --- a/spec/models/operating_system_spec.rb +++ b/spec/models/operating_system_spec.rb @@ -15,6 +15,8 @@ "linux debian" => "linux_debian", "redhat coreos" => "linux_coreos", "rhcos-4.11.2" => "linux_coreos", + "ol_8x64" => "linux_oracle", + "oracle" => "linux_oracle" }.each do |image, expected| it "normalizes #{image}" do expect(described_class.normalize_os_name(image)).to eq(expected)