Add YamlDefinitionUploader for AI Catalog YAML storage

What does this MR do and why?

Adds a CarrierWave uploader for storing AI Catalog YAML definitions in object storage:

  • Ai::Catalog::YamlDefinitionUploader with ObjectStorage::Concern
  • Storage location: :ai_catalog
  • Hashed path structure: yaml_definitions/<version_id> with root_hash: ai_catalog_item_id
  • Fixed filename: definition.yml

This is Part 2 of a series splitting up !227895 to add object storage support for large YAML definitions in the AI Catalog.

MR Series

MR Description Dependencies
1a !228120 (merged) - Database columns None
1b !228122 (merged) - Infrastructure (feature flag, object storage config) None
2 (this MR) YamlDefinitionUploader (CarrierWave uploader) 1b
3 Model layer: Mount uploader, add transparent accessor 1a, 2
4 Service layer & schema: Upload in services, make yaml_definition optional 3

Dependencies

This MR depends on !228122 (merged) (1b) being merged first, as it provides the storage_location :ai_catalog configuration.

Issue: #591638

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Merge request reports

Loading