Commit Graph
17 Commits
Author SHA1 Message Date
Lukas Greve 81c8392874 refactor: Remove filename deduplication to generate all 24 variants
- Removed deduplication logic from cli.py
- All 24 variants now processed (some overwrite with same filename)
- manifests: Added comments explaining cartesian product and filename behavior
- tests: Updated assertions for correct filename generation order
- Added 3 new tests for guest_agents and hardware_support modifiers
2026-03-26 15:53:50 +01:00
Lukas Greve 898c831065 refactor: Modularize recipe generator
- Split generate_recipe.py into cli.py, recipe_generator.py, validators.py, manifest.py
- Removed override logic - modifiers now add fragments rather than replace
- Added filename deduplication to prevent overwriting recipes
- Updated CI workflows and tests to use new module structure
- Made pykickstart a hard dependency
- Removed ingredients/ directory support (only fragments/*.ks now used)
- New layout: 5 modules (~990 lines) vs single 769-line file
2026-03-26 15:31:18 +01:00
Lukas Greve 8f824cb977 Remove deprecated command tracking from generate_recipe
- Remove DEPRECATED_COMMANDS dictionary
- Remove _check_deprecated_commands() method
- Remove deprecated command checks from validation
- Remove test methods for deprecated commands
- Remove DEPRECATED_COMMANDS documentation reference

This shifts responsibility for tracking deprecated kickstart commands away
from the recipe generator, as this is not its primary role.
2026-03-26 14:29:22 +01:00
Lukas Greve d93e84cb09 Fix duplicate storage partitioning when storage=encrypted is defined 2026-03-26 14:13:01 +01:00
Lukas Greve 7f2f150fd2 Automate flattening: convert %ksappend to %include for ksflatten compatibility 2026-03-26 14:04:52 +01:00
Lukas Greve 8c0c3907d4 minor change for where the bootloader is 2026-03-26 11:19:09 +01:00
Lukas Greve f6809e8756 Make initial-setup required in install template, with server as default
- Add initial-setup to required section in install template
- Default: fragments/initial-setup/server/config.ks
- Override: fragments/initial-setup/{desktop|gnome|generic-wayland}/config.ks
- Add initial-setup to override_keys set
2026-03-26 11:09:28 +01:00
Lukas Greve b97b9bb919 Make version required in core, with 43 as default
- Add version to required section in install and live templates
- Set 43 as default version (overridable via modifiers)
- Update CLI default from rawhide to 43
2026-03-26 11:06:29 +01:00
Lukas Greve c2829dc614 Add bootloader modifier to install template
- Add bootloader modifier following security pattern (override, not additive)
- Supports 'grub' and 'systemd-boot' options
- Default uses grub from required, override via modifier

Closes #issue
2026-03-26 10:57:42 +01:00
Lukas Greve 9c905ee3de Move security from modifiers to required in install template
- Security is now enabled by default in all install recipes
- Add override handling to skip required fragment when modifier sets security
- Fix modifier key lookup to handle both hyphen and underscore keys

Closes #issue
2026-03-26 10:49:45 +01:00
Lukas Greve 91cb314467 Reduces the number of generated variants 2026-03-26 10:39:46 +01:00
Lukas Greve c193914435 Fix duplicate recipe filenames by adding hardware-support, guest-agents, and hypervisor-type suffixes
Previously, list modifiers like hardware-support, guest-agents, and hypervisor-type created multiple variants but overwrote the same filenames. Now:

1. Add '_hw' suffix when hardware-support is enabled
2. Add '_ga' suffix when guest-agents is enabled
3. Add CPU type (amdcpu, intelcpu) suffix for hypervisor variants
4. Normalize modifier names from hypervisor-type to hypervisor_type

This ensures all 144 recipes have unique filenames.
2026-03-26 10:34:35 +01:00
Lukas Greve cd203b8799 Refactor security and guest-agents config
- Move guest-agents from hypervisor modifier to independent optional feature
- Merge guest-agents/gui.ks into base.ks
- Remove security from required, add optional security modifier with off option
- Fix hypervisor-type modifier key normalization (underscore→hyphen)
- Add expand_variants() to handle list values in manifest
- Update all tests and expected recipes
2026-03-25 21:18:01 +01:00
Lukas Greve 5b8974a6ed hypervisor: implement base vs desktop variants with GUI packages only for desktop
- Split guest-agents/packages.ks into base.ks (qemu-guest-agent) and gui.ks (spice-vdagent)
- Move hypervisor modifier from variant_type.hypervisor to dedicated modifier section
- Added hypervisor modifier with base (headless) and desktop (GUI) options
- Create hypervisor-desktop variant with desktop: gnome for GUI hypervisors
- Update generate_recipe.py to recognize hypervisor-desktop variant name

This ensures GUI packages (virt-manager, spice-vdagent) are only included
in hypervisors with desktop environments, keeping headless hypervisors minimal.
2026-03-25 20:06:13 +01:00
Lukas Greve 0843127d6a Reorganize fragments: flat structure from fragments/shared/ and fragments/platform/ 2026-03-25 19:40:07 +01:00
Lukas Greve 520657dcee recipe-generator: Update to new template structure with install and live templates
- Replaced individual templates with unified 'install' (desktop, server, hypervisor) and 'live' (live-desktop, live-server) templates

- Added new modifiers: variant_type, hypervisor-type, desktop, initial-setup, virtualization

- Updated generate_recipe.py to handle new modifier structure with additive flags

- Updated recipes_manifest.yaml with new modifier structure

- Added missing fragment files and directories
2026-03-25 19:15:32 +01:00
Lukas Greve 3782777058 refactor: functional separation with deploy/, recipe-generator/, and bin/
- deploy/: deployment bash scripts (4 files)
- recipe-generator/: recipe generation tool (Python + YAML configs)
- bin/: executable wrappers (single generate-recipe entry point)
- Updated deploy.sh, README.md, DEVELOPMENT.md, DEVELOPMENT_QUICK.md
- Updated tests/test_recipe_generator.py and tests/integration/test_integration.py
- Updated CI workflow and Makefile paths
- All 41 tests pass
2026-03-25 09:34:00 +01:00