diff --git a/internal/distro/fedora30/distro.go b/internal/distro/fedora30/distro.go index ba7fb2c23..7d101032f 100644 --- a/internal/distro/fedora30/distro.go +++ b/internal/distro/fedora30/distro.go @@ -22,6 +22,7 @@ type arch struct { Name string BootloaderPackages []string BuildPackages []string + UEFI bool } type output struct { @@ -33,7 +34,7 @@ type output struct { DisabledServices []string KernelOptions string Bootable bool - Assembler *pipeline.Assembler + Assembler func(uefi bool) *pipeline.Assembler } func New() *Fedora30 { @@ -75,7 +76,7 @@ func New() *Fedora30 { }, KernelOptions: "ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200", Bootable: true, - Assembler: r.qemuAssembler("raw.xz", "image.raw.xz"), + Assembler: func(uefi bool) *pipeline.Assembler { return r.qemuAssembler("raw.xz", "image.raw.xz", uefi) }, } r.outputs["ext4-filesystem"] = output{ @@ -94,7 +95,7 @@ func New() *Fedora30 { }, KernelOptions: "ro biosdevname=0 net.ifnames=0", Bootable: false, - Assembler: r.rawFSAssembler("filesystem.img"), + Assembler: func(uefi bool) *pipeline.Assembler { return r.rawFSAssembler("filesystem.img") }, } r.outputs["partitioned-disk"] = output{ @@ -113,7 +114,7 @@ func New() *Fedora30 { }, KernelOptions: "ro biosdevname=0 net.ifnames=0", Bootable: true, - Assembler: r.qemuAssembler("raw", "disk.img"), + Assembler: func(uefi bool) *pipeline.Assembler { return r.qemuAssembler("raw", "disk.img", uefi) }, } r.outputs["qcow2"] = output{ @@ -137,7 +138,7 @@ func New() *Fedora30 { }, KernelOptions: "ro biosdevname=0 net.ifnames=0", Bootable: true, - Assembler: r.qemuAssembler("qcow2", "disk.qcow2"), + Assembler: func(uefi bool) *pipeline.Assembler { return r.qemuAssembler("qcow2", "disk.qcow2", uefi) }, } r.outputs["openstack"] = output{ @@ -160,7 +161,7 @@ func New() *Fedora30 { }, KernelOptions: "ro biosdevname=0 net.ifnames=0", Bootable: true, - Assembler: r.qemuAssembler("qcow2", "image.qcow2"), + Assembler: func(uefi bool) *pipeline.Assembler { return r.qemuAssembler("qcow2", "image.qcow2", uefi) }, } r.outputs["tar"] = output{ @@ -179,7 +180,7 @@ func New() *Fedora30 { }, KernelOptions: "ro biosdevname=0 net.ifnames=0", Bootable: false, - Assembler: r.tarAssembler("root.tar.xz", "xz"), + Assembler: func(uefi bool) *pipeline.Assembler { return r.tarAssembler("root.tar.xz", "xz") }, } r.outputs["vhd"] = output{ @@ -201,7 +202,7 @@ func New() *Fedora30 { }, KernelOptions: "ro biosdevname=0 net.ifnames=0", Bootable: true, - Assembler: r.qemuAssembler("vpc", "image.vhd"), + Assembler: func(uefi bool) *pipeline.Assembler { return r.qemuAssembler("vpc", "image.vhd", uefi) }, } r.outputs["vmdk"] = output{ @@ -221,7 +222,7 @@ func New() *Fedora30 { }, KernelOptions: "ro biosdevname=0 net.ifnames=0", Bootable: true, - Assembler: r.qemuAssembler("vmdk", "disk.vmdk"), + Assembler: func(uefi bool) *pipeline.Assembler { return r.qemuAssembler("vmdk", "disk.vmdk", uefi) }, } return &r @@ -344,9 +345,9 @@ func (r *Fedora30) Pipeline(b *blueprint.Blueprint, additionalRepos []rpmmd.Repo } if output.Bootable { - p.AddStage(pipeline.NewFSTabStage(r.fsTabStageOptions())) + p.AddStage(pipeline.NewFSTabStage(r.fsTabStageOptions(arch.UEFI))) } - p.AddStage(pipeline.NewGRUB2Stage(r.grub2StageOptions(output.KernelOptions, b.GetKernel()))) + p.AddStage(pipeline.NewGRUB2Stage(r.grub2StageOptions(output.KernelOptions, b.GetKernel(), arch.UEFI))) if services := b.GetServices(); services != nil || output.EnabledServices != nil { p.AddStage(pipeline.NewSystemdStage(r.systemdStageOptions(output.EnabledServices, output.DisabledServices, services))) @@ -357,7 +358,7 @@ func (r *Fedora30) Pipeline(b *blueprint.Blueprint, additionalRepos []rpmmd.Repo } p.AddStage(pipeline.NewSELinuxStage(r.selinuxStageOptions())) - p.Assembler = output.Assembler + p.Assembler = output.Assembler(arch.UEFI) return p, nil } @@ -369,6 +370,7 @@ func (r *Fedora30) Runner() string { func (r *Fedora30) buildPipeline(arch arch, checksums map[string]string) *pipeline.Pipeline { packages := []string{ "dnf", + "dosfstools", "e2fsprogs", "policycoreutils", "qemu-img", @@ -495,13 +497,16 @@ func (r *Fedora30) systemdStageOptions(enabledServices, disabledServices []strin } } -func (r *Fedora30) fsTabStageOptions() *pipeline.FSTabStageOptions { +func (r *Fedora30) fsTabStageOptions(uefi bool) *pipeline.FSTabStageOptions { options := pipeline.FSTabStageOptions{} options.AddFilesystem("76a22bf4-f153-4541-b6c7-0332c0dfaeac", "ext4", "/", "defaults", 1, 1) + if uefi { + options.AddFilesystem("46BB-8120", "vfat", "/boot/efi", "umask=0077,shortname=winnt", 0, 2) + } return &options } -func (r *Fedora30) grub2StageOptions(kernelOptions string, kernel *blueprint.KernelCustomization) *pipeline.GRUB2StageOptions { +func (r *Fedora30) grub2StageOptions(kernelOptions string, kernel *blueprint.KernelCustomization, uefi bool) *pipeline.GRUB2StageOptions { id, err := uuid.Parse("76a22bf4-f153-4541-b6c7-0332c0dfaeac") if err != nil { panic("invalid UUID") @@ -511,10 +516,18 @@ func (r *Fedora30) grub2StageOptions(kernelOptions string, kernel *blueprint.Ker kernelOptions += " " + kernel.Append } + var uefiOptions *pipeline.GRUB2UEFI + if uefi { + uefiOptions = &pipeline.GRUB2UEFI{ + Vendor: "fedora", + } + } + return &pipeline.GRUB2StageOptions{ RootFilesystemUUID: id, KernelOptions: kernelOptions, - Legacy: true, + Legacy: !uefi, + UEFI: uefiOptions, } } @@ -524,9 +537,40 @@ func (r *Fedora30) selinuxStageOptions() *pipeline.SELinuxStageOptions { } } -func (r *Fedora30) qemuAssembler(format string, filename string) *pipeline.Assembler { - return pipeline.NewQEMUAssembler( - &pipeline.QEMUAssemblerOptions{ +func (r *Fedora30) qemuAssembler(format string, filename string, uefi bool) *pipeline.Assembler { + var options pipeline.QEMUAssemblerOptions + if uefi { + fstype := uuid.MustParse("C12A7328-F81F-11D2-BA4B-00A0C93EC93B") + options = pipeline.QEMUAssemblerOptions{ + Format: format, + Filename: filename, + Size: 3222274048, + PTUUID: "8DFDFF87-C96E-EA48-A3A6-9408F1F6B1EF", + PTType: "gpt", + Partitions: []pipeline.QEMUPartition{ + { + Start: 2048, + Size: 972800, + Type: &fstype, + Filesystem: pipeline.QEMUFilesystem{ + Type: "vfat", + UUID: "46BB-8120", + Label: "EFI System Partition", + Mountpoint: "/boot/efi", + }, + }, + { + Start: 976896, + Filesystem: pipeline.QEMUFilesystem{ + Type: "ext4", + UUID: "76a22bf4-f153-4541-b6c7-0332c0dfaeac", + Mountpoint: "/", + }, + }, + }, + } + } else { + options = pipeline.QEMUAssemblerOptions{ Format: format, Filename: filename, Size: 3222274048, @@ -543,8 +587,9 @@ func (r *Fedora30) qemuAssembler(format string, filename string) *pipeline.Assem }, }, }, - }, - ) + } + } + return pipeline.NewQEMUAssembler(&options) } func (r *Fedora30) tarAssembler(filename, compression string) *pipeline.Assembler { diff --git a/internal/jobqueue/api_test.go b/internal/jobqueue/api_test.go index 5661a0361..c834f974f 100644 --- a/internal/jobqueue/api_test.go +++ b/internal/jobqueue/api_test.go @@ -49,7 +49,7 @@ func TestCreate(t *testing.T) { } test.TestRoute(t, api, false, "POST", "/job-queue/v1/jobs", `{}`, http.StatusCreated, - `{"id":"ffffffff-ffff-ffff-ffff-ffffffffffff","pipeline":{"build":{"pipeline":{"stages":[{"name":"org.osbuild.dnf","options":{"repos":[{"metalink":"https://mirrors.fedoraproject.org/metalink?repo=fedora-30\u0026arch=x86_64","gpgkey":"-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFturGcBEACv0xBo91V2n0uEC2vh69ywCiSyvUgN/AQH8EZpCVtM7NyjKgKm\nbbY4G3R0M3ir1xXmvUDvK0493/qOiFrjkplvzXFTGpPTi0ypqGgxc5d0ohRA1M75\nL+0AIlXoOgHQ358/c4uO8X0JAA1NYxCkAW1KSJgFJ3RjukrfqSHWthS1d4o8fhHy\nKJKEnirE5hHqB50dafXrBfgZdaOs3C6ppRIePFe2o4vUEapMTCHFw0woQR8Ah4/R\nn7Z9G9Ln+0Cinmy0nbIDiZJ+pgLAXCOWBfDUzcOjDGKvcpoZharA07c0q1/5ojzO\n4F0Fh4g/BUmtrASwHfcIbjHyCSr1j/3Iz883iy07gJY5Yhiuaqmp0o0f9fgHkG53\n2xCU1owmACqaIBNQMukvXRDtB2GJMuKa/asTZDP6R5re+iXs7+s9ohcRRAKGyAyc\nYKIQKcaA+6M8T7/G+TPHZX6HJWqJJiYB+EC2ERblpvq9TPlLguEWcmvjbVc31nyq\nSDoO3ncFWKFmVsbQPTbP+pKUmlLfJwtb5XqxNR5GEXSwVv4I7IqBmJz1MmRafnBZ\ng0FJUtH668GnldO20XbnSVBr820F5SISMXVwCXDXEvGwwiB8Lt8PvqzXnGIFDAu3\nDlQI5sxSqpPVWSyw08ppKT2Tpmy8adiBotLfaCFl2VTHwOae48X2dMPBvQARAQAB\ntDFGZWRvcmEgKDMwKSA8ZmVkb3JhLTMwLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJbbqxnAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRDvPBEfz8ZZudTnD/9170LL3nyTVUCFmBjT9wZ4gYnpwtKVPa/pKnxbbS+Bmmac\ng9TrT9pZbqOHrNJLiZ3Zx1Hp+8uxr3Lo6kbYwImLhkOEDrf4aP17HfQ6VYFbQZI8\nf79OFxWJ7si9+3gfzeh9UYFEqOQfzIjLWFyfnas0OnV/P+RMQ1Zr+vPRqO7AR2va\nN9wg+Xl7157dhXPCGYnGMNSoxCbpRs0JNlzvJMuAea5nTTznRaJZtK/xKsqLn51D\nK07k9MHVFXakOH8QtMCUglbwfTfIpO5YRq5imxlWbqsYWVQy1WGJFyW6hWC0+RcJ\nOx5zGtOfi4/dN+xJ+ibnbyvy/il7Qm+vyFhCYqIPyS5m2UVJUuao3eApE38k78/o\n8aQOTnFQZ+U1Sw+6woFTxjqRQBXlQm2+7Bt3bqGATg4sXXWPbmwdL87Ic+mxn/ml\nSMfQux/5k6iAu1kQhwkO2YJn9eII6HIPkW+2m5N1JsUyJQe4cbtZE5Yh3TRA0dm7\n+zoBRfCXkOW4krchbgww/ptVmzMMP7GINJdROrJnsGl5FVeid9qHzV7aZycWSma7\nCxBYB1J8HCbty5NjtD6XMYRrMLxXugvX6Q4NPPH+2NKjzX4SIDejS6JjgrP3KA3O\npMuo7ZHMfveBngv8yP+ZD/1sS6l+dfExvdaJdOdgFCnp4p3gPbw5+Lv70HrMjA==\n=BfZ/\n-----END PGP PUBLIC KEY BLOCK-----\n","checksum":"test:foo"}],"packages":["dnf","e2fsprogs","grub2-pc","policycoreutils","qemu-img","systemd","tar"],"releasever":"30","basearch":"x86_64","module_platform_id":"platform:f30"}}]},"runner":"org.osbuild.fedora30"},"stages":[{"name":"org.osbuild.dnf","options":{"repos":[{"metalink":"https://mirrors.fedoraproject.org/metalink?repo=fedora-30\u0026arch=x86_64","gpgkey":"-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFturGcBEACv0xBo91V2n0uEC2vh69ywCiSyvUgN/AQH8EZpCVtM7NyjKgKm\nbbY4G3R0M3ir1xXmvUDvK0493/qOiFrjkplvzXFTGpPTi0ypqGgxc5d0ohRA1M75\nL+0AIlXoOgHQ358/c4uO8X0JAA1NYxCkAW1KSJgFJ3RjukrfqSHWthS1d4o8fhHy\nKJKEnirE5hHqB50dafXrBfgZdaOs3C6ppRIePFe2o4vUEapMTCHFw0woQR8Ah4/R\nn7Z9G9Ln+0Cinmy0nbIDiZJ+pgLAXCOWBfDUzcOjDGKvcpoZharA07c0q1/5ojzO\n4F0Fh4g/BUmtrASwHfcIbjHyCSr1j/3Iz883iy07gJY5Yhiuaqmp0o0f9fgHkG53\n2xCU1owmACqaIBNQMukvXRDtB2GJMuKa/asTZDP6R5re+iXs7+s9ohcRRAKGyAyc\nYKIQKcaA+6M8T7/G+TPHZX6HJWqJJiYB+EC2ERblpvq9TPlLguEWcmvjbVc31nyq\nSDoO3ncFWKFmVsbQPTbP+pKUmlLfJwtb5XqxNR5GEXSwVv4I7IqBmJz1MmRafnBZ\ng0FJUtH668GnldO20XbnSVBr820F5SISMXVwCXDXEvGwwiB8Lt8PvqzXnGIFDAu3\nDlQI5sxSqpPVWSyw08ppKT2Tpmy8adiBotLfaCFl2VTHwOae48X2dMPBvQARAQAB\ntDFGZWRvcmEgKDMwKSA8ZmVkb3JhLTMwLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJbbqxnAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRDvPBEfz8ZZudTnD/9170LL3nyTVUCFmBjT9wZ4gYnpwtKVPa/pKnxbbS+Bmmac\ng9TrT9pZbqOHrNJLiZ3Zx1Hp+8uxr3Lo6kbYwImLhkOEDrf4aP17HfQ6VYFbQZI8\nf79OFxWJ7si9+3gfzeh9UYFEqOQfzIjLWFyfnas0OnV/P+RMQ1Zr+vPRqO7AR2va\nN9wg+Xl7157dhXPCGYnGMNSoxCbpRs0JNlzvJMuAea5nTTznRaJZtK/xKsqLn51D\nK07k9MHVFXakOH8QtMCUglbwfTfIpO5YRq5imxlWbqsYWVQy1WGJFyW6hWC0+RcJ\nOx5zGtOfi4/dN+xJ+ibnbyvy/il7Qm+vyFhCYqIPyS5m2UVJUuao3eApE38k78/o\n8aQOTnFQZ+U1Sw+6woFTxjqRQBXlQm2+7Bt3bqGATg4sXXWPbmwdL87Ic+mxn/ml\nSMfQux/5k6iAu1kQhwkO2YJn9eII6HIPkW+2m5N1JsUyJQe4cbtZE5Yh3TRA0dm7\n+zoBRfCXkOW4krchbgww/ptVmzMMP7GINJdROrJnsGl5FVeid9qHzV7aZycWSma7\nCxBYB1J8HCbty5NjtD6XMYRrMLxXugvX6Q4NPPH+2NKjzX4SIDejS6JjgrP3KA3O\npMuo7ZHMfveBngv8yP+ZD/1sS6l+dfExvdaJdOdgFCnp4p3gPbw5+Lv70HrMjA==\n=BfZ/\n-----END PGP PUBLIC KEY BLOCK-----\n","checksum":"test:foo"}],"packages":["chrony","firewalld","kernel","langpacks-en","policycoreutils","selinux-policy-targeted"],"exclude_packages":["dracut-config-rescue"],"releasever":"30","basearch":"x86_64","module_platform_id":"platform:f30"}},{"name":"org.osbuild.fix-bls","options":{}},{"name":"org.osbuild.locale","options":{"language":"en_US"}},{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","kernel_opts":"ro biosdevname=0 net.ifnames=0","legacy":true}},{"name":"org.osbuild.selinux","options":{"file_contexts":"etc/selinux/targeted/contexts/files/file_contexts"}}],"assembler":{"name":"org.osbuild.tar","options":{"filename":"root.tar.xz","compression":"xz"}}},"targets":[],"output_type":"tar"}`, "created", "uuid") + `{"id":"ffffffff-ffff-ffff-ffff-ffffffffffff","pipeline":{"build":{"pipeline":{"stages":[{"name":"org.osbuild.dnf","options":{"repos":[{"metalink":"https://mirrors.fedoraproject.org/metalink?repo=fedora-30\u0026arch=x86_64","gpgkey":"-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFturGcBEACv0xBo91V2n0uEC2vh69ywCiSyvUgN/AQH8EZpCVtM7NyjKgKm\nbbY4G3R0M3ir1xXmvUDvK0493/qOiFrjkplvzXFTGpPTi0ypqGgxc5d0ohRA1M75\nL+0AIlXoOgHQ358/c4uO8X0JAA1NYxCkAW1KSJgFJ3RjukrfqSHWthS1d4o8fhHy\nKJKEnirE5hHqB50dafXrBfgZdaOs3C6ppRIePFe2o4vUEapMTCHFw0woQR8Ah4/R\nn7Z9G9Ln+0Cinmy0nbIDiZJ+pgLAXCOWBfDUzcOjDGKvcpoZharA07c0q1/5ojzO\n4F0Fh4g/BUmtrASwHfcIbjHyCSr1j/3Iz883iy07gJY5Yhiuaqmp0o0f9fgHkG53\n2xCU1owmACqaIBNQMukvXRDtB2GJMuKa/asTZDP6R5re+iXs7+s9ohcRRAKGyAyc\nYKIQKcaA+6M8T7/G+TPHZX6HJWqJJiYB+EC2ERblpvq9TPlLguEWcmvjbVc31nyq\nSDoO3ncFWKFmVsbQPTbP+pKUmlLfJwtb5XqxNR5GEXSwVv4I7IqBmJz1MmRafnBZ\ng0FJUtH668GnldO20XbnSVBr820F5SISMXVwCXDXEvGwwiB8Lt8PvqzXnGIFDAu3\nDlQI5sxSqpPVWSyw08ppKT2Tpmy8adiBotLfaCFl2VTHwOae48X2dMPBvQARAQAB\ntDFGZWRvcmEgKDMwKSA8ZmVkb3JhLTMwLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJbbqxnAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRDvPBEfz8ZZudTnD/9170LL3nyTVUCFmBjT9wZ4gYnpwtKVPa/pKnxbbS+Bmmac\ng9TrT9pZbqOHrNJLiZ3Zx1Hp+8uxr3Lo6kbYwImLhkOEDrf4aP17HfQ6VYFbQZI8\nf79OFxWJ7si9+3gfzeh9UYFEqOQfzIjLWFyfnas0OnV/P+RMQ1Zr+vPRqO7AR2va\nN9wg+Xl7157dhXPCGYnGMNSoxCbpRs0JNlzvJMuAea5nTTznRaJZtK/xKsqLn51D\nK07k9MHVFXakOH8QtMCUglbwfTfIpO5YRq5imxlWbqsYWVQy1WGJFyW6hWC0+RcJ\nOx5zGtOfi4/dN+xJ+ibnbyvy/il7Qm+vyFhCYqIPyS5m2UVJUuao3eApE38k78/o\n8aQOTnFQZ+U1Sw+6woFTxjqRQBXlQm2+7Bt3bqGATg4sXXWPbmwdL87Ic+mxn/ml\nSMfQux/5k6iAu1kQhwkO2YJn9eII6HIPkW+2m5N1JsUyJQe4cbtZE5Yh3TRA0dm7\n+zoBRfCXkOW4krchbgww/ptVmzMMP7GINJdROrJnsGl5FVeid9qHzV7aZycWSma7\nCxBYB1J8HCbty5NjtD6XMYRrMLxXugvX6Q4NPPH+2NKjzX4SIDejS6JjgrP3KA3O\npMuo7ZHMfveBngv8yP+ZD/1sS6l+dfExvdaJdOdgFCnp4p3gPbw5+Lv70HrMjA==\n=BfZ/\n-----END PGP PUBLIC KEY BLOCK-----\n","checksum":"test:foo"}],"packages":["dnf","dosfstools","e2fsprogs","grub2-pc","policycoreutils","qemu-img","systemd","tar"],"releasever":"30","basearch":"x86_64","module_platform_id":"platform:f30"}}]},"runner":"org.osbuild.fedora30"},"stages":[{"name":"org.osbuild.dnf","options":{"repos":[{"metalink":"https://mirrors.fedoraproject.org/metalink?repo=fedora-30\u0026arch=x86_64","gpgkey":"-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFturGcBEACv0xBo91V2n0uEC2vh69ywCiSyvUgN/AQH8EZpCVtM7NyjKgKm\nbbY4G3R0M3ir1xXmvUDvK0493/qOiFrjkplvzXFTGpPTi0ypqGgxc5d0ohRA1M75\nL+0AIlXoOgHQ358/c4uO8X0JAA1NYxCkAW1KSJgFJ3RjukrfqSHWthS1d4o8fhHy\nKJKEnirE5hHqB50dafXrBfgZdaOs3C6ppRIePFe2o4vUEapMTCHFw0woQR8Ah4/R\nn7Z9G9Ln+0Cinmy0nbIDiZJ+pgLAXCOWBfDUzcOjDGKvcpoZharA07c0q1/5ojzO\n4F0Fh4g/BUmtrASwHfcIbjHyCSr1j/3Iz883iy07gJY5Yhiuaqmp0o0f9fgHkG53\n2xCU1owmACqaIBNQMukvXRDtB2GJMuKa/asTZDP6R5re+iXs7+s9ohcRRAKGyAyc\nYKIQKcaA+6M8T7/G+TPHZX6HJWqJJiYB+EC2ERblpvq9TPlLguEWcmvjbVc31nyq\nSDoO3ncFWKFmVsbQPTbP+pKUmlLfJwtb5XqxNR5GEXSwVv4I7IqBmJz1MmRafnBZ\ng0FJUtH668GnldO20XbnSVBr820F5SISMXVwCXDXEvGwwiB8Lt8PvqzXnGIFDAu3\nDlQI5sxSqpPVWSyw08ppKT2Tpmy8adiBotLfaCFl2VTHwOae48X2dMPBvQARAQAB\ntDFGZWRvcmEgKDMwKSA8ZmVkb3JhLTMwLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJbbqxnAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRDvPBEfz8ZZudTnD/9170LL3nyTVUCFmBjT9wZ4gYnpwtKVPa/pKnxbbS+Bmmac\ng9TrT9pZbqOHrNJLiZ3Zx1Hp+8uxr3Lo6kbYwImLhkOEDrf4aP17HfQ6VYFbQZI8\nf79OFxWJ7si9+3gfzeh9UYFEqOQfzIjLWFyfnas0OnV/P+RMQ1Zr+vPRqO7AR2va\nN9wg+Xl7157dhXPCGYnGMNSoxCbpRs0JNlzvJMuAea5nTTznRaJZtK/xKsqLn51D\nK07k9MHVFXakOH8QtMCUglbwfTfIpO5YRq5imxlWbqsYWVQy1WGJFyW6hWC0+RcJ\nOx5zGtOfi4/dN+xJ+ibnbyvy/il7Qm+vyFhCYqIPyS5m2UVJUuao3eApE38k78/o\n8aQOTnFQZ+U1Sw+6woFTxjqRQBXlQm2+7Bt3bqGATg4sXXWPbmwdL87Ic+mxn/ml\nSMfQux/5k6iAu1kQhwkO2YJn9eII6HIPkW+2m5N1JsUyJQe4cbtZE5Yh3TRA0dm7\n+zoBRfCXkOW4krchbgww/ptVmzMMP7GINJdROrJnsGl5FVeid9qHzV7aZycWSma7\nCxBYB1J8HCbty5NjtD6XMYRrMLxXugvX6Q4NPPH+2NKjzX4SIDejS6JjgrP3KA3O\npMuo7ZHMfveBngv8yP+ZD/1sS6l+dfExvdaJdOdgFCnp4p3gPbw5+Lv70HrMjA==\n=BfZ/\n-----END PGP PUBLIC KEY BLOCK-----\n","checksum":"test:foo"}],"packages":["chrony","firewalld","kernel","langpacks-en","policycoreutils","selinux-policy-targeted"],"exclude_packages":["dracut-config-rescue"],"releasever":"30","basearch":"x86_64","module_platform_id":"platform:f30"}},{"name":"org.osbuild.fix-bls","options":{}},{"name":"org.osbuild.locale","options":{"language":"en_US"}},{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","kernel_opts":"ro biosdevname=0 net.ifnames=0","legacy":true}},{"name":"org.osbuild.selinux","options":{"file_contexts":"etc/selinux/targeted/contexts/files/file_contexts"}}],"assembler":{"name":"org.osbuild.tar","options":{"filename":"root.tar.xz","compression":"xz"}}},"targets":[],"output_type":"tar"}`, "created", "uuid") } func testUpdateTransition(t *testing.T, from, to string, expectedStatus int) { diff --git a/test/cases/ami_empty_blueprint.json b/test/cases/ami_empty_blueprint.json index cce3ffae8..789be7101 100644 --- a/test/cases/ami_empty_blueprint.json +++ b/test/cases/ami_empty_blueprint.json @@ -28,6 +28,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/disk_empty_blueprint.json b/test/cases/disk_empty_blueprint.json index f55a5e0c5..77989674b 100644 --- a/test/cases/disk_empty_blueprint.json +++ b/test/cases/disk_empty_blueprint.json @@ -25,6 +25,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/disk_local_boot.json b/test/cases/disk_local_boot.json index bb49826a8..4b1d634cf 100644 --- a/test/cases/disk_local_boot.json +++ b/test/cases/disk_local_boot.json @@ -53,6 +53,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/ext4_empty_blueprint.json b/test/cases/ext4_empty_blueprint.json index b810a89e1..3d67acc6f 100644 --- a/test/cases/ext4_empty_blueprint.json +++ b/test/cases/ext4_empty_blueprint.json @@ -25,6 +25,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/ext4_local_boot.json b/test/cases/ext4_local_boot.json index b8e1e9fd2..2465bf64f 100644 --- a/test/cases/ext4_local_boot.json +++ b/test/cases/ext4_local_boot.json @@ -53,6 +53,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/openstack_empty_blueprint.json b/test/cases/openstack_empty_blueprint.json index b7d72c58a..be183a83f 100644 --- a/test/cases/openstack_empty_blueprint.json +++ b/test/cases/openstack_empty_blueprint.json @@ -25,6 +25,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/openstack_local_boot.json b/test/cases/openstack_local_boot.json index b538358e6..371126db4 100644 --- a/test/cases/openstack_local_boot.json +++ b/test/cases/openstack_local_boot.json @@ -53,6 +53,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/qcow2_empty_blueprint.json b/test/cases/qcow2_empty_blueprint.json index 57c71dd03..a018fccdf 100644 --- a/test/cases/qcow2_empty_blueprint.json +++ b/test/cases/qcow2_empty_blueprint.json @@ -25,6 +25,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/qcow2_local_boot.json b/test/cases/qcow2_local_boot.json index 5e63198da..109fe6cb8 100644 --- a/test/cases/qcow2_local_boot.json +++ b/test/cases/qcow2_local_boot.json @@ -53,6 +53,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/tar_local_boot.json b/test/cases/tar_local_boot.json index 513bed4df..1ffc37dc4 100644 --- a/test/cases/tar_local_boot.json +++ b/test/cases/tar_local_boot.json @@ -53,6 +53,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/vhd_empty_blueprint.json b/test/cases/vhd_empty_blueprint.json index 8dd43e8f2..a677cfe61 100644 --- a/test/cases/vhd_empty_blueprint.json +++ b/test/cases/vhd_empty_blueprint.json @@ -25,6 +25,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/vhd_local_boot.json b/test/cases/vhd_local_boot.json index 1e9ca0703..be24216f0 100644 --- a/test/cases/vhd_local_boot.json +++ b/test/cases/vhd_local_boot.json @@ -53,6 +53,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/vmdk_empty_blueprint.json b/test/cases/vmdk_empty_blueprint.json index e464d5f0c..747956fd1 100644 --- a/test/cases/vmdk_empty_blueprint.json +++ b/test/cases/vmdk_empty_blueprint.json @@ -25,6 +25,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils", diff --git a/test/cases/vmdk_local_boot.json b/test/cases/vmdk_local_boot.json index ae213f9a3..01cb02cfc 100644 --- a/test/cases/vmdk_local_boot.json +++ b/test/cases/vmdk_local_boot.json @@ -53,6 +53,7 @@ ], "packages": [ "dnf", + "dosfstools", "e2fsprogs", "grub2-pc", "policycoreutils",