{"record":{"id":"3cbbe80edc278387","repo":"CanineHQ/canine","slug":"no-installer-registered-for-package-name","errorCode":null,"errorMessage":"No installer registered for package: #{name}","messagePattern":"No installer registered for package: #(.+?)","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"app/models/cluster_package.rb","lineNumber":57,"sourceCode":"  after_update_commit :broadcast_package\n\n  DEFINITIONS = YAML.load_file(Rails.root.join(\"resources\", \"helm\", \"system_packages.yml\"))[\"packages\"]\n\n  INSTALLER_REGISTRY = {\n    \"traefik-ingress\" => \"ClusterPackage::Installer::TraefikIngress\",\n    \"nginx-ingress\" => \"ClusterPackage::Installer::NginxIngress\",\n    \"cert-manager\" => \"ClusterPackage::Installer::CertManager\",\n    \"metrics-server\" => \"ClusterPackage::Installer::MetricsServer\",\n    \"telepresence\" => \"ClusterPackage::Installer::Telepresence\",\n    \"cloudflared\" => \"ClusterPackage::Installer::Cloudflared\"\n  }.freeze\n\n  def definition\n    DEFINITIONS.find { |d| d[\"name\"] == name }\n  end\n\n  def installer\n    class_name = INSTALLER_REGISTRY.fetch(name) { raise \"No installer registered for package: #{name}\" }\n    class_name.constantize.new(self)\n  end\n\n  def configurable?\n    definition&.dig(\"template\").present?\n  end\n\n  def self.definitions\n    DEFINITIONS\n  end\n\n  def self.default_package_names\n    DEFINITIONS.select { |d| d[\"default\"] }.map { |d| d[\"name\"] }\n  end\n\n  def self.permitted_config_keys(package_name)\n    defn = DEFINITIONS.find { |d| d[\"name\"] == package_name }\n    defn&.dig(\"template\")&.map { |field| field[\"key\"] } || []","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/CanineHQ/canine/blob/ba4ee3968d8513ee27d8583fbd3e854a8dd053f3/app/models/cluster_package.rb#L39-L75","documentation":"Error \"No installer registered for package: #{name}\" thrown in CanineHQ/canine.","triggerScenarios":"Thrown at app/models/cluster_package.rb:57 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":"ba4ee3968d8513ee27d8583fbd3e854a8dd053f3","analyzedAt":"2026-08-23T17:49:27.834Z","schemaVersion":2},"datasetVersion":"2026-08-23T21:17:23.414Z"}