{"record":{"id":"ac751aba044099f6","repo":"theforeman/foreman","slug":"attribute-model-is-required-in-metadata-in-order","errorCode":null,"errorMessage":"Attribute 'model' is required in metadata in order to seed the template","messagePattern":"Attribute 'model' is required in metadata in order to seed the template","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"lib/seed_helper.rb","lineNumber":107,"sourceCode":"          role.add_permissions(missing_permissions, :save! => true)\n        end\n\n        # The built in role may have additional permissions added to it by users.\n        # To remove permissions from the default role use an explicit migration.\n        return if role.builtin == Role::BUILTIN_DEFAULT_ROLE\n\n        extra_permissions = existing_permissions - desired_permissions\n        if extra_permissions.present?\n          role.remove_permissions!(extra_permissions)\n        end\n      end\n    end\n\n    def import_raw_template(contents, vendor = 'Foreman')\n      metadata = Template.parse_metadata(contents)\n      raise \"Metadata could not be parsed, it seems to be empty\" if metadata.empty?\n      raise \"Attribute 'name' is required in metadata in order to seed the template\" if metadata['name'].nil?\n      raise \"Attribute 'model' is required in metadata in order to seed the template\" if metadata['model'].nil?\n\n      name = metadata['name']\n      requirements = metadata['require'] || []\n\n      begin\n        model = metadata['model'].constantize\n      rescue NameError\n        logger.info(\"Unknown model #{metadata['model']} in template #{name}, skipping import.\")\n        return\n      end\n\n      # Skip templates with custom changes\n      return if audit_modified?(model, name)\n      # Skip templates that don't match requirements\n      return unless test_template_requirements(name, requirements)\n\n      t = model.import_without_save(name, contents, { :default => true, :lock => true, :associate => 'new' })\n      t.vendor = vendor","sourceCodeStart":89,"sourceCodeEnd":125,"githubUrl":"https://github.com/theforeman/foreman/blob/6b05625475cfe6aac31a88f8c8ee6e62e4efe620/lib/seed_helper.rb#L89-L125","documentation":"Error \"Attribute 'model' is required in metadata in order to seed the template\" thrown in theforeman/foreman.","triggerScenarios":"Thrown at lib/seed_helper.rb:107 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"}