I’ve opened a PR with some initial groundwork that will make the development of these proposed features much easier and which should provide some easier to use functionality for managing Apollo configuration updates in the future.
main
← rockythorn:feature/supported-products-admin-clean
opened 10:20PM - 10 Sep 25 UTC
# Apollo Supported Products Admin Interface
This PR introduces a comprehensiv… e admin interface for managing supported products configurations with enhanced functionality for bulk operations, dependency checking, and configuration generation. This is preparation for some additional changes proposed in [this Rocky Linux forum post](https://forums.rockylinux.org/t/apollo-errata-you-a-ciq-ospo-request-for-comment/18102/24).
## 🚀 Major Features Added
### 1. Complete Supported Products Admin Interface
- **New admin section** with full CRUD operations for products, mirrors, repositories, blocks, and overrides
- **Configuration import/export** functionality with JSON format support
- **Interactive management** with dedicated pages for each component
- **Validation and error handling** throughout the interface
### 2. Bulk Mirror Deletion with Safety Checks
- **Checkbox-based bulk selection** for efficient mirror management
- **Dependency validation** prevents deletion of mirrors with associated blocks/overrides
- **Confirmation dialogs** and detailed error reporting
- **Transaction safety** ensures data integrity during bulk operations
### 3. Enhanced Configuration Generator Script
- **New Rocky Linux configuration generator** (`scripts/generate_rocky_config.py`)
- **Intelligent crawling** discovers repository structures automatically
- **Architecture detection** with support for riscv64, i686, and other architectures
- **Name customization** via `--name-suffix` parameter for differentiated repository sets
- **Version-aware parsing** handles complex URL structures and version detection
## 📁 Files Added/Modified
### New Files (3,924+ lines added)
- `apollo/server/routes/admin_supported_products.py` - Core admin functionality (1,345 lines)
- `scripts/generate_rocky_config.py` - Repository configuration generator (582 lines)
- `apollo/tests/test_supported_products_logic.py` - Comprehensive test suite (411 lines)
- **8 new Jinja templates** for admin interface components (1,586+ lines total)
### Modified Files
- `apollo/server/templates/admin_layout.jinja` - Reduced sidebar padding for better layout
- `apollo/server/templates/admin_supported_products.jinja` - Fixed Export button overflow
- `apollo/server/routes/advisories.py` - Added supported products column
- `apollo/server/server.py` - Registered new admin routes
- `apollo/tests/BUILD.bazel` - Added test dependencies
## 🔧 Technical Improvements
### UI/UX Enhancements
- **Responsive table design** with horizontal scrolling for large datasets
- **Improved button layout** preventing overflow and wrapping issues
- **Better spacing** between sidebar and content areas
- **Consistent styling** using Carbon Design System components
### Data Safety & Validation
- **Cascade deletion prevention** for configurations with dependencies
- **Import validation** with detailed error reporting
- **Required field checking** across all forms
- **Bulk operation confirmation** with dependency warnings
### Testing Coverage
- **30+ test methods** covering configuration validation, bulk operations, and dependency checking
- **Self-contained tests** without FastAPI dependencies for reliability
- **Architecture-specific testing** for riscv64, i686 support
- **Edge case coverage** for parsing and validation logic
## 🏗️ Architecture Changes
### Database Operations
- Enhanced supported products management with proper relationship handling
- Improved query efficiency for bulk operations
- Better transaction management for complex operations
### Repository Management
- Intelligent repository discovery and configuration generation
- Support for complex mirror structures and versioning
- Enhanced URL parsing for various repository layouts
### Admin Interface
- Modular template structure for maintainability
- Consistent form handling and validation
- Proper error messaging and user feedback
## 📊 Impact Summary
- **18 files changed** with **3,924 additions** and **23 deletions**
- **Complete admin interface** for supported products management
- **Enhanced security** with dependency checking and validation
- **Improved efficiency** with bulk operations and automated generation
- **Better architecture support** including riscv64 and i686
- **Comprehensive testing** ensuring reliability and correctness
This PR significantly enhances the Apollo system's administrative capabilities while maintaining data integrity and providing a user-friendly interface for complex repository management tasks.
### While this PR is open, this code will be available to preview on https://apollo.ciq.dev