{"record":{"id":"775bd97d67c2884a","repo":"theforeman/foreman","slug":"mac-is-not-a-valid-mac-address","errorCode":null,"errorMessage":"'#{mac}' is not a valid MAC address","messagePattern":"'#(.+?)' is not a valid MAC address","errorType":"validation","errorClass":"Net::Validations::Error","httpStatus":null,"severity":"error","filePath":"app/lib/net/validations.rb","lineNumber":141,"sourceCode":"\n    def self.normalize_mac(mac)\n      return unless mac.present?\n      m = mac.downcase\n      case m\n        when /\\A[a-f0-9]{40}\\z/\n          m.gsub(/(..)/) { |mh| mh + \":\" }[/.{59}/]\n        when /\\A[a-f0-9]{12}\\z/\n          m.gsub(/(..)/) { |mh| mh + \":\" }[/.{17}/]\n        when /\\A([a-f0-9]{1,2}:){19}[a-f0-9]{1,2}\\z/\n          m.split(\":\").map { |nibble| \"%02x\" % (\"0x\" + nibble) }.join(\":\")\n        when /\\A([a-f0-9]{1,2}:){5}[a-f0-9]{1,2}\\z/\n          m.split(\":\").map { |nibble| \"%02x\" % (\"0x\" + nibble) }.join(\":\")\n        when /\\A([a-f0-9]{1,2}-){19}[a-f0-9]{1,2}\\z/\n          m.split(\"-\").map { |nibble| \"%02x\" % (\"0x\" + nibble) }.join(\":\")\n        when /\\A([a-f0-9]{1,2}-){5}[a-f0-9]{1,2}\\z/\n          m.split(\"-\").map { |nibble| \"%02x\" % (\"0x\" + nibble) }.join(\":\")\n        else\n          raise Error, \"'#{mac}' is not a valid MAC address\"\n      end\n    end\n\n    def self.normalize_hostname(hostname)\n      hostname.downcase! if hostname.present?\n      hostname\n    end\n  end\nend\n","sourceCodeStart":123,"sourceCodeEnd":151,"githubUrl":"https://github.com/theforeman/foreman/blob/6b05625475cfe6aac31a88f8c8ee6e62e4efe620/app/lib/net/validations.rb#L123-L151","documentation":"Error \"'#{mac}' is not a valid MAC address\" thrown in theforeman/foreman.","triggerScenarios":"Thrown at app/lib/net/validations.rb:141 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6b05625475cfe6aac31a88f8c8ee6e62e4efe620","analyzedAt":"2026-08-23T17:46:34.094Z","schemaVersion":2},"datasetVersion":"2026-08-23T21:17:23.414Z"}