From 18971bd8effd0cd63e2186af020a61332660b70b Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Thu, 12 Dec 2019 19:20:57 +0100 Subject: [PATCH] pipeline/stage/grub2: support explicit legacy/uefi API This allows legacy bootloader and UEFI bootloaders to be enabled/disabled independently of each other. Signed-off-by: Tom Gundersen --- internal/distro/fedora30/distro.go | 1 + internal/distro/rhel82/distro.go | 1 + internal/jobqueue/api_test.go | 2 +- internal/pipeline/grub2_stage.go | 30 +++++------------------ internal/pipeline/stage_test.go | 19 ++++++++++++-- test/cases/ami_empty_blueprint.json | 3 ++- test/cases/disk_empty_blueprint.json | 3 ++- test/cases/disk_local_boot.json | 3 ++- test/cases/ext4_empty_blueprint.json | 3 ++- test/cases/ext4_local_boot.json | 3 ++- test/cases/openstack_empty_blueprint.json | 3 ++- test/cases/openstack_local_boot.json | 3 ++- test/cases/qcow2_empty_blueprint.json | 3 ++- test/cases/qcow2_local_boot.json | 3 ++- test/cases/rhel82_ami.json | 3 ++- test/cases/rhel82_ext4_filesystem.json | 3 ++- test/cases/rhel82_openstack.json | 3 ++- test/cases/rhel82_partitioned_disk.json | 3 ++- test/cases/rhel82_qcow2.json | 3 ++- test/cases/rhel82_tar.json | 3 ++- test/cases/rhel82_vhd.json | 3 ++- test/cases/rhel82_vmdk.json | 3 ++- test/cases/tar_local_boot.json | 3 ++- test/cases/vhd_empty_blueprint.json | 3 ++- test/cases/vhd_local_boot.json | 3 ++- test/cases/vmdk_empty_blueprint.json | 3 ++- test/cases/vmdk_local_boot.json | 3 ++- 27 files changed, 70 insertions(+), 49 deletions(-) diff --git a/internal/distro/fedora30/distro.go b/internal/distro/fedora30/distro.go index 44d5d620c..4fc936c9a 100644 --- a/internal/distro/fedora30/distro.go +++ b/internal/distro/fedora30/distro.go @@ -513,6 +513,7 @@ func (r *Fedora30) grub2StageOptions(kernelOptions string, kernel *blueprint.Ker return &pipeline.GRUB2StageOptions{ RootFilesystemUUID: id, KernelOptions: kernelOptions, + Legacy: true, } } diff --git a/internal/distro/rhel82/distro.go b/internal/distro/rhel82/distro.go index bcc15ff7f..5583ea611 100644 --- a/internal/distro/rhel82/distro.go +++ b/internal/distro/rhel82/distro.go @@ -590,6 +590,7 @@ func (r *RHEL82) grub2StageOptions(kernelOptions string) *pipeline.GRUB2StageOpt return &pipeline.GRUB2StageOptions{ RootFilesystemUUID: id, KernelOptions: kernelOptions, + Legacy: true, } } diff --git a/internal/jobqueue/api_test.go b/internal/jobqueue/api_test.go index e81ef4bda..a078e2b2d 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"}}]},"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"}},{"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"}},{"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","e2fsprogs","grub2-pc","policycoreutils","qemu-img","systemd","tar"],"releasever":"30","basearch":"x86_64"}}]},"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"}},{"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/internal/pipeline/grub2_stage.go b/internal/pipeline/grub2_stage.go index b4bf557e9..64fd69eee 100644 --- a/internal/pipeline/grub2_stage.go +++ b/internal/pipeline/grub2_stage.go @@ -14,19 +14,16 @@ type GRUB2StageOptions struct { RootFilesystemUUID uuid.UUID `json:"root_fs_uuid"` BootFilesystemUUID *uuid.UUID `json:"boot_fs_uuid,omitempty"` KernelOptions string `json:"kernel_opts,omitempty"` + Legacy bool `json:"legacy"` + UEFI *GRUB2UEFI `json:"uefi,omitempty"` +} + +type GRUB2UEFI struct { + Vendor string `json:"vendor"` } func (GRUB2StageOptions) isStageOptions() {} -// NewGRUB2StageOptions creates a new GRUB2StageOptions object. It sets the -// mandatory options. -func NewGRUB2StageOptions(rootFilesystemUUID uuid.UUID) *GRUB2StageOptions { - return &GRUB2StageOptions{ - RootFilesystemUUID: rootFilesystemUUID, - } - -} - // NewGRUB2Stage creates a new GRUB2 stage object. func NewGRUB2Stage(options *GRUB2StageOptions) *Stage { return &Stage{ @@ -34,18 +31,3 @@ func NewGRUB2Stage(options *GRUB2StageOptions) *Stage { Options: options, } } - -// SetRootFilesystemUUID sets the UUID of the filesystem containing /. -func (options *GRUB2StageOptions) SetRootFilesystemUUID(u uuid.UUID) { - options.RootFilesystemUUID = u -} - -// SetBootFilesystemUUID sets the UUID of the filesystem containing /boot. -func (options *GRUB2StageOptions) SetBootFilesystemUUID(u uuid.UUID) { - options.BootFilesystemUUID = &u -} - -// SetKernelOptions sets the kernel options that should be passed at boot. -func (options *GRUB2StageOptions) SetKernelOptions(kernelOptions string) { - options.KernelOptions = kernelOptions -} diff --git a/internal/pipeline/stage_test.go b/internal/pipeline/stage_test.go index ce666d0bb..33423dd0b 100644 --- a/internal/pipeline/stage_test.go +++ b/internal/pipeline/stage_test.go @@ -121,7 +121,22 @@ func TestStage_UnmarshalJSON(t *testing.T) { }, }, args: args{ - data: []byte(`{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"00000000-0000-0000-0000-000000000000"}}`), + data: []byte(`{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"00000000-0000-0000-0000-000000000000","legacy":false}}`), + }, + }, + { + name: "grub2-uefi", + fields: fields{ + Name: "org.osbuild.grub2", + Options: &GRUB2StageOptions{ + RootFilesystemUUID: null_uuid, + UEFI: &GRUB2UEFI{ + Vendor: "vendor", + }, + }, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"00000000-0000-0000-0000-000000000000","legacy":false,"uefi":{"vendor":"vendor"}}}`), }, }, { @@ -134,7 +149,7 @@ func TestStage_UnmarshalJSON(t *testing.T) { }, }, args: args{ - data: []byte(`{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"00000000-0000-0000-0000-000000000000","boot_fs_uuid":"00000000-0000-0000-0000-000000000000"}}`), + data: []byte(`{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"00000000-0000-0000-0000-000000000000","boot_fs_uuid":"00000000-0000-0000-0000-000000000000","legacy":false}}`), }, }, { diff --git a/test/cases/ami_empty_blueprint.json b/test/cases/ami_empty_blueprint.json index 9afc2036a..5d29f3e9c 100644 --- a/test/cases/ami_empty_blueprint.json +++ b/test/cases/ami_empty_blueprint.json @@ -103,7 +103,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200" + "kernel_opts": "ro no_timer_check console=ttyS0,115200n8 console=tty1 biosdevname=0 net.ifnames=0 console=ttyS0,115200", + "legacy": true } }, { diff --git a/test/cases/disk_empty_blueprint.json b/test/cases/disk_empty_blueprint.json index 1e77299ab..5e509f54b 100644 --- a/test/cases/disk_empty_blueprint.json +++ b/test/cases/disk_empty_blueprint.json @@ -96,7 +96,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/disk_local_boot.json b/test/cases/disk_local_boot.json index 5f46f7a81..070e7193f 100644 --- a/test/cases/disk_local_boot.json +++ b/test/cases/disk_local_boot.json @@ -120,7 +120,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/ext4_empty_blueprint.json b/test/cases/ext4_empty_blueprint.json index 81722424e..d6e5bf147 100644 --- a/test/cases/ext4_empty_blueprint.json +++ b/test/cases/ext4_empty_blueprint.json @@ -80,7 +80,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/ext4_local_boot.json b/test/cases/ext4_local_boot.json index e9b2980b2..07ca2caa4 100644 --- a/test/cases/ext4_local_boot.json +++ b/test/cases/ext4_local_boot.json @@ -105,7 +105,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/openstack_empty_blueprint.json b/test/cases/openstack_empty_blueprint.json index 2dafe443f..7406787e6 100644 --- a/test/cases/openstack_empty_blueprint.json +++ b/test/cases/openstack_empty_blueprint.json @@ -100,7 +100,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/openstack_local_boot.json b/test/cases/openstack_local_boot.json index e14a36c23..15bfe4c4e 100644 --- a/test/cases/openstack_local_boot.json +++ b/test/cases/openstack_local_boot.json @@ -124,7 +124,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/qcow2_empty_blueprint.json b/test/cases/qcow2_empty_blueprint.json index e3273c0f0..3aa0992f7 100644 --- a/test/cases/qcow2_empty_blueprint.json +++ b/test/cases/qcow2_empty_blueprint.json @@ -101,7 +101,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/qcow2_local_boot.json b/test/cases/qcow2_local_boot.json index 3c658e610..71fb5c181 100644 --- a/test/cases/qcow2_local_boot.json +++ b/test/cases/qcow2_local_boot.json @@ -125,7 +125,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/rhel82_ami.json b/test/cases/rhel82_ami.json index 95fabaf10..e6440b68e 100644 --- a/test/cases/rhel82_ami.json +++ b/test/cases/rhel82_ami.json @@ -148,7 +148,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", - "kernel_opts": "ro console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto" + "kernel_opts": "ro console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto", + "legacy": true } }, { diff --git a/test/cases/rhel82_ext4_filesystem.json b/test/cases/rhel82_ext4_filesystem.json index 39d59559f..f8e9c0899 100644 --- a/test/cases/rhel82_ext4_filesystem.json +++ b/test/cases/rhel82_ext4_filesystem.json @@ -98,7 +98,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", - "kernel_opts": "ro net.ifnames=0" + "kernel_opts": "ro net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/rhel82_openstack.json b/test/cases/rhel82_openstack.json index 098a752bf..29ee33813 100644 --- a/test/cases/rhel82_openstack.json +++ b/test/cases/rhel82_openstack.json @@ -106,7 +106,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", - "kernel_opts": "ro net.ifnames=0" + "kernel_opts": "ro net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/rhel82_partitioned_disk.json b/test/cases/rhel82_partitioned_disk.json index 9185ce0cb..78c8d96b0 100644 --- a/test/cases/rhel82_partitioned_disk.json +++ b/test/cases/rhel82_partitioned_disk.json @@ -112,7 +112,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", - "kernel_opts": "ro net.ifnames=0" + "kernel_opts": "ro net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/rhel82_qcow2.json b/test/cases/rhel82_qcow2.json index af31c08f6..94fac9c75 100644 --- a/test/cases/rhel82_qcow2.json +++ b/test/cases/rhel82_qcow2.json @@ -123,7 +123,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", - "kernel_opts": "ro net.ifnames=0" + "kernel_opts": "ro net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/rhel82_tar.json b/test/cases/rhel82_tar.json index 0ffb17c94..d634a7cbe 100644 --- a/test/cases/rhel82_tar.json +++ b/test/cases/rhel82_tar.json @@ -98,7 +98,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", - "kernel_opts": "ro net.ifnames=0" + "kernel_opts": "ro net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/rhel82_vhd.json b/test/cases/rhel82_vhd.json index 34d621003..5e43fde76 100644 --- a/test/cases/rhel82_vhd.json +++ b/test/cases/rhel82_vhd.json @@ -111,7 +111,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", - "kernel_opts": "ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/rhel82_vmdk.json b/test/cases/rhel82_vmdk.json index 3fd43643f..56aeb9edf 100644 --- a/test/cases/rhel82_vmdk.json +++ b/test/cases/rhel82_vmdk.json @@ -116,7 +116,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "0bd700f8-090f-4556-b797-b340297ea1bd", - "kernel_opts": "ro net.ifnames=0" + "kernel_opts": "ro net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/tar_local_boot.json b/test/cases/tar_local_boot.json index 365c01ac6..53d9fc671 100644 --- a/test/cases/tar_local_boot.json +++ b/test/cases/tar_local_boot.json @@ -105,7 +105,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/vhd_empty_blueprint.json b/test/cases/vhd_empty_blueprint.json index 409b1602b..d8d3da78b 100644 --- a/test/cases/vhd_empty_blueprint.json +++ b/test/cases/vhd_empty_blueprint.json @@ -99,7 +99,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/vhd_local_boot.json b/test/cases/vhd_local_boot.json index 338add4cb..a2b1dd503 100644 --- a/test/cases/vhd_local_boot.json +++ b/test/cases/vhd_local_boot.json @@ -123,7 +123,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/vmdk_empty_blueprint.json b/test/cases/vmdk_empty_blueprint.json index 1efa1a12d..59588b64b 100644 --- a/test/cases/vmdk_empty_blueprint.json +++ b/test/cases/vmdk_empty_blueprint.json @@ -97,7 +97,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, { diff --git a/test/cases/vmdk_local_boot.json b/test/cases/vmdk_local_boot.json index 0a5991221..0232c9855 100644 --- a/test/cases/vmdk_local_boot.json +++ b/test/cases/vmdk_local_boot.json @@ -121,7 +121,8 @@ "name": "org.osbuild.grub2", "options": { "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac", - "kernel_opts": "ro biosdevname=0 net.ifnames=0" + "kernel_opts": "ro biosdevname=0 net.ifnames=0", + "legacy": true } }, {