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
This commit is contained in:
@@ -233,7 +233,6 @@ def generate_from_manifest(args: argparse.Namespace, generator: RecipeGenerator)
|
||||
sys.exit(1)
|
||||
|
||||
# Track seen filenames to avoid overwriting duplicates
|
||||
seen_filenames = set()
|
||||
|
||||
# Generate all recipes
|
||||
for recipe_config in manifest.get('recipes', []):
|
||||
@@ -271,11 +270,6 @@ def generate_from_manifest(args: argparse.Namespace, generator: RecipeGenerator)
|
||||
output_path = args.output_dir / filename
|
||||
|
||||
|
||||
|
||||
if filename in seen_filenames:
|
||||
continue # Already generated this filename
|
||||
seen_filenames.add(filename)
|
||||
|
||||
if args.dry_run:
|
||||
print(f"Would generate: {output_path}")
|
||||
else:
|
||||
|
||||
@@ -6,6 +6,13 @@
|
||||
# - Single values: version: "43"
|
||||
# - List values: version: ["43", "rawhide"] (expands to multiple variants)
|
||||
# - List modifiers: hypervisor_type: ["amdcpu", "intelcpu"] (expands to separate variants)
|
||||
#
|
||||
# NOTE: List values create a cartesian product.
|
||||
# Example: version: ["43", "rawhide"] + storage: ["standard", "encrypted"]
|
||||
# creates 4 variants: (43,standard), (43,encrypted), (rawhide,standard), (rawhide,encrypted)
|
||||
#
|
||||
# NOTE: Boolean modifiers (guest-agents, hardware-support) only affect filename when True.
|
||||
# Multiple variants with False values will produce the same filename (last one wins).
|
||||
|
||||
recipes:
|
||||
# Install variants - desktop
|
||||
|
||||
@@ -8,17 +8,17 @@
|
||||
# An install recipe for desktop, server, or hypervisor
|
||||
|
||||
%include fragments/core/base.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/storage/standard.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/core/locale.ks
|
||||
%include fragments/core/services.ks
|
||||
%include fragments/core/network.ks
|
||||
%include fragments/packages/core-group.ks
|
||||
%include fragments/packages/fedora-remix.ks
|
||||
%include fragments/packages/hand-picked.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/desktop/gnome/config.ks
|
||||
%include fragments/desktop/gnome/packages.ks
|
||||
%include fragments/desktop/gnome/post-scripts.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/storage/standard.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/desktop/gnome/post-scripts.ks
|
||||
@@ -8,17 +8,18 @@
|
||||
# An install recipe for desktop, server, or hypervisor
|
||||
|
||||
%include fragments/core/base.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/storage/standard.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/core/locale.ks
|
||||
%include fragments/core/services.ks
|
||||
%include fragments/core/network.ks
|
||||
%include fragments/packages/core-group.ks
|
||||
%include fragments/packages/fedora-remix.ks
|
||||
%include fragments/packages/hand-picked.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/desktop/gnome/config.ks
|
||||
%include fragments/desktop/gnome/packages.ks
|
||||
%include fragments/desktop/gnome/post-scripts.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/storage/encrypted.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/storage/encrypted.ks
|
||||
@@ -8,17 +8,19 @@
|
||||
# An install recipe for desktop, server, or hypervisor
|
||||
|
||||
%include fragments/core/base.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/storage/standard.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/core/locale.ks
|
||||
%include fragments/core/services.ks
|
||||
%include fragments/core/network.ks
|
||||
%include fragments/packages/core-group.ks
|
||||
%include fragments/packages/fedora-remix.ks
|
||||
%include fragments/packages/hand-picked.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/desktop/gnome/config.ks
|
||||
%include fragments/desktop/gnome/packages.ks
|
||||
%include fragments/desktop/gnome/post-scripts.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/storage/encrypted.ks
|
||||
%include fragments/repo/rawhide-mirrors.ks
|
||||
@@ -8,17 +8,18 @@
|
||||
# An install recipe for desktop, server, or hypervisor
|
||||
|
||||
%include fragments/core/base.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/storage/standard.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/core/locale.ks
|
||||
%include fragments/core/services.ks
|
||||
%include fragments/core/network.ks
|
||||
%include fragments/packages/core-group.ks
|
||||
%include fragments/packages/fedora-remix.ks
|
||||
%include fragments/packages/hand-picked.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/desktop/gnome/config.ks
|
||||
%include fragments/desktop/gnome/packages.ks
|
||||
%include fragments/desktop/gnome/post-scripts.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/storage/standard.ks
|
||||
%include fragments/repo/rawhide-mirrors.ks
|
||||
@@ -0,0 +1,27 @@
|
||||
# __ ____ ____ _____
|
||||
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
|
||||
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
|
||||
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
|
||||
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
|
||||
# /_/ /____/
|
||||
|
||||
# An install recipe for desktop, server, or hypervisor
|
||||
|
||||
%include fragments/core/base.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/storage/standard.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/core/locale.ks
|
||||
%include fragments/core/services.ks
|
||||
%include fragments/core/network.ks
|
||||
%include fragments/packages/core-group.ks
|
||||
%include fragments/packages/fedora-remix.ks
|
||||
%include fragments/packages/hand-picked.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/desktop/gnome/config.ks
|
||||
%include fragments/desktop/gnome/packages.ks
|
||||
%include fragments/desktop/gnome/post-scripts.ks
|
||||
%include fragments/packages/virtual-machine-manager/packages.ks
|
||||
%include fragments/packages/virtual-machine-manager/post-scripts.ks
|
||||
%include fragments/hypervisor/amdcpu.ks
|
||||
@@ -0,0 +1,27 @@
|
||||
# __ ____ ____ _____
|
||||
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
|
||||
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
|
||||
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
|
||||
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
|
||||
# /_/ /____/
|
||||
|
||||
# An install recipe for desktop, server, or hypervisor
|
||||
|
||||
%include fragments/core/base.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/storage/standard.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/core/locale.ks
|
||||
%include fragments/core/services.ks
|
||||
%include fragments/core/network.ks
|
||||
%include fragments/packages/core-group.ks
|
||||
%include fragments/packages/fedora-remix.ks
|
||||
%include fragments/packages/hand-picked.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/desktop/gnome/config.ks
|
||||
%include fragments/desktop/gnome/packages.ks
|
||||
%include fragments/desktop/gnome/post-scripts.ks
|
||||
%include fragments/packages/virtual-machine-manager/packages.ks
|
||||
%include fragments/packages/virtual-machine-manager/post-scripts.ks
|
||||
%include fragments/hypervisor/intelcpu.ks
|
||||
@@ -0,0 +1,25 @@
|
||||
# __ ____ ____ _____
|
||||
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
|
||||
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
|
||||
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
|
||||
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
|
||||
# /_/ /____/
|
||||
|
||||
# An install recipe for desktop, server, or hypervisor
|
||||
|
||||
%include fragments/core/base.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/storage/standard.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/core/locale.ks
|
||||
%include fragments/core/services.ks
|
||||
%include fragments/core/network.ks
|
||||
%include fragments/packages/core-group.ks
|
||||
%include fragments/packages/fedora-remix.ks
|
||||
%include fragments/packages/hand-picked.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/hypervisor/base/packages.ks
|
||||
%include fragments/hypervisor/base/services.ks
|
||||
%include fragments/hypervisor/base/post-scripts.ks
|
||||
%include fragments/hypervisor/amdcpu.ks
|
||||
@@ -0,0 +1,25 @@
|
||||
# __ ____ ____ _____
|
||||
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
|
||||
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
|
||||
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
|
||||
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
|
||||
# /_/ /____/
|
||||
|
||||
# An install recipe for desktop, server, or hypervisor
|
||||
|
||||
%include fragments/core/base.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/storage/standard.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/core/locale.ks
|
||||
%include fragments/core/services.ks
|
||||
%include fragments/core/network.ks
|
||||
%include fragments/packages/core-group.ks
|
||||
%include fragments/packages/fedora-remix.ks
|
||||
%include fragments/packages/hand-picked.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/hypervisor/base/packages.ks
|
||||
%include fragments/hypervisor/base/services.ks
|
||||
%include fragments/hypervisor/base/post-scripts.ks
|
||||
%include fragments/hypervisor/intelcpu.ks
|
||||
@@ -0,0 +1,21 @@
|
||||
# __ ____ ____ _____
|
||||
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
|
||||
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
|
||||
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
|
||||
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
|
||||
# /_/ /____/
|
||||
|
||||
# An install recipe for desktop, server, or hypervisor
|
||||
|
||||
%include fragments/core/base.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/storage/standard.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/core/locale.ks
|
||||
%include fragments/core/services.ks
|
||||
%include fragments/core/network.ks
|
||||
%include fragments/packages/core-group.ks
|
||||
%include fragments/packages/fedora-remix.ks
|
||||
%include fragments/packages/hand-picked.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
@@ -0,0 +1,22 @@
|
||||
# __ ____ ____ _____
|
||||
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
|
||||
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
|
||||
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
|
||||
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
|
||||
# /_/ /____/
|
||||
|
||||
# An install recipe for desktop, server, or hypervisor
|
||||
|
||||
%include fragments/core/base.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/storage/standard.ks
|
||||
%include fragments/bootloader/grub.ks
|
||||
%include fragments/core/locale.ks
|
||||
%include fragments/core/services.ks
|
||||
%include fragments/core/network.ks
|
||||
%include fragments/packages/core-group.ks
|
||||
%include fragments/packages/fedora-remix.ks
|
||||
%include fragments/packages/hand-picked.ks
|
||||
%include fragments/core/security/enabled.ks
|
||||
%include fragments/initial-setup/server/config.ks
|
||||
%include fragments/repo/rawhide-mirrors.ks
|
||||
@@ -0,0 +1,20 @@
|
||||
# __ ____ ____ _____
|
||||
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
|
||||
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
|
||||
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
|
||||
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
|
||||
# /_/ /____/
|
||||
|
||||
# A live recipe for live-desktop or live-server
|
||||
|
||||
%include fragments/live/core/base.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/live/core/storage.ks
|
||||
%include fragments/live/core/bootloader/grub.ks
|
||||
%include fragments/core/locale.ks
|
||||
%include fragments/core/services.ks
|
||||
%include fragments/core/network.ks
|
||||
%include fragments/live/core/packages.ks
|
||||
%include fragments/live/post/base.ks
|
||||
%include fragments/live/post/session.ks
|
||||
%include fragments/repo/rpmfusion-nonfree.ks
|
||||
@@ -0,0 +1,20 @@
|
||||
# __ ____ ____ _____
|
||||
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
|
||||
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
|
||||
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
|
||||
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
|
||||
# /_/ /____/
|
||||
|
||||
# A live recipe for live-desktop or live-server
|
||||
|
||||
%include fragments/live/core/base.ks
|
||||
%include fragments/repo/fedora-43-mirrors.ks
|
||||
%include fragments/live/core/storage.ks
|
||||
%include fragments/live/core/bootloader/grub.ks
|
||||
%include fragments/core/locale.ks
|
||||
%include fragments/core/services.ks
|
||||
%include fragments/core/network.ks
|
||||
%include fragments/live/core/packages.ks
|
||||
%include fragments/live/post/base.ks
|
||||
%include fragments/live/post/session.ks
|
||||
%include fragments/repo/rpmfusion-nonfree.ks
|
||||
@@ -37,7 +37,7 @@ def test_validate_all_generated_recipes():
|
||||
"""Test validating all generated recipes."""
|
||||
# Count generated recipes
|
||||
recipe_count = len(list(RECIPE_DIR.glob('*.cfg')))
|
||||
assert recipe_count > 0, "No recipes generated"
|
||||
assert recipe_count > 0, f"Expected recipes, got {recipe_count}"
|
||||
|
||||
# Validate each recipe
|
||||
for recipe_file in RECIPE_DIR.glob('*.cfg'):
|
||||
|
||||
@@ -245,3 +245,25 @@ part / --fstype="ext4" --grow
|
||||
content = ""
|
||||
issues = self.generator.validate_recipe_semantic(content, '43')
|
||||
assert issues == []
|
||||
|
||||
def test_filename_generation_with_guest_agents(self):
|
||||
"""Test filename includes 'virtual' when guest_agents=True."""
|
||||
filename = self.generator.generate_filename('install', '43',
|
||||
variant_type='desktop',
|
||||
guest_agents=True)
|
||||
assert filename == 'install_virtual_desktop_43.cfg'
|
||||
|
||||
def test_filename_generation_with_hardware_support(self):
|
||||
"""Test filename includes 'hardware-support' when enabled."""
|
||||
filename = self.generator.generate_filename('install', '43',
|
||||
variant_type='desktop',
|
||||
hardware_support=True)
|
||||
assert filename == 'install_desktop_hardware-support_43.cfg'
|
||||
|
||||
def test_filename_generation_with_both_modifiers(self):
|
||||
"""Test filename includes both modifiers when enabled."""
|
||||
filename = self.generator.generate_filename('install', '43',
|
||||
variant_type='desktop',
|
||||
guest_agents=True,
|
||||
hardware_support=True)
|
||||
assert filename == 'install_virtual_desktop_hardware-support_43.cfg'
|
||||
|
||||
Reference in New Issue
Block a user