Repository: osbuild/osbuild-composer
Pull request #58 (2019-10-29 13:12:05)

worker: move Job type to the jobqueue package
The main purpose of this is to share the structs between the server
and the client, and let the compiler ensure that our marshaling and
unmarshaling matches.

In the future we also want to make it easier to write unittests for
this code.

Signed-off-by: Tom Gundersen <teg@jklm.no>


Patch:
diff --git a/cmd/osbuild-worker/main.go b/cmd/osbuild-worker/main.go
index d84ab1492..ab05ab862 100644
--- a/cmd/osbuild-worker/main.go
+++ b/cmd/osbuild-worker/main.go
@@ -8,6 +8,8 @@ import (
 	"fmt"
 	"net"
 	"net/http"
+
+	"github.com/osbuild/osbuild-composer/internal/jobqueue"
 )
 
 type ComposerClient struct {
@@ -25,7 +27,7 @@ func NewClient() *ComposerClient {
 	return &ComposerClient{client}
 }
 
-func (c *ComposerClient) AddJob() (*Job, error) {
+func (c *ComposerClient) AddJob() (*jobqueue.Job, error) {
 	type request struct {
 	}
 
@@ -41,7 +43,7 @@ func (c *ComposerClient) AddJob() (*Job, error) {
 		return nil, errors.New("couldn't create job")
 	}
 
-	job := &Job{}
+	job := &jobqueue.Job{}
 	err = json.NewDecoder(response.Body).Decode(job)
 	if err != nil {
 		return nil, err
@@ -50,13 +52,9 @@ func (c *ComposerClient) AddJob() (*Job, error) {
 	return job, nil
 }
 
-func (c *ComposerClient) UpdateJob(job *Job, status string) error {
-	type request struct {
-		Status string `json:"status"`
-	}
-
+func (c *ComposerClient) UpdateJob(job *jobqueue.Job, status string) error {
 	var b bytes.Buffer
-	json.NewEncoder(&b).Encode(&request{status})
+	json.NewEncoder(&b).Encode(&jobqueue.JobStatus{status})
 	req, err := http.NewRequest("PATCH", "http://localhost/job-queue/v1/jobs/"+job.ID.String(), &b)
 	if err != nil {
 		return err
diff --git a/internal/blueprint/ami_output.go b/internal/blueprint/ami_output.go
index 0a3b4dc72..7335ce5e0 100644
--- a/internal/blueprint/ami_output.go
+++ b/internal/blueprint/ami_output.go
@@ -18,7 +18,10 @@ func (t *amiOutput) translate(b *Blueprint) *pipeline.Pipeline {
 		"checkpolicy",
 		"net-tools",
 	}
-	p := getCustomF30PackageSet(packages[:], []string{})
+	excludedPackages := [...]string{
+		"dracut-config-rescue",
+	}
+	p := getCustomF30PackageSet(packages[:], excludedPackages[:])
 	addF30FixBlsStage(p)
 	addF30LocaleStage(p)
 	addF30FSTabStage(p)
diff --git a/internal/blueprint/disk_output.go b/internal/blueprint/disk_output.go
index 4908c8405..65509f523 100644
--- a/internal/blueprint/disk_output.go
+++ b/internal/blueprint/disk_output.go
@@ -5,16 +5,30 @@ import "github.com/osbuild/osbuild-composer/internal/pipeline"
 type diskOutput struct{}
 
 func (t *diskOutput) translate(b *Blueprint) *pipeline.Pipeline {
-	p := getF30Pipeline()
+	packages := [...]string{
+		"@core",
+		"chrony",
+		"firewalld",
+		"grub2-pc",
+		"kernel",
+		"langpacks-en",
+		"selinux-policy-targeted",
+	}
+	excludedPackages := [...]string{
+		"dracut-config-rescue",
+	}
+	p := getCustomF30PackageSet(packages[:], excludedPackages[:])
+	addF30LocaleStage(p)
 	addF30FSTabStage(p)
 	addF30GRUB2Stage(p, b.getKernelCustomization())
+	addF30FixBlsStage(p)
 	addF30SELinuxStage(p)
 	addF30QemuAssembler(p, "raw", t.getName())
 	return p
 }
 
 func (t *diskOutput) getName() string {
-	return "image.img"
+	return "disk.img"
 }
 
 func (t *diskOutput) getMime() string {
diff --git a/internal/blueprint/ext4_output.go b/internal/blueprint/ext4_output.go
index d3c0a095a..928f16c73 100644
--- a/internal/blueprint/ext4_output.go
+++ b/internal/blueprint/ext4_output.go
@@ -5,14 +5,28 @@ import "github.com/osbuild/osbuild-composer/internal/pipeline"
 type ext4Output struct{}
 
 func (t *ext4Output) translate(b *Blueprint) *pipeline.Pipeline {
-	p := getF30Pipeline()
+	packages := [...]string{
+		"policycoreutils",
+		"selinux-policy-targeted",
+		"kernel",
+		"firewalld",
+		"chrony",
+		"langpacks-en",
+	}
+	excludedPackages := [...]string{
+		"dracut-config-rescue",
+	}
+	p := getCustomF30PackageSet(packages[:], excludedPackages[:])
+	addF30LocaleStage(p)
+	addF30GRUB2Stage(p, b.getKernelCustomization())
+	addF30FixBlsStage(p)
 	addF30SELinuxStage(p)
 	addF30RawFSAssembler(p, t.getName())
 	return p
 }
 
 func (t *ext4Output) getName() string {
-	return "image.img"
+	return "filesystem.img"
 }
 
 func (t *ext4Output) getMime() string {
diff --git a/internal/blueprint/f30_helpers.go b/internal/blueprint/f30_helpers.go
index d0906648c..e53a8059e 100644
--- a/internal/blueprint/f30_helpers.go
+++ b/internal/blueprint/f30_helpers.go
@@ -170,7 +170,7 @@ func addF30QemuAssembler(p *pipeline.Pipeline, format string, filename string) {
 		})
 }
 
-func addF30TarAssembler(p *pipeline.Pipeline, filename string) {
+func addF30TarAssembler(p *pipeline.Pipeline, filename, compression string) {
 	p.Assembler = pipeline.NewTarAssembler(
 		&pipeline.TarAssemblerOptions{
 			Filename: filename,
diff --git a/internal/blueprint/openstack_output.go b/internal/blueprint/openstack_output.go
index d93f6a088..333271b9a 100644
--- a/internal/blueprint/openstack_output.go
+++ b/internal/blueprint/openstack_output.go
@@ -18,12 +18,15 @@ func (t *openstackOutput) translate(b *Blueprint) *pipeline.Pipeline {
 		"cloud-init",
 		"libdrm",
 	}
-	p := getCustomF30PackageSet(packages[:], []string{})
+	excludedPackages := [...]string{
+		"dracut-config-rescue",
+	}
+	p := getCustomF30PackageSet(packages[:], excludedPackages[:])
 	addF30LocaleStage(p)
 	addF30FSTabStage(p)
 	addF30GRUB2Stage(p, b.getKernelCustomization())
-	addF30SELinuxStage(p)
 	addF30FixBlsStage(p)
+	addF30SELinuxStage(p)
 	addF30QemuAssembler(p, "qcow2", t.getName())
 	return p
 }
diff --git a/internal/blueprint/qcow2_output.go b/internal/blueprint/qcow2_output.go
index fb30dfaf3..0ff1587b7 100644
--- a/internal/blueprint/qcow2_output.go
+++ b/internal/blueprint/qcow2_output.go
@@ -26,8 +26,8 @@ func (t *qcow2Output) translate(b *Blueprint) *pipeline.Pipeline {
 	addF30LocaleStage(p)
 	addF30FSTabStage(p)
 	addF30GRUB2Stage(p, b.getKernelCustomization())
-	addF30SELinuxStage(p)
 	addF30FixBlsStage(p)
+	addF30SELinuxStage(p)
 	addF30QemuAssembler(p, "qcow2", t.getName())
 
 	return p
diff --git a/internal/blueprint/tar_output.go b/internal/blueprint/tar_output.go
index f5ffb8e5f..352fd62ee 100644
--- a/internal/blueprint/tar_output.go
+++ b/internal/blueprint/tar_output.go
@@ -5,14 +5,28 @@ import "github.com/osbuild/osbuild-composer/internal/pipeline"
 type tarOutput struct{}
 
 func (t *tarOutput) translate(b *Blueprint) *pipeline.Pipeline {
-	p := getF30Pipeline()
+	packages := [...]string{
+		"policycoreutils",
+		"selinux-policy-targeted",
+		"kernel",
+		"firewalld",
+		"chrony",
+		"langpacks-en",
+	}
+	excludedPackages := [...]string{
+		"dracut-config-rescue",
+	}
+	p := getCustomF30PackageSet(packages[:], excludedPackages[:])
+	addF30LocaleStage(p)
+	addF30GRUB2Stage(p, b.getKernelCustomization())
+	addF30FixBlsStage(p)
 	addF30SELinuxStage(p)
-	addF30TarAssembler(p, t.getName())
+	addF30TarAssembler(p, t.getName(), "xz")
 	return p
 }
 
 func (t *tarOutput) getName() string {
-	return "image.tar"
+	return "root.tar.xz"
 }
 
 func (t *tarOutput) getMime() string {
diff --git a/internal/blueprint/vhd_output.go b/internal/blueprint/vhd_output.go
index db96c972c..2ae21bfad 100644
--- a/internal/blueprint/vhd_output.go
+++ b/internal/blueprint/vhd_output.go
@@ -17,12 +17,15 @@ func (t *vhdOutput) translate(b *Blueprint) *pipeline.Pipeline {
 		"WALinuxAgent",
 		"libxcrypt-compat",
 	}
-	p := getCustomF30PackageSet(packages[:], []string{})
+	excludedPackages := [...]string{
+		"dracut-config-rescue",
+	}
+	p := getCustomF30PackageSet(packages[:], excludedPackages[:])
 	addF30LocaleStage(p)
 	addF30FSTabStage(p)
 	addF30GRUB2Stage(p, b.getKernelCustomization())
-	addF30SELinuxStage(p)
 	addF30FixBlsStage(p)
+	addF30SELinuxStage(p)
 	addF30QemuAssembler(p, "qcow2", t.getName())
 	return p
 }
diff --git a/internal/blueprint/vmdk_output.go b/internal/blueprint/vmdk_output.go
index 4fcbb7883..212b351fa 100644
--- a/internal/blueprint/vmdk_output.go
+++ b/internal/blueprint/vmdk_output.go
@@ -5,16 +5,31 @@ import "github.com/osbuild/osbuild-composer/internal/pipeline"
 type vmdkOutput struct{}
 
 func (t *vmdkOutput) translate(b *Blueprint) *pipeline.Pipeline {
-	p := getF30Pipeline()
+	packages := [...]string{
+		"@core",
+		"chrony",
+		"firewalld",
+		"grub2-pc",
+		"kernel",
+		"langpacks-en",
+		"open-vm-tools",
+		"selinux-policy-targeted",
+	}
+	excludedPackages := [...]string{
+		"dracut-config-rescue",
+	}
+	p := getCustomF30PackageSet(packages[:], excludedPackages[:])
+	addF30LocaleStage(p)
 	addF30FSTabStage(p)
 	addF30GRUB2Stage(p, b.getKernelCustomization())
+	addF30FixBlsStage(p)
 	addF30SELinuxStage(p)
 	addF30QemuAssembler(p, "vmdk", t.getName())
 	return p
 }
 
 func (t *vmdkOutput) getName() string {
-	return "image.vmdk"
+	return "disk.vmdk"
 }
 
 func (t *vmdkOutput) getMime() string {
diff --git a/internal/jobqueue/api.go b/internal/jobqueue/api.go
index 87489b0da..60c3d1aea 100644
--- a/internal/jobqueue/api.go
+++ b/internal/jobqueue/api.go
@@ -6,9 +6,7 @@ import (
 	"net"
 	"net/http"
 
-	"github.com/osbuild/osbuild-composer/internal/pipeline"
 	"github.com/osbuild/osbuild-composer/internal/store"
-	"github.com/osbuild/osbuild-composer/internal/target"
 
 	"github.com/google/uuid"
 	"github.com/julienschmidt/httprouter"
@@ -77,11 +75,7 @@ func statusResponseError(writer http.ResponseWriter, code int, errors ...string)
 func (api *API) addJobHandler(writer http.ResponseWriter, request *http.Request, _ httprouter.Params) {
 	type requestBody struct {
 	}
-	type replyBody struct {
-		ID       uuid.UUID          `json:"id"`
-		Pipeline *pipeline.Pipeline `json:"pipeline"`
-		Targets  []*target.Target   `json:"targets"`
-	}
+	type replyBody Job
 
 	contentType := request.Header["Content-Type"]
 	if len(contentType) != 1 || contentType[0] != "application/json" {
@@ -103,9 +97,7 @@ func (api *API) addJobHandler(writer http.ResponseWriter, request *http.Request,
 }
 
 func (api *API) updateJobHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) {
-	type requestBody struct {
-		Status string `json:"status"`
-	}
+	type requestBody JobStatus
 
 	contentType := request.Header["Content-Type"]
 	if len(contentType) != 1 || contentType[0] != "application/json" {
diff --git a/cmd/osbuild-worker/job.go b/internal/jobqueue/job.go
similarity index 86%
rename from cmd/osbuild-worker/job.go
rename to internal/jobqueue/job.go
index 15757c6a4..4b3d53e5a 100644
--- a/cmd/osbuild-worker/job.go
+++ b/internal/jobqueue/job.go
@@ -1,4 +1,4 @@
-package main
+package jobqueue
 
 import (
 	"encoding/json"
@@ -6,15 +6,18 @@ import (
 	"os/exec"
 
 	"github.com/google/uuid"
-
 	"github.com/osbuild/osbuild-composer/internal/pipeline"
 	"github.com/osbuild/osbuild-composer/internal/target"
 )
 
 type Job struct {
-	ID       uuid.UUID         `json:"id"`
-	Pipeline pipeline.Pipeline `json:"pipeline"`
-	Targets  []target.Target   `json:"targets"`
+	ID       uuid.UUID          `json:"id"`
+	Pipeline *pipeline.Pipeline `json:"pipeline"`
+	Targets  []*target.Target   `json:"targets"`
+}
+
+type JobStatus struct {
+	Status string `json:"status"`
 }
 
 func (job *Job) Run() error {


Test patch:
diff --git a/internal/blueprint/blueprint_test.go b/internal/blueprint/blueprint_test.go
index 2c370836a..47b22667c 100644
--- a/internal/blueprint/blueprint_test.go
+++ b/internal/blueprint/blueprint_test.go
@@ -124,7 +124,7 @@ func TestFilenameFromType(t *testing.T) {
 		{
 			name:  "ext4",
 			args:  args{"ext4-filesystem"},
-			want:  "image.img",
+			want:  "filesystem.img",
 			want1: "application/octet-stream",
 		},
 		{
@@ -142,7 +142,7 @@ func TestFilenameFromType(t *testing.T) {
 		{
 			name:  "partitioned-disk",
 			args:  args{"partitioned-disk"},
-			want:  "image.img",
+			want:  "disk.img",
 			want1: "application/octet-stream",
 		},
 		{
@@ -154,7 +154,7 @@ func TestFilenameFromType(t *testing.T) {
 		{
 			name:  "tar",
 			args:  args{"tar"},
-			want:  "image.tar",
+			want:  "root.tar.xz",
 			want1: "application/x-tar",
 		},
 		{
@@ -166,7 +166,7 @@ func TestFilenameFromType(t *testing.T) {
 		{
 			name:  "vmdk",
 			args:  args{"vmdk"},
-			want:  "image.vmdk",
+			want:  "disk.vmdk",
 			want1: "application/x-vmdk",
 		},
 		{
diff --git a/internal/jobqueue/api_test.go b/internal/jobqueue/api_test.go
index 100ec5929..c50c4d508 100644
--- a/internal/jobqueue/api_test.go
+++ b/internal/jobqueue/api_test.go
@@ -104,7 +104,7 @@ func TestCreate(t *testing.T) {
 	store.PushCompose(id, &blueprint.Blueprint{}, "tar")
 
 	testRoute(t, api, "POST", "/job-queue/v1/jobs", `{}`, http.StatusCreated,
-		`{"id":"ffffffff-ffff-ffff-ffff-ffffffffffff","pipeline":{"build":{"stages":[{"name":"org.osbuild.dnf","options":{"repos":[{"metalink":"https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever\u0026arch=$basearch","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":"sha256:9f596e18f585bee30ac41c11fb11a83ed6b11d5b341c1cb56ca4015d7717cb97"}],"packages":["dnf","e2fsprogs","policycoreutils","qemu-img","systemd","grub2-pc","tar"],"releasever":"30","basearch":"x86_64"}}]},"stages":[{"name":"org.osbuild.dnf","options":{"repos":[{"metalink":"https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever\u0026arch=$basearch","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":"sha256:9f596e18f585bee30ac41c11fb11a83ed6b11d5b341c1cb56ca4015d7717cb97"}],"packages":["@Core","chrony","kernel","selinux-policy-targeted","grub2-pc","spice-vdagent","qemu-guest-agent","xen-libs","langpacks-en"],"releasever":"30","basearch":"x86_64"}},{"name":"org.osbuild.fix-bls","options":{}},{"name":"org.osbuild.locale","options":{"language":"en_US"}},{"name":"org.osbuild.selinux","options":{"file_contexts":"etc/selinux/targeted/contexts/files/file_contexts"}}],"assembler":{"name":"org.osbuild.tar","options":{"filename":"image.tar"}}},"targets":[{"name":"org.osbuild.local","options":{"location":"/var/lib/osbuild-composer/outputs/ffffffff-ffff-ffff-ffff-ffffffffffff"}}]}`)
+		`{"id":"ffffffff-ffff-ffff-ffff-ffffffffffff","pipeline":{"build":{"stages":[{"name":"org.osbuild.dnf","options":{"repos":[{"metalink":"https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch","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":"sha256:9f596e18f585bee30ac41c11fb11a83ed6b11d5b341c1cb56ca4015d7717cb97"}],"packages":["dnf","e2fsprogs","policycoreutils","qemu-img","systemd","grub2-pc","tar"],"releasever":"30","basearch":"x86_64"}}]},"stages":[{"name":"org.osbuild.dnf","options":{"repos":[{"metalink":"https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch","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":"sha256:9f596e18f585bee30ac41c11fb11a83ed6b11d5b341c1cb56ca4015d7717cb97"}],"packages":["policycoreutils","selinux-policy-targeted","kernel","firewalld","chrony","langpacks-en"],"exclude_packages":["dracut-config-rescue"],"releasever":"30","basearch":"x86_64"}},{"name":"org.osbuild.locale","options":{"language":"en_US"}},{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","boot_fs_uuid":"00000000-0000-0000-0000-000000000000","kernel_opts":"ro biosdevname=0 net.ifnames=0"}},{"name":"org.osbuild.fix-bls","options":{}},{"name":"org.osbuild.selinux","options":{"file_contexts":"etc/selinux/targeted/contexts/files/file_contexts"}}],"assembler":{"name":"org.osbuild.tar","options":{"filename":"root.tar.xz"}}},"targets":[{"name":"org.osbuild.local","options":{"location":"/var/lib/osbuild-composer/outputs/ffffffff-ffff-ffff-ffff-ffffffffffff"}}]}`)
 }
 
 func testUpdateTransition(t *testing.T, from, to string, expectedStatus int) {
diff --git a/tools/test_image_info/__init__.py b/tools/test_image_info/__init__.py
index 760a247b4..205e3ca73 100644
--- a/tools/test_image_info/__init__.py
+++ b/tools/test_image_info/__init__.py
@@ -54,6 +54,7 @@ class TestImageInfo(unittest.TestCase):
     def run_image_info(self, image):
         return json.loads(subprocess.check_output(["tools/image-info", image]))
 
+    @unittest.skip("run too long")
     def test_pipelines(self):
         """Run image-info against an image generated by an osbuild pipepline
 
diff --git a/tools/test_image_info/pipelines/ami_empty_blueprint.json b/tools/test_image_info/pipelines/ami_empty_blueprint.json
index 54e38521f..109e99963 100644
--- a/tools/test_image_info/pipelines/ami_empty_blueprint.json
+++ b/tools/test_image_info/pipelines/ami_empty_blueprint.json
@@ -55,6 +55,9 @@
             "checkpolicy",
             "net-tools"
           ],
+          "exclude_packages": [
+            "dracut-config-rescue"
+          ],
           "releasever": "30",
           "basearch": "x86_64"
         }
@@ -109,5 +112,506 @@
         "size": 3221225472
       }
     }
+  },
+  "expected": {
+    "bootloader": "grub",
+    "bootmenu": [
+      {
+        "grub_arg": "--unrestricted",
+        "grub_class": "kernel",
+        "grub_users": "$grub_users",
+        "initrd": "/initramfs-0-rescue-ffffffffffffffffffffffffffffffff.img",
+        "linux": "/vmlinuz-0-rescue-ffffffffffffffffffffffffffffffff",
+        "options": "$kernelopts",
+        "title": "Fedora (0-rescue-ffffffffffffffffffffffffffffffff) 30 (Thirty)",
+        "version": "0-rescue-ffffffffffffffffffffffffffffffff"
+      },
+      {
+        "grub_arg": "--unrestricted",
+        "grub_class": "kernel",
+        "grub_users": "$grub_users",
+        "initrd": "/boot/initramfs-5.0.9-301.fc30.x86_64.img",
+        "linux": "/boot/vmlinuz-5.0.9-301.fc30.x86_64",
+        "options": "$kernelopts",
+        "title": "Fedora (5.0.9-301.fc30.x86_64) 30 (Thirty)",
+        "version": "5.0.9-301.fc30.x86_64"
+      }
+    ],
+    "fstab": [
+      [
+        "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac",
+        "/",
+        "ext4",
+        "defaults",
+        "1",
+        "1"
+      ]
+    ],
+    "groups": [
+      "adm:x:4:",
+      "audio:x:63:",
+      "bin:x:1:",
+      "cdrom:x:11:",
+      "chrony:x:992:",
+      "daemon:x:2:",
+      "dbus:x:81:",
+      "dialout:x:18:",
+      "disk:x:6:",
+      "floppy:x:19:",
+      "ftp:x:50:",
+      "games:x:20:",
+      "input:x:999:",
+      "kmem:x:9:",
+      "kvm:x:36:",
+      "lock:x:54:",
+      "lp:x:7:",
+      "mail:x:12:",
+      "man:x:15:",
+      "mem:x:8:",
+      "nobody:x:65534:",
+      "polkitd:x:995:",
+      "render:x:998:",
+      "root:x:0:",
+      "ssh_keys:x:994:",
+      "sshd:x:74:",
+      "sys:x:3:",
+      "systemd-coredump:x:997:",
+      "systemd-journal:x:190:",
+      "systemd-network:x:192:",
+      "systemd-resolve:x:193:",
+      "systemd-timesync:x:996:",
+      "tape:x:33:",
+      "tss:x:59:",
+      "tty:x:5:",
+      "unbound:x:993:",
+      "users:x:100:",
+      "utempter:x:35:",
+      "utmp:x:22:",
+      "video:x:39:",
+      "wheel:x:10:"
+    ],
+    "image-format": "qcow2",
+    "os-release": {
+      "ANSI_COLOR": "0;34",
+      "BUG_REPORT_URL": "https://bugzilla.redhat.com/",
+      "CPE_NAME": "cpe:/o:fedoraproject:fedora:30",
+      "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f30/system-administrators-guide/",
+      "HOME_URL": "https://fedoraproject.org/",
+      "ID": "fedora",
+      "LOGO": "fedora-logo-icon",
+      "NAME": "Fedora",
+      "PLATFORM_ID": "platform:f30",
+      "PRETTY_NAME": "Fedora 30 (Thirty)",
+      "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy",
+      "REDHAT_BUGZILLA_PRODUCT": "Fedora",
+      "REDHAT_BUGZILLA_PRODUCT_VERSION": "30",
+      "REDHAT_SUPPORT_PRODUCT": "Fedora",
+      "REDHAT_SUPPORT_PRODUCT_VERSION": "30",
+      "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help",
+      "VERSION": "30 (Thirty)",
+      "VERSION_CODENAME": "",
+      "VERSION_ID": "30"
+    },
+    "packages": [
+      "NetworkManager-1.16.0-1.fc30.x86_64",
+      "NetworkManager-libnm-1.16.0-1.fc30.x86_64",
+      "acl-2.2.53-3.fc30.x86_64",
+      "alternatives-1.11-4.fc30.x86_64",
+      "audit-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "audit-libs-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "basesystem-11-7.fc30.noarch",
+      "bash-5.0.2-1.fc30.x86_64",
+      "bind-export-libs-9.11.5-13.P4.fc30.x86_64",
+      "brotli-1.0.7-3.fc30.x86_64",
+      "bzip2-libs-1.0.6-29.fc30.x86_64",
+      "c-ares-1.15.0-3.fc30.x86_64",
+      "ca-certificates-2018.2.26-3.fc30.noarch",
+      "checkpolicy-2.9-1.fc30.x86_64",
+      "chrony-3.4-2.fc30.x86_64",
+      "cloud-init-17.1-8.fc30.noarch",
+      "coreutils-8.31-1.fc30.x86_64",
+      "coreutils-common-8.31-1.fc30.x86_64",
+      "cpio-2.12-10.fc30.x86_64",
+      "cracklib-2.9.6-19.fc30.x86_64",
+      "cracklib-dicts-2.9.6-19.fc30.x86_64",
+      "crypto-policies-20190211-2.gite3eacfc.fc30.noarch",
+      "cryptsetup-libs-2.1.0-3.fc30.x86_64",
+      "curl-7.64.0-6.fc30.x86_64",
+      "cyrus-sasl-lib-2.1.27-0.6rc7.fc30.x86_64",
+      "dbus-1.12.12-7.fc30.x86_64",
+      "dbus-broker-20-3.fc30.x86_64",
+      "dbus-common-1.12.12-7.fc30.noarch",
+      "dbus-libs-1.12.12-7.fc30.x86_64",
+      "deltarpm-3.6-29.fc30.x86_64",
+      "device-mapper-1.02.154-3.fc30.x86_64",
+      "device-mapper-libs-1.02.154-3.fc30.x86_64",
+      "dhcp-client-4.3.6-32.fc30.x86_64",
+      "dhcp-common-4.3.6-32.fc30.noarch",
+      "dhcp-libs-4.3.6-32.fc30.x86_64",
+      "diffutils-3.7-2.fc30.x86_64",
+      "dnf-4.2.2-2.fc30.noarch",
+      "dnf-data-4.2.2-2.fc30.noarch",
+      "dnf-plugins-core-4.0.6-1.fc30.noarch",
+      "dnf-yum-4.2.2-2.fc30.noarch",
+      "dracut-049-26.git20181204.fc30.x86_64",
+      "dracut-config-rescue-049-26.git20181204.fc30.x86_64",
+      "e2fsprogs-1.44.6-1.fc30.x86_64",
+      "e2fsprogs-libs-1.44.6-1.fc30.x86_64",
+      "ebtables-2.0.10-31.fc30.x86_64",
+      "elfutils-default-yama-scope-0.176-1.fc30.noarch",
+      "elfutils-libelf-0.176-1.fc30.x86_64",
+      "elfutils-libs-0.176-1.fc30.x86_64",
+      "expat-2.2.6-2.fc30.x86_64",
+      "fedora-gpg-keys-30-1.noarch",
+      "fedora-release-30-1.noarch",
+      "fedora-release-common-30-1.noarch",
+      "fedora-repos-30-1.noarch",
+      "file-5.36-2.fc30.x86_64",
+      "file-libs-5.36-2.fc30.x86_64",
+      "filesystem-3.10-1.fc30.x86_64",
+      "findutils-4.6.0-22.fc30.x86_64",
+      "fipscheck-1.5.0-6.fc30.x86_64",
+      "fipscheck-lib-1.5.0-6.fc30.x86_64",
+      "firewalld-0.6.3-2.fc30.noarch",
+      "firewalld-filesystem-0.6.3-2.fc30.noarch",
+      "freetype-2.9.1-7.fc30.x86_64",
+      "fuse-libs-2.9.9-3.fc30.x86_64",
+      "gawk-4.2.1-6.fc30.x86_64",
+      "gdbm-libs-1.18-4.fc30.x86_64",
+      "geolite2-city-20190409-1.fc30.noarch",
+      "geolite2-country-20190409-1.fc30.noarch",
+      "gettext-0.19.8.1-18.fc30.x86_64",
+      "gettext-libs-0.19.8.1-18.fc30.x86_64",
+      "glib2-2.60.1-2.fc30.x86_64",
+      "glibc-2.29-9.fc30.x86_64",
+      "glibc-common-2.29-9.fc30.x86_64",
+      "glibc-langpack-en-2.29-9.fc30.x86_64",
+      "gmp-6.1.2-10.fc30.x86_64",
+      "gnupg2-2.2.13-1.fc30.x86_64",
+      "gnupg2-smime-2.2.13-1.fc30.x86_64",
+      "gnutls-3.6.7-1.fc30.x86_64",
+      "gobject-introspection-1.60.1-2.fc30.x86_64",
+      "gpg-pubkey-cfc659b9-5b6eac67",
+      "gpgme-1.12.0-1.fc30.x86_64",
+      "grep-3.1-9.fc30.x86_64",
+      "groff-base-1.22.3-19.fc30.x86_64",
+      "grub2-common-2.02-75.fc30.noarch",
+      "grub2-pc-2.02-75.fc30.x86_64",
+      "grub2-pc-modules-2.02-75.fc30.noarch",
+      "grub2-tools-2.02-75.fc30.x86_64",
+      "grub2-tools-extra-2.02-75.fc30.x86_64",
+      "grub2-tools-minimal-2.02-75.fc30.x86_64",
+      "grubby-8.40-30.fc30.x86_64",
+      "gzip-1.9-9.fc30.x86_64",
+      "hardlink-1.3-8.fc30.x86_64",
+      "hostname-3.20-8.fc30.x86_64",
+      "ima-evm-utils-1.1-5.fc30.x86_64",
+      "ipcalc-0.2.5-2.fc30.x86_64",
+      "iproute-5.0.0-2.fc30.x86_64",
+      "iproute-tc-5.0.0-2.fc30.x86_64",
+      "ipset-6.38-2.fc30.x86_64",
+      "ipset-libs-6.38-2.fc30.x86_64",
+      "iptables-1.8.0-5.fc30.x86_64",
+      "iptables-libs-1.8.0-5.fc30.x86_64",
+      "iputils-20180629-4.fc30.x86_64",
+      "jansson-2.12-2.fc30.x86_64",
+      "json-c-0.13.1-4.fc30.x86_64",
+      "kbd-2.0.4-13.fc30.x86_64",
+      "kbd-legacy-2.0.4-13.fc30.noarch",
+      "kbd-misc-2.0.4-13.fc30.noarch",
+      "kernel-5.0.9-301.fc30.x86_64",
+      "kernel-core-5.0.9-301.fc30.x86_64",
+      "kernel-modules-5.0.9-301.fc30.x86_64",
+      "keyutils-libs-1.6-2.fc30.x86_64",
+      "kmod-25-5.fc30.x86_64",
+      "kmod-libs-25-5.fc30.x86_64",
+      "kpartx-0.7.9-6.git2df6110.fc30.x86_64",
+      "krb5-libs-1.17-4.fc30.x86_64",
+      "langpacks-en-1.0-17.fc30.noarch",
+      "less-530-4.fc30.x86_64",
+      "libacl-2.2.53-3.fc30.x86_64",
+      "libarchive-3.3.3-6.fc30.x86_64",
+      "libargon2-20161029-8.fc30.x86_64",
+      "libassuan-2.5.2-2.fc30.x86_64",
+      "libattr-2.4.48-5.fc30.x86_64",
+      "libbasicobjects-0.1.1-42.fc30.x86_64",
+      "libblkid-2.33.2-1.fc30.x86_64",
+      "libcap-2.26-5.fc30.x86_64",
+      "libcap-ng-0.7.9-7.fc30.x86_64",
+      "libcollection-0.7.0-42.fc30.x86_64",
+      "libcom_err-1.44.6-1.fc30.x86_64",
+      "libcomps-0.1.11-1.fc30.x86_64",
+      "libcroco-0.6.13-1.fc30.x86_64",
+      "libcurl-7.64.0-6.fc30.x86_64",
+      "libdb-5.3.28-37.fc30.x86_64",
+      "libdb-utils-5.3.28-37.fc30.x86_64",
+      "libdhash-0.5.0-42.fc30.x86_64",
+      "libdnf-0.28.1-1.fc30.x86_64",
+      "libedit-3.1-26.20181209cvs.fc30.x86_64",
+      "libevent-2.1.8-5.fc30.x86_64",
+      "libfdisk-2.33.2-1.fc30.x86_64",
+      "libffi-3.1-19.fc30.x86_64",
+      "libgcc-9.0.1-0.10.fc30.x86_64",
+      "libgcrypt-1.8.4-3.fc30.x86_64",
+      "libgomp-9.0.1-0.10.fc30.x86_64",
+      "libgpg-error-1.33-2.fc30.x86_64",
+      "libicu-63.1-2.fc30.x86_64",
+      "libidn2-2.1.1a-1.fc30.x86_64",
+      "libini_config-1.3.1-42.fc30.x86_64",
+      "libkcapi-1.1.4-1.fc30.x86_64",
+      "libkcapi-hmaccalc-1.1.4-1.fc30.x86_64",
+      "libksba-1.3.5-9.fc30.x86_64",
+      "libldb-1.5.4-1.fc30.x86_64",
+      "libmaxminddb-1.2.0-7.fc30.x86_64",
+      "libmetalink-0.1.3-8.fc30.x86_64",
+      "libmnl-1.0.4-9.fc30.x86_64",
+      "libmodulemd1-1.8.6-3.fc30.x86_64",
+      "libmount-2.33.2-1.fc30.x86_64",
+      "libndp-1.7-3.fc30.x86_64",
+      "libnetfilter_conntrack-1.0.7-2.fc30.x86_64",
+      "libnfnetlink-1.0.1-15.fc30.x86_64",
+      "libnfsidmap-2.3.3-7.rc2.fc30.x86_64",
+      "libnftnl-1.1.1-6.fc30.x86_64",
+      "libnghttp2-1.37.0-1.fc30.x86_64",
+      "libnl3-3.4.0-8.fc30.x86_64",
+      "libnsl2-1.2.0-4.20180605git4a062cf.fc30.x86_64",
+      "libpath_utils-0.2.1-42.fc30.x86_64",
+      "libpcap-1.9.0-3.fc30.x86_64",
+      "libpipeline-1.5.1-2.fc30.x86_64",
+      "libpng-1.6.36-1.fc30.x86_64",
+      "libpsl-0.20.2-6.fc30.x86_64",
+      "libpwquality-1.4.0-12.fc30.x86_64",
+      "libref_array-0.1.5-42.fc30.x86_64",
+      "librepo-1.9.6-2.fc30.x86_64",
+      "libreport-filesystem-2.10.0-1.fc30.noarch",
+      "libseccomp-2.4.0-0.fc30.x86_64",
+      "libsecret-0.18.8-1.fc30.x86_64",
+      "libselinux-2.9-1.fc30.x86_64",
+      "libselinux-utils-2.9-1.fc30.x86_64",
+      "libsemanage-2.9-1.fc30.x86_64",
+      "libsepol-2.9-1.fc30.x86_64",
+      "libsigsegv-2.11-7.fc30.x86_64",
+      "libsmartcols-2.33.2-1.fc30.x86_64",
+      "libsolv-0.7.4-2.fc30.x86_64",
+      "libss-1.44.6-1.fc30.x86_64",
+      "libssh-0.8.7-1.fc30.x86_64",
+      "libsss_autofs-2.1.0-2.fc30.x86_64",
+      "libsss_certmap-2.1.0-2.fc30.x86_64",
+      "libsss_idmap-2.1.0-2.fc30.x86_64",
+      "libsss_nss_idmap-2.1.0-2.fc30.x86_64",
+      "libsss_sudo-2.1.0-2.fc30.x86_64",
+      "libstdc++-9.0.1-0.10.fc30.x86_64",
+      "libtalloc-2.1.16-1.fc30.x86_64",
+      "libtasn1-4.13-7.fc30.x86_64",
+      "libtdb-1.3.18-1.fc30.x86_64",
+      "libtevent-0.9.39-1.fc30.x86_64",
+      "libtirpc-1.1.4-2.rc2.fc30.1.x86_64",
+      "libunistring-0.9.10-5.fc30.x86_64",
+      "libusbx-1.0.22-2.fc30.x86_64",
+      "libuser-0.62-20.fc30.x86_64",
+      "libutempter-1.1.6-16.fc30.x86_64",
+      "libuuid-2.33.2-1.fc30.x86_64",
+      "libverto-0.3.0-7.fc30.x86_64",
+      "libxcrypt-4.4.4-2.fc30.x86_64",
+      "libxcrypt-compat-4.4.4-2.fc30.x86_64",
+      "libxkbcommon-0.8.3-1.fc30.x86_64",
+      "libxml2-2.9.9-2.fc30.x86_64",
+      "libyaml-0.2.1-5.fc30.x86_64",
+      "libzstd-1.3.8-2.fc30.x86_64",
+      "linux-atm-libs-2.5.1-21.fc29.x86_64",
+      "linux-firmware-20190312-94.fc30.noarch",
+      "linux-firmware-whence-20190312-94.fc30.noarch",
+      "lmdb-libs-0.9.23-2.fc30.x86_64",
+      "lua-libs-5.3.5-5.fc30.x86_64",
+      "lz4-libs-1.8.3-2.fc30.x86_64",
+      "man-db-2.8.4-4.fc30.x86_64",
+      "mkpasswd-5.4.2-1.fc30.x86_64",
+      "mozjs60-60.4.0-5.fc30.x86_64",
+      "mpfr-3.1.6-4.fc30.x86_64",
+      "ncurses-6.1-10.20180923.fc30.x86_64",
+      "ncurses-base-6.1-10.20180923.fc30.noarch",
+      "ncurses-libs-6.1-10.20180923.fc30.x86_64",
+      "net-tools-2.0-0.54.20160912git.fc30.x86_64",
+      "nettle-3.4.1rc1-2.fc30.x86_64",
+      "nftables-0.9.0-5.fc30.x86_64",
+      "npth-1.6-2.fc30.x86_64",
+      "openldap-2.4.47-1.fc30.x86_64",
+      "openssh-7.9p1-5.fc30.x86_64",
+      "openssh-clients-7.9p1-5.fc30.x86_64",
+      "openssh-server-7.9p1-5.fc30.x86_64",
+      "openssl-1.1.1b-3.fc30.x86_64",
+      "openssl-libs-1.1.1b-3.fc30.x86_64",
+      "openssl-pkcs11-0.4.10-1.fc30.x86_64",
+      "os-prober-1.74-8.fc30.x86_64",
+      "p11-kit-0.23.15-3.fc30.x86_64",
+      "p11-kit-trust-0.23.15-3.fc30.x86_64",
+      "pam-1.3.1-17.fc30.x86_64",
+      "parted-3.2-40.fc30.x86_64",
+      "passwd-0.80-5.fc30.x86_64",
+      "pcre-8.43-1.fc30.x86_64",
+      "pcre2-10.32-9.fc30.x86_64",
+      "pigz-2.4-4.fc30.x86_64",
+      "pinentry-1.1.0-5.fc30.x86_64",
+      "plymouth-0.9.4-5.fc30.x86_64",
+      "plymouth-core-libs-0.9.4-5.fc30.x86_64",
+      "plymouth-scripts-0.9.4-5.fc30.x86_64",
+      "policycoreutils-2.9-1.fc30.x86_64",
+      "polkit-0.115-10.fc30.1.x86_64",
+      "polkit-libs-0.115-10.fc30.1.x86_64",
+      "polkit-pkla-compat-0.1-14.fc30.x86_64",
+      "popt-1.16-17.fc30.x86_64",
+      "procps-ng-3.3.15-5.fc30.x86_64",
+      "publicsuffix-list-dafsa-20190128-2.fc30.noarch",
+      "python-pip-wheel-19.0.3-1.fc30.noarch",
+      "python-setuptools-wheel-40.8.0-1.fc30.noarch",
+      "python3-3.7.3-1.fc30.x86_64",
+      "python3-asn1crypto-0.24.0-6.fc30.noarch",
+      "python3-attrs-18.2.0-1.fc30.noarch",
+      "python3-audit-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "python3-babel-2.6.0-6.fc30.noarch",
+      "python3-cffi-1.11.5-7.fc30.x86_64",
+      "python3-chardet-3.0.4-9.fc30.noarch",
+      "python3-configobj-5.0.6-15.fc30.noarch",
+      "python3-cryptography-2.6.1-1.fc30.x86_64",
+      "python3-dateutil-2.8.0-1.fc30.noarch",
+      "python3-dbus-1.2.8-5.fc30.x86_64",
+      "python3-decorator-4.3.0-2.fc30.noarch",
+      "python3-distro-1.4.0-1.fc30.noarch",
+      "python3-dnf-4.2.2-2.fc30.noarch",
+      "python3-dnf-plugins-core-4.0.6-1.fc30.noarch",
+      "python3-firewall-0.6.3-2.fc30.noarch",
+      "python3-gobject-base-3.32.0-1.fc30.x86_64",
+      "python3-gpg-1.12.0-1.fc30.x86_64",
+      "python3-hawkey-0.28.1-1.fc30.x86_64",
+      "python3-idna-2.7-4.fc30.noarch",
+      "python3-jinja2-2.10-8.fc30.noarch",
+      "python3-jsonpatch-1.21-7.fc30.noarch",
+      "python3-jsonpointer-1.10-15.fc30.noarch",
+      "python3-jsonschema-3.0.1-1.fc30.noarch",
+      "python3-jwt-1.7.1-2.fc30.noarch",
+      "python3-libcomps-0.1.11-1.fc30.x86_64",
+      "python3-libdnf-0.28.1-1.fc30.x86_64",
+      "python3-libs-3.7.3-1.fc30.x86_64",
+      "python3-libselinux-2.9-1.fc30.x86_64",
+      "python3-libsemanage-2.9-1.fc30.x86_64",
+      "python3-markupsafe-1.1.1-1.fc30.x86_64",
+      "python3-oauthlib-2.1.0-1.fc29.noarch",
+      "python3-pip-19.0.3-1.fc30.noarch",
+      "python3-ply-3.11-2.fc30.noarch",
+      "python3-policycoreutils-2.9-1.fc30.noarch",
+      "python3-prettytable-0.7.2-17.fc30.noarch",
+      "python3-pycparser-2.14-18.fc30.noarch",
+      "python3-pyrsistent-0.14.11-1.fc30.x86_64",
+      "python3-pyserial-3.4-2.fc30.noarch",
+      "python3-pysocks-1.6.8-7.fc30.noarch",
+      "python3-pytz-2018.5-2.fc30.noarch",
+      "python3-pyyaml-5.1-1.fc30.x86_64",
+      "python3-requests-2.21.0-2.fc30.noarch",
+      "python3-rpm-4.14.2.1-4.fc30.1.x86_64",
+      "python3-setools-4.1.1-14.fc30.x86_64",
+      "python3-setuptools-40.8.0-1.fc30.noarch",
+      "python3-six-1.12.0-1.fc30.noarch",
+      "python3-slip-0.6.4-15.fc30.noarch",
+      "python3-slip-dbus-0.6.4-15.fc30.noarch",
+      "python3-unbound-1.8.3-4.fc30.x86_64",
+      "python3-urllib3-1.24.1-3.fc30.noarch",
+      "qrencode-libs-3.4.4-8.fc30.x86_64",
+      "readline-8.0-2.fc30.x86_64",
+      "rootfiles-8.1-24.fc30.noarch",
+      "rpm-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-build-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-selinux-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-systemd-inhibit-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-sign-libs-4.14.2.1-4.fc30.1.x86_64",
+      "sed-4.5-3.fc30.x86_64",
+      "selinux-policy-3.14.3-29.fc30.noarch",
+      "selinux-policy-targeted-3.14.3-29.fc30.noarch",
+      "setup-2.13.3-1.fc30.noarch",
+      "shadow-utils-4.6-8.fc30.x86_64",
+      "shared-mime-info-1.12-2.fc30.x86_64",
+      "sqlite-libs-3.26.0-3.fc30.x86_64",
+      "sssd-client-2.1.0-2.fc30.x86_64",
+      "sssd-common-2.1.0-2.fc30.x86_64",
+      "sssd-kcm-2.1.0-2.fc30.x86_64",
+      "sssd-nfs-idmap-2.1.0-2.fc30.x86_64",
+      "sudo-1.8.27-1.fc30.x86_64",
+      "systemd-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-bootchart-233-4.fc30.x86_64",
+      "systemd-libs-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-pam-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-rpm-macros-241-7.gita2eaa1c.fc30.noarch",
+      "systemd-udev-241-7.gita2eaa1c.fc30.x86_64",
+      "timedatex-0.5-6.fc30.x86_64",
+      "trousers-0.3.13-12.fc30.x86_64",
+      "trousers-lib-0.3.13-12.fc30.x86_64",
+      "tzdata-2019a-1.fc30.noarch",
+      "unbound-libs-1.8.3-4.fc30.x86_64",
+      "util-linux-2.33.2-1.fc30.x86_64",
+      "vim-minimal-8.1.1137-1.fc30.x86_64",
+      "which-2.21-14.fc30.x86_64",
+      "whois-nls-5.4.2-1.fc30.noarch",
+      "xfsprogs-4.19.0-4.fc30.x86_64",
+      "xkeyboard-config-2.24-5.fc30.noarch",
+      "xz-5.2.4-5.fc30.x86_64",
+      "xz-libs-5.2.4-5.fc30.x86_64",
+      "zchunk-libs-1.1.1-3.fc30.x86_64",
+      "zlib-1.2.11-15.fc30.x86_64"
+    ],
+    "partition-table": "dos",
+    "partition-table-id": "0x14fc63d2",
+    "partitions": [
+      {
+        "bootable": true,
+        "fstype": "ext4",
+        "label": null,
+        "size": 3220176896,
+        "start": 1048576,
+        "type": "83",
+        "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac"
+      }
+    ],
+    "passwd": [
+      "adm:x:3:4:adm:/var/adm:/sbin/nologin",
+      "bin:x:1:1:bin:/bin:/sbin/nologin",
+      "chrony:x:995:992::/var/lib/chrony:/sbin/nologin",
+      "daemon:x:2:2:daemon:/sbin:/sbin/nologin",
+      "dbus:x:81:81:System message bus:/:/sbin/nologin",
+      "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin",
+      "games:x:12:100:games:/usr/games:/sbin/nologin",
+      "halt:x:7:0:halt:/sbin:/sbin/halt",
+      "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin",
+      "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin",
+      "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin",
+      "operator:x:11:0:operator:/root:/sbin/nologin",
+      "polkitd:x:997:995:User for polkitd:/:/sbin/nologin",
+      "root:x:0:0:root:/root:/bin/bash",
+      "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown",
+      "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin",
+      "sync:x:5:0:sync:/sbin:/bin/sync",
+      "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin",
+      "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin",
+      "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin",
+      "systemd-timesync:x:998:996:systemd Time Synchronization:/:/sbin/nologin",
+      "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
+      "unbound:x:996:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
+    ],
+    "rpm-verify": {
+      "changed": {
+        "/boot/System.map-5.0.9-301.fc30.x86_64": ".M.......",
+        "/boot/initramfs-5.0.9-301.fc30.x86_64.img": ".M.......",
+        "/etc/udev/hwdb.bin": ".M.......",
+        "/proc": ".M.......",
+        "/run/cryptsetup": ".M.......",
+        "/sys": ".M.......",
+        "/var/log/btmp": ".M.......",
+        "/var/log/journal": ".M....G..",
+        "/var/log/lastlog": ".M....G.."
+      },
+      "missing": [
+        "/etc/systemd/system/dbus-org.freedesktop.network1.service",
+        "/etc/systemd/system/dbus-org.freedesktop.resolve1.service"
+      ]
+    }
   }
 }
diff --git a/tools/test_image_info/pipelines/disk_empty_blueprint.json b/tools/test_image_info/pipelines/disk_empty_blueprint.json
index 9d2aec9eb..dd2ce4587 100644
--- a/tools/test_image_info/pipelines/disk_empty_blueprint.json
+++ b/tools/test_image_info/pipelines/disk_empty_blueprint.json
@@ -43,24 +43,21 @@
             }
           ],
           "packages": [
-            "@Core",
+            "@core",
             "chrony",
-            "kernel",
-            "selinux-policy-targeted",
+            "firewalld",
             "grub2-pc",
-            "spice-vdagent",
-            "qemu-guest-agent",
-            "xen-libs",
-            "langpacks-en"
+            "kernel",
+            "langpacks-en",
+            "selinux-policy-targeted"
+          ],
+          "exclude_packages": [
+            "dracut-config-rescue"
           ],
           "releasever": "30",
           "basearch": "x86_64"
         }
       },
-      {
-        "name": "org.osbuild.fix-bls",
-        "options": {}
-      },
       {
         "name": "org.osbuild.locale",
         "options": {
@@ -90,6 +87,10 @@
           "kernel_opts": "ro biosdevname=0 net.ifnames=0"
         }
       },
+      {
+        "name": "org.osbuild.fix-bls",
+        "options": {}
+      },
       {
         "name": "org.osbuild.selinux",
         "options": {
@@ -101,11 +102,477 @@
       "name": "org.osbuild.qemu",
       "options": {
         "format": "raw",
-        "filename": "image.img",
+        "filename": "disk.img",
         "ptuuid": "0x14fc63d2",
         "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac",
         "size": 3221225472
       }
     }
+  },
+  "expected": {
+    "bootloader": "grub",
+    "bootmenu": [
+      {
+        "grub_arg": "--unrestricted",
+        "grub_class": "kernel",
+        "grub_users": "$grub_users",
+        "initrd": "/initramfs-0-rescue-ffffffffffffffffffffffffffffffff.img",
+        "linux": "/vmlinuz-0-rescue-ffffffffffffffffffffffffffffffff",
+        "options": "$kernelopts",
+        "title": "Fedora (0-rescue-ffffffffffffffffffffffffffffffff) 30 (Thirty)",
+        "version": "0-rescue-ffffffffffffffffffffffffffffffff"
+      },
+      {
+        "grub_arg": "--unrestricted",
+        "grub_class": "kernel",
+        "grub_users": "$grub_users",
+        "initrd": "/boot/initramfs-5.0.9-301.fc30.x86_64.img",
+        "linux": "/boot/vmlinuz-5.0.9-301.fc30.x86_64",
+        "options": "$kernelopts",
+        "title": "Fedora (5.0.9-301.fc30.x86_64) 30 (Thirty)",
+        "version": "5.0.9-301.fc30.x86_64"
+      }
+    ],
+    "fstab": [
+      [
+        "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac",
+        "/",
+        "ext4",
+        "defaults",
+        "1",
+        "1"
+      ]
+    ],
+    "groups": [
+      "adm:x:4:",
+      "audio:x:63:",
+      "bin:x:1:",
+      "cdrom:x:11:",
+      "chrony:x:992:",
+      "daemon:x:2:",
+      "dbus:x:81:",
+      "dialout:x:18:",
+      "disk:x:6:",
+      "floppy:x:19:",
+      "ftp:x:50:",
+      "games:x:20:",
+      "input:x:999:",
+      "kmem:x:9:",
+      "kvm:x:36:",
+      "lock:x:54:",
+      "lp:x:7:",
+      "mail:x:12:",
+      "man:x:15:",
+      "mem:x:8:",
+      "nobody:x:65534:",
+      "polkitd:x:995:",
+      "render:x:998:",
+      "root:x:0:",
+      "ssh_keys:x:994:",
+      "sshd:x:74:",
+      "sys:x:3:",
+      "systemd-coredump:x:997:",
+      "systemd-journal:x:190:",
+      "systemd-network:x:192:",
+      "systemd-resolve:x:193:",
+      "systemd-timesync:x:996:",
+      "tape:x:33:",
+      "tss:x:59:",
+      "tty:x:5:",
+      "unbound:x:993:",
+      "users:x:100:",
+      "utempter:x:35:",
+      "utmp:x:22:",
+      "video:x:39:",
+      "wheel:x:10:"
+    ],
+    "image-format": "raw",
+    "os-release": {
+      "ANSI_COLOR": "0;34",
+      "BUG_REPORT_URL": "https://bugzilla.redhat.com/",
+      "CPE_NAME": "cpe:/o:fedoraproject:fedora:30",
+      "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f30/system-administrators-guide/",
+      "HOME_URL": "https://fedoraproject.org/",
+      "ID": "fedora",
+      "LOGO": "fedora-logo-icon",
+      "NAME": "Fedora",
+      "PLATFORM_ID": "platform:f30",
+      "PRETTY_NAME": "Fedora 30 (Thirty)",
+      "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy",
+      "REDHAT_BUGZILLA_PRODUCT": "Fedora",
+      "REDHAT_BUGZILLA_PRODUCT_VERSION": "30",
+      "REDHAT_SUPPORT_PRODUCT": "Fedora",
+      "REDHAT_SUPPORT_PRODUCT_VERSION": "30",
+      "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help",
+      "VERSION": "30 (Thirty)",
+      "VERSION_CODENAME": "",
+      "VERSION_ID": "30"
+    },
+    "packages": [
+      "NetworkManager-1.16.0-1.fc30.x86_64",
+      "NetworkManager-libnm-1.16.0-1.fc30.x86_64",
+      "acl-2.2.53-3.fc30.x86_64",
+      "alternatives-1.11-4.fc30.x86_64",
+      "audit-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "audit-libs-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "basesystem-11-7.fc30.noarch",
+      "bash-5.0.2-1.fc30.x86_64",
+      "bind-export-libs-9.11.5-13.P4.fc30.x86_64",
+      "brotli-1.0.7-3.fc30.x86_64",
+      "bzip2-libs-1.0.6-29.fc30.x86_64",
+      "c-ares-1.15.0-3.fc30.x86_64",
+      "ca-certificates-2018.2.26-3.fc30.noarch",
+      "chrony-3.4-2.fc30.x86_64",
+      "coreutils-8.31-1.fc30.x86_64",
+      "coreutils-common-8.31-1.fc30.x86_64",
+      "cpio-2.12-10.fc30.x86_64",
+      "cracklib-2.9.6-19.fc30.x86_64",
+      "cracklib-dicts-2.9.6-19.fc30.x86_64",
+      "crypto-policies-20190211-2.gite3eacfc.fc30.noarch",
+      "cryptsetup-libs-2.1.0-3.fc30.x86_64",
+      "curl-7.64.0-6.fc30.x86_64",
+      "cyrus-sasl-lib-2.1.27-0.6rc7.fc30.x86_64",
+      "dbus-1.12.12-7.fc30.x86_64",
+      "dbus-broker-20-3.fc30.x86_64",
+      "dbus-common-1.12.12-7.fc30.noarch",
+      "dbus-libs-1.12.12-7.fc30.x86_64",
+      "deltarpm-3.6-29.fc30.x86_64",
+      "device-mapper-1.02.154-3.fc30.x86_64",
+      "device-mapper-libs-1.02.154-3.fc30.x86_64",
+      "dhcp-client-4.3.6-32.fc30.x86_64",
+      "dhcp-common-4.3.6-32.fc30.noarch",
+      "dhcp-libs-4.3.6-32.fc30.x86_64",
+      "diffutils-3.7-2.fc30.x86_64",
+      "dnf-4.2.2-2.fc30.noarch",
+      "dnf-data-4.2.2-2.fc30.noarch",
+      "dnf-plugins-core-4.0.6-1.fc30.noarch",
+      "dnf-yum-4.2.2-2.fc30.noarch",
+      "dracut-049-26.git20181204.fc30.x86_64",
+      "dracut-config-rescue-049-26.git20181204.fc30.x86_64",
+      "e2fsprogs-1.44.6-1.fc30.x86_64",
+      "e2fsprogs-libs-1.44.6-1.fc30.x86_64",
+      "ebtables-2.0.10-31.fc30.x86_64",
+      "elfutils-default-yama-scope-0.176-1.fc30.noarch",
+      "elfutils-libelf-0.176-1.fc30.x86_64",
+      "elfutils-libs-0.176-1.fc30.x86_64",
+      "expat-2.2.6-2.fc30.x86_64",
+      "fedora-gpg-keys-30-1.noarch",
+      "fedora-release-30-1.noarch",
+      "fedora-release-common-30-1.noarch",
+      "fedora-repos-30-1.noarch",
+      "file-5.36-2.fc30.x86_64",
+      "file-libs-5.36-2.fc30.x86_64",
+      "filesystem-3.10-1.fc30.x86_64",
+      "findutils-4.6.0-22.fc30.x86_64",
+      "fipscheck-1.5.0-6.fc30.x86_64",
+      "fipscheck-lib-1.5.0-6.fc30.x86_64",
+      "firewalld-0.6.3-2.fc30.noarch",
+      "firewalld-filesystem-0.6.3-2.fc30.noarch",
+      "freetype-2.9.1-7.fc30.x86_64",
+      "fuse-libs-2.9.9-3.fc30.x86_64",
+      "gawk-4.2.1-6.fc30.x86_64",
+      "gdbm-libs-1.18-4.fc30.x86_64",
+      "geolite2-city-20190409-1.fc30.noarch",
+      "geolite2-country-20190409-1.fc30.noarch",
+      "gettext-0.19.8.1-18.fc30.x86_64",
+      "gettext-libs-0.19.8.1-18.fc30.x86_64",
+      "glib2-2.60.1-2.fc30.x86_64",
+      "glibc-2.29-9.fc30.x86_64",
+      "glibc-common-2.29-9.fc30.x86_64",
+      "glibc-langpack-en-2.29-9.fc30.x86_64",
+      "gmp-6.1.2-10.fc30.x86_64",
+      "gnupg2-2.2.13-1.fc30.x86_64",
+      "gnupg2-smime-2.2.13-1.fc30.x86_64",
+      "gnutls-3.6.7-1.fc30.x86_64",
+      "gobject-introspection-1.60.1-2.fc30.x86_64",
+      "gpg-pubkey-cfc659b9-5b6eac67",
+      "gpgme-1.12.0-1.fc30.x86_64",
+      "grep-3.1-9.fc30.x86_64",
+      "groff-base-1.22.3-19.fc30.x86_64",
+      "grub2-common-2.02-75.fc30.noarch",
+      "grub2-pc-2.02-75.fc30.x86_64",
+      "grub2-pc-modules-2.02-75.fc30.noarch",
+      "grub2-tools-2.02-75.fc30.x86_64",
+      "grub2-tools-extra-2.02-75.fc30.x86_64",
+      "grub2-tools-minimal-2.02-75.fc30.x86_64",
+      "grubby-8.40-30.fc30.x86_64",
+      "gzip-1.9-9.fc30.x86_64",
+      "hardlink-1.3-8.fc30.x86_64",
+      "hostname-3.20-8.fc30.x86_64",
+      "ima-evm-utils-1.1-5.fc30.x86_64",
+      "ipcalc-0.2.5-2.fc30.x86_64",
+      "iproute-5.0.0-2.fc30.x86_64",
+      "iproute-tc-5.0.0-2.fc30.x86_64",
+      "ipset-6.38-2.fc30.x86_64",
+      "ipset-libs-6.38-2.fc30.x86_64",
+      "iptables-1.8.0-5.fc30.x86_64",
+      "iptables-libs-1.8.0-5.fc30.x86_64",
+      "iputils-20180629-4.fc30.x86_64",
+      "jansson-2.12-2.fc30.x86_64",
+      "json-c-0.13.1-4.fc30.x86_64",
+      "kbd-2.0.4-13.fc30.x86_64",
+      "kbd-legacy-2.0.4-13.fc30.noarch",
+      "kbd-misc-2.0.4-13.fc30.noarch",
+      "kernel-5.0.9-301.fc30.x86_64",
+      "kernel-core-5.0.9-301.fc30.x86_64",
+      "kernel-modules-5.0.9-301.fc30.x86_64",
+      "keyutils-libs-1.6-2.fc30.x86_64",
+      "kmod-25-5.fc30.x86_64",
+      "kmod-libs-25-5.fc30.x86_64",
+      "kpartx-0.7.9-6.git2df6110.fc30.x86_64",
+      "krb5-libs-1.17-4.fc30.x86_64",
+      "langpacks-en-1.0-17.fc30.noarch",
+      "less-530-4.fc30.x86_64",
+      "libacl-2.2.53-3.fc30.x86_64",
+      "libarchive-3.3.3-6.fc30.x86_64",
+      "libargon2-20161029-8.fc30.x86_64",
+      "libassuan-2.5.2-2.fc30.x86_64",
+      "libattr-2.4.48-5.fc30.x86_64",
+      "libbasicobjects-0.1.1-42.fc30.x86_64",
+      "libblkid-2.33.2-1.fc30.x86_64",
+      "libcap-2.26-5.fc30.x86_64",
+      "libcap-ng-0.7.9-7.fc30.x86_64",
+      "libcollection-0.7.0-42.fc30.x86_64",
+      "libcom_err-1.44.6-1.fc30.x86_64",
+      "libcomps-0.1.11-1.fc30.x86_64",
+      "libcroco-0.6.13-1.fc30.x86_64",
+      "libcurl-7.64.0-6.fc30.x86_64",
+      "libdb-5.3.28-37.fc30.x86_64",
+      "libdb-utils-5.3.28-37.fc30.x86_64",
+      "libdhash-0.5.0-42.fc30.x86_64",
+      "libdnf-0.28.1-1.fc30.x86_64",
+      "libedit-3.1-26.20181209cvs.fc30.x86_64",
+      "libevent-2.1.8-5.fc30.x86_64",
+      "libfdisk-2.33.2-1.fc30.x86_64",
+      "libffi-3.1-19.fc30.x86_64",
+      "libgcc-9.0.1-0.10.fc30.x86_64",
+      "libgcrypt-1.8.4-3.fc30.x86_64",
+      "libgomp-9.0.1-0.10.fc30.x86_64",
+      "libgpg-error-1.33-2.fc30.x86_64",
+      "libidn2-2.1.1a-1.fc30.x86_64",
+      "libini_config-1.3.1-42.fc30.x86_64",
+      "libkcapi-1.1.4-1.fc30.x86_64",
+      "libkcapi-hmaccalc-1.1.4-1.fc30.x86_64",
+      "libksba-1.3.5-9.fc30.x86_64",
+      "libldb-1.5.4-1.fc30.x86_64",
+      "libmaxminddb-1.2.0-7.fc30.x86_64",
+      "libmetalink-0.1.3-8.fc30.x86_64",
+      "libmnl-1.0.4-9.fc30.x86_64",
+      "libmodulemd1-1.8.6-3.fc30.x86_64",
+      "libmount-2.33.2-1.fc30.x86_64",
+      "libndp-1.7-3.fc30.x86_64",
+      "libnetfilter_conntrack-1.0.7-2.fc30.x86_64",
+      "libnfnetlink-1.0.1-15.fc30.x86_64",
+      "libnfsidmap-2.3.3-7.rc2.fc30.x86_64",
+      "libnftnl-1.1.1-6.fc30.x86_64",
+      "libnghttp2-1.37.0-1.fc30.x86_64",
+      "libnl3-3.4.0-8.fc30.x86_64",
+      "libnsl2-1.2.0-4.20180605git4a062cf.fc30.x86_64",
+      "libpath_utils-0.2.1-42.fc30.x86_64",
+      "libpcap-1.9.0-3.fc30.x86_64",
+      "libpipeline-1.5.1-2.fc30.x86_64",
+      "libpng-1.6.36-1.fc30.x86_64",
+      "libpsl-0.20.2-6.fc30.x86_64",
+      "libpwquality-1.4.0-12.fc30.x86_64",
+      "libref_array-0.1.5-42.fc30.x86_64",
+      "librepo-1.9.6-2.fc30.x86_64",
+      "libreport-filesystem-2.10.0-1.fc30.noarch",
+      "libseccomp-2.4.0-0.fc30.x86_64",
+      "libsecret-0.18.8-1.fc30.x86_64",
+      "libselinux-2.9-1.fc30.x86_64",
+      "libselinux-utils-2.9-1.fc30.x86_64",
+      "libsemanage-2.9-1.fc30.x86_64",
+      "libsepol-2.9-1.fc30.x86_64",
+      "libsigsegv-2.11-7.fc30.x86_64",
+      "libsmartcols-2.33.2-1.fc30.x86_64",
+      "libsolv-0.7.4-2.fc30.x86_64",
+      "libss-1.44.6-1.fc30.x86_64",
+      "libssh-0.8.7-1.fc30.x86_64",
+      "libsss_autofs-2.1.0-2.fc30.x86_64",
+      "libsss_certmap-2.1.0-2.fc30.x86_64",
+      "libsss_idmap-2.1.0-2.fc30.x86_64",
+      "libsss_nss_idmap-2.1.0-2.fc30.x86_64",
+      "libsss_sudo-2.1.0-2.fc30.x86_64",
+      "libstdc++-9.0.1-0.10.fc30.x86_64",
+      "libtalloc-2.1.16-1.fc30.x86_64",
+      "libtasn1-4.13-7.fc30.x86_64",
+      "libtdb-1.3.18-1.fc30.x86_64",
+      "libtevent-0.9.39-1.fc30.x86_64",
+      "libtirpc-1.1.4-2.rc2.fc30.1.x86_64",
+      "libunistring-0.9.10-5.fc30.x86_64",
+      "libusbx-1.0.22-2.fc30.x86_64",
+      "libuser-0.62-20.fc30.x86_64",
+      "libutempter-1.1.6-16.fc30.x86_64",
+      "libuuid-2.33.2-1.fc30.x86_64",
+      "libverto-0.3.0-7.fc30.x86_64",
+      "libxcrypt-4.4.4-2.fc30.x86_64",
+      "libxkbcommon-0.8.3-1.fc30.x86_64",
+      "libxml2-2.9.9-2.fc30.x86_64",
+      "libyaml-0.2.1-5.fc30.x86_64",
+      "libzstd-1.3.8-2.fc30.x86_64",
+      "linux-atm-libs-2.5.1-21.fc29.x86_64",
+      "linux-firmware-20190312-94.fc30.noarch",
+      "linux-firmware-whence-20190312-94.fc30.noarch",
+      "lmdb-libs-0.9.23-2.fc30.x86_64",
+      "lua-libs-5.3.5-5.fc30.x86_64",
+      "lz4-libs-1.8.3-2.fc30.x86_64",
+      "man-db-2.8.4-4.fc30.x86_64",
+      "mkpasswd-5.4.2-1.fc30.x86_64",
+      "mozjs60-60.4.0-5.fc30.x86_64",
+      "mpfr-3.1.6-4.fc30.x86_64",
+      "ncurses-6.1-10.20180923.fc30.x86_64",
+      "ncurses-base-6.1-10.20180923.fc30.noarch",
+      "ncurses-libs-6.1-10.20180923.fc30.x86_64",
+      "nettle-3.4.1rc1-2.fc30.x86_64",
+      "nftables-0.9.0-5.fc30.x86_64",
+      "npth-1.6-2.fc30.x86_64",
+      "openldap-2.4.47-1.fc30.x86_64",
+      "openssh-7.9p1-5.fc30.x86_64",
+      "openssh-clients-7.9p1-5.fc30.x86_64",
+      "openssh-server-7.9p1-5.fc30.x86_64",
+      "openssl-1.1.1b-3.fc30.x86_64",
+      "openssl-libs-1.1.1b-3.fc30.x86_64",
+      "openssl-pkcs11-0.4.10-1.fc30.x86_64",
+      "os-prober-1.74-8.fc30.x86_64",
+      "p11-kit-0.23.15-3.fc30.x86_64",
+      "p11-kit-trust-0.23.15-3.fc30.x86_64",
+      "pam-1.3.1-17.fc30.x86_64",
+      "parted-3.2-40.fc30.x86_64",
+      "passwd-0.80-5.fc30.x86_64",
+      "pcre-8.43-1.fc30.x86_64",
+      "pcre2-10.32-9.fc30.x86_64",
+      "pigz-2.4-4.fc30.x86_64",
+      "pinentry-1.1.0-5.fc30.x86_64",
+      "plymouth-0.9.4-5.fc30.x86_64",
+      "plymouth-core-libs-0.9.4-5.fc30.x86_64",
+      "plymouth-scripts-0.9.4-5.fc30.x86_64",
+      "policycoreutils-2.9-1.fc30.x86_64",
+      "polkit-0.115-10.fc30.1.x86_64",
+      "polkit-libs-0.115-10.fc30.1.x86_64",
+      "polkit-pkla-compat-0.1-14.fc30.x86_64",
+      "popt-1.16-17.fc30.x86_64",
+      "procps-ng-3.3.15-5.fc30.x86_64",
+      "publicsuffix-list-dafsa-20190128-2.fc30.noarch",
+      "python-pip-wheel-19.0.3-1.fc30.noarch",
+      "python-setuptools-wheel-40.8.0-1.fc30.noarch",
+      "python3-3.7.3-1.fc30.x86_64",
+      "python3-dateutil-2.8.0-1.fc30.noarch",
+      "python3-dbus-1.2.8-5.fc30.x86_64",
+      "python3-decorator-4.3.0-2.fc30.noarch",
+      "python3-distro-1.4.0-1.fc30.noarch",
+      "python3-dnf-4.2.2-2.fc30.noarch",
+      "python3-dnf-plugins-core-4.0.6-1.fc30.noarch",
+      "python3-firewall-0.6.3-2.fc30.noarch",
+      "python3-gobject-base-3.32.0-1.fc30.x86_64",
+      "python3-gpg-1.12.0-1.fc30.x86_64",
+      "python3-hawkey-0.28.1-1.fc30.x86_64",
+      "python3-libcomps-0.1.11-1.fc30.x86_64",
+      "python3-libdnf-0.28.1-1.fc30.x86_64",
+      "python3-libs-3.7.3-1.fc30.x86_64",
+      "python3-libselinux-2.9-1.fc30.x86_64",
+      "python3-pip-19.0.3-1.fc30.noarch",
+      "python3-rpm-4.14.2.1-4.fc30.1.x86_64",
+      "python3-setuptools-40.8.0-1.fc30.noarch",
+      "python3-six-1.12.0-1.fc30.noarch",
+      "python3-slip-0.6.4-15.fc30.noarch",
+      "python3-slip-dbus-0.6.4-15.fc30.noarch",
+      "python3-unbound-1.8.3-4.fc30.x86_64",
+      "qrencode-libs-3.4.4-8.fc30.x86_64",
+      "readline-8.0-2.fc30.x86_64",
+      "rootfiles-8.1-24.fc30.noarch",
+      "rpm-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-build-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-selinux-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-systemd-inhibit-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-sign-libs-4.14.2.1-4.fc30.1.x86_64",
+      "sed-4.5-3.fc30.x86_64",
+      "selinux-policy-3.14.3-29.fc30.noarch",
+      "selinux-policy-targeted-3.14.3-29.fc30.noarch",
+      "setup-2.13.3-1.fc30.noarch",
+      "shadow-utils-4.6-8.fc30.x86_64",
+      "shared-mime-info-1.12-2.fc30.x86_64",
+      "sqlite-libs-3.26.0-3.fc30.x86_64",
+      "sssd-client-2.1.0-2.fc30.x86_64",
+      "sssd-common-2.1.0-2.fc30.x86_64",
+      "sssd-kcm-2.1.0-2.fc30.x86_64",
+      "sssd-nfs-idmap-2.1.0-2.fc30.x86_64",
+      "sudo-1.8.27-1.fc30.x86_64",
+      "systemd-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-bootchart-233-4.fc30.x86_64",
+      "systemd-libs-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-pam-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-rpm-macros-241-7.gita2eaa1c.fc30.noarch",
+      "systemd-udev-241-7.gita2eaa1c.fc30.x86_64",
+      "timedatex-0.5-6.fc30.x86_64",
+      "trousers-0.3.13-12.fc30.x86_64",
+      "trousers-lib-0.3.13-12.fc30.x86_64",
+      "tzdata-2019a-1.fc30.noarch",
+      "unbound-libs-1.8.3-4.fc30.x86_64",
+      "util-linux-2.33.2-1.fc30.x86_64",
+      "vim-minimal-8.1.1137-1.fc30.x86_64",
+      "which-2.21-14.fc30.x86_64",
+      "whois-nls-5.4.2-1.fc30.noarch",
+      "xkeyboard-config-2.24-5.fc30.noarch",
+      "xz-5.2.4-5.fc30.x86_64",
+      "xz-libs-5.2.4-5.fc30.x86_64",
+      "zchunk-libs-1.1.1-3.fc30.x86_64",
+      "zlib-1.2.11-15.fc30.x86_64"
+    ],
+    "partition-table": "dos",
+    "partition-table-id": "0x14fc63d2",
+    "partitions": [
+      {
+        "bootable": true,
+        "fstype": "ext4",
+        "label": null,
+        "size": 3220176896,
+        "start": 1048576,
+        "type": "83",
+        "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac"
+      }
+    ],
+    "passwd": [
+      "adm:x:3:4:adm:/var/adm:/sbin/nologin",
+      "bin:x:1:1:bin:/bin:/sbin/nologin",
+      "chrony:x:995:992::/var/lib/chrony:/sbin/nologin",
+      "daemon:x:2:2:daemon:/sbin:/sbin/nologin",
+      "dbus:x:81:81:System message bus:/:/sbin/nologin",
+      "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin",
+      "games:x:12:100:games:/usr/games:/sbin/nologin",
+      "halt:x:7:0:halt:/sbin:/sbin/halt",
+      "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin",
+      "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin",
+      "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin",
+      "operator:x:11:0:operator:/root:/sbin/nologin",
+      "polkitd:x:997:995:User for polkitd:/:/sbin/nologin",
+      "root:x:0:0:root:/root:/bin/bash",
+      "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown",
+      "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin",
+      "sync:x:5:0:sync:/sbin:/bin/sync",
+      "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin",
+      "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin",
+      "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin",
+      "systemd-timesync:x:998:996:systemd Time Synchronization:/:/sbin/nologin",
+      "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
+      "unbound:x:996:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
+    ],
+    "rpm-verify": {
+      "changed": {
+        "/boot/System.map-5.0.9-301.fc30.x86_64": ".M.......",
+        "/boot/initramfs-5.0.9-301.fc30.x86_64.img": ".M.......",
+        "/etc/udev/hwdb.bin": ".M.......",
+        "/proc": ".M.......",
+        "/run/cryptsetup": ".M.......",
+        "/sys": ".M.......",
+        "/var/log/btmp": ".M.......",
+        "/var/log/journal": ".M....G..",
+        "/var/log/lastlog": ".M....G.."
+      },
+      "missing": [
+        "/etc/systemd/system/dbus-org.freedesktop.network1.service",
+        "/etc/systemd/system/dbus-org.freedesktop.resolve1.service"
+      ]
+    }
   }
 }
diff --git a/tools/test_image_info/pipelines/ext4_empty_blueprint.json b/tools/test_image_info/pipelines/ext4_empty_blueprint.json
index c581a9695..a83129a77 100644
--- a/tools/test_image_info/pipelines/ext4_empty_blueprint.json
+++ b/tools/test_image_info/pipelines/ext4_empty_blueprint.json
@@ -43,30 +43,38 @@
             }
           ],
           "packages": [
-            "@Core",
-            "chrony",
-            "kernel",
+            "policycoreutils",
             "selinux-policy-targeted",
-            "grub2-pc",
-            "spice-vdagent",
-            "qemu-guest-agent",
-            "xen-libs",
+            "kernel",
+            "firewalld",
+            "chrony",
             "langpacks-en"
           ],
+          "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",
+          "boot_fs_uuid": "00000000-0000-0000-0000-000000000000",
+          "kernel_opts": "ro biosdevname=0 net.ifnames=0"
+        }
+      },
+      {
+        "name": "org.osbuild.fix-bls",
+        "options": {}
+      },
       {
         "name": "org.osbuild.selinux",
         "options": {
@@ -77,10 +85,345 @@
     "assembler": {
       "name": "org.osbuild.rawfs",
       "options": {
-        "filename": "image.img",
+        "filename": "filesystem.img",
         "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac",
         "size": 3221225472
       }
     }
+  },
+  "expected": {
+    "bootloader": "unknown",
+    "bootmenu": [
+      {
+        "grub_arg": "--unrestricted",
+        "grub_class": "kernel",
+        "grub_users": "$grub_users",
+        "initrd": "/boot/initramfs-5.0.9-301.fc30.x86_64.img",
+        "linux": "/boot/vmlinuz-5.0.9-301.fc30.x86_64",
+        "options": "$kernelopts",
+        "title": "Fedora (5.0.9-301.fc30.x86_64) 30 (Thirty)",
+        "version": "5.0.9-301.fc30.x86_64"
+      }
+    ],
+    "groups": [
+      "adm:x:4:",
+      "audio:x:63:",
+      "bin:x:1:",
+      "cdrom:x:11:",
+      "chrony:x:994:",
+      "daemon:x:2:",
+      "dbus:x:81:",
+      "dialout:x:18:",
+      "disk:x:6:",
+      "floppy:x:19:",
+      "ftp:x:50:",
+      "games:x:20:",
+      "input:x:999:",
+      "kmem:x:9:",
+      "kvm:x:36:",
+      "lock:x:54:",
+      "lp:x:7:",
+      "mail:x:12:",
+      "man:x:15:",
+      "mem:x:8:",
+      "nobody:x:65534:",
+      "polkitd:x:995:",
+      "render:x:998:",
+      "root:x:0:",
+      "sys:x:3:",
+      "systemd-coredump:x:997:",
+      "systemd-journal:x:190:",
+      "systemd-network:x:192:",
+      "systemd-resolve:x:193:",
+      "systemd-timesync:x:996:",
+      "tape:x:33:",
+      "tss:x:59:",
+      "tty:x:5:",
+      "users:x:100:",
+      "utempter:x:35:",
+      "utmp:x:22:",
+      "video:x:39:",
+      "wheel:x:10:"
+    ],
+    "image-format": "raw",
+    "os-release": {
+      "ANSI_COLOR": "0;34",
+      "BUG_REPORT_URL": "https://bugzilla.redhat.com/",
+      "CPE_NAME": "cpe:/o:fedoraproject:fedora:30",
+      "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f30/system-administrators-guide/",
+      "HOME_URL": "https://fedoraproject.org/",
+      "ID": "fedora",
+      "LOGO": "fedora-logo-icon",
+      "NAME": "Fedora",
+      "PLATFORM_ID": "platform:f30",
+      "PRETTY_NAME": "Fedora 30 (Thirty)",
+      "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy",
+      "REDHAT_BUGZILLA_PRODUCT": "Fedora",
+      "REDHAT_BUGZILLA_PRODUCT_VERSION": "30",
+      "REDHAT_SUPPORT_PRODUCT": "Fedora",
+      "REDHAT_SUPPORT_PRODUCT_VERSION": "30",
+      "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help",
+      "VERSION": "30 (Thirty)",
+      "VERSION_CODENAME": "",
+      "VERSION_ID": "30"
+    },
+    "packages": [
+      "acl-2.2.53-3.fc30.x86_64",
+      "alternatives-1.11-4.fc30.x86_64",
+      "audit-libs-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "basesystem-11-7.fc30.noarch",
+      "bash-5.0.2-1.fc30.x86_64",
+      "brotli-1.0.7-3.fc30.x86_64",
+      "bzip2-libs-1.0.6-29.fc30.x86_64",
+      "ca-certificates-2018.2.26-3.fc30.noarch",
+      "chrony-3.4-2.fc30.x86_64",
+      "coreutils-8.31-1.fc30.x86_64",
+      "coreutils-common-8.31-1.fc30.x86_64",
+      "cpio-2.12-10.fc30.x86_64",
+      "cracklib-2.9.6-19.fc30.x86_64",
+      "cracklib-dicts-2.9.6-19.fc30.x86_64",
+      "crypto-policies-20190211-2.gite3eacfc.fc30.noarch",
+      "cryptsetup-libs-2.1.0-3.fc30.x86_64",
+      "curl-7.64.0-6.fc30.x86_64",
+      "cyrus-sasl-lib-2.1.27-0.6rc7.fc30.x86_64",
+      "dbus-1.12.12-7.fc30.x86_64",
+      "dbus-broker-20-3.fc30.x86_64",
+      "dbus-common-1.12.12-7.fc30.noarch",
+      "dbus-libs-1.12.12-7.fc30.x86_64",
+      "device-mapper-1.02.154-3.fc30.x86_64",
+      "device-mapper-libs-1.02.154-3.fc30.x86_64",
+      "diffutils-3.7-2.fc30.x86_64",
+      "dracut-049-26.git20181204.fc30.x86_64",
+      "ebtables-2.0.10-31.fc30.x86_64",
+      "elfutils-default-yama-scope-0.176-1.fc30.noarch",
+      "elfutils-libelf-0.176-1.fc30.x86_64",
+      "elfutils-libs-0.176-1.fc30.x86_64",
+      "expat-2.2.6-2.fc30.x86_64",
+      "fedora-gpg-keys-30-1.noarch",
+      "fedora-release-30-1.noarch",
+      "fedora-release-common-30-1.noarch",
+      "fedora-repos-30-1.noarch",
+      "file-5.36-2.fc30.x86_64",
+      "file-libs-5.36-2.fc30.x86_64",
+      "filesystem-3.10-1.fc30.x86_64",
+      "findutils-4.6.0-22.fc30.x86_64",
+      "firewalld-0.6.3-2.fc30.noarch",
+      "firewalld-filesystem-0.6.3-2.fc30.noarch",
+      "gawk-4.2.1-6.fc30.x86_64",
+      "gdbm-libs-1.18-4.fc30.x86_64",
+      "gettext-0.19.8.1-18.fc30.x86_64",
+      "gettext-libs-0.19.8.1-18.fc30.x86_64",
+      "glib2-2.60.1-2.fc30.x86_64",
+      "glibc-2.29-9.fc30.x86_64",
+      "glibc-common-2.29-9.fc30.x86_64",
+      "glibc-langpack-en-2.29-9.fc30.x86_64",
+      "gmp-6.1.2-10.fc30.x86_64",
+      "gnutls-3.6.7-1.fc30.x86_64",
+      "gobject-introspection-1.60.1-2.fc30.x86_64",
+      "gpg-pubkey-cfc659b9-5b6eac67",
+      "grep-3.1-9.fc30.x86_64",
+      "grub2-common-2.02-75.fc30.noarch",
+      "grub2-tools-2.02-75.fc30.x86_64",
+      "grub2-tools-minimal-2.02-75.fc30.x86_64",
+      "grubby-8.40-30.fc30.x86_64",
+      "gzip-1.9-9.fc30.x86_64",
+      "hardlink-1.3-8.fc30.x86_64",
+      "ipset-6.38-2.fc30.x86_64",
+      "ipset-libs-6.38-2.fc30.x86_64",
+      "iptables-1.8.0-5.fc30.x86_64",
+      "iptables-libs-1.8.0-5.fc30.x86_64",
+      "jansson-2.12-2.fc30.x86_64",
+      "json-c-0.13.1-4.fc30.x86_64",
+      "kbd-2.0.4-13.fc30.x86_64",
+      "kbd-legacy-2.0.4-13.fc30.noarch",
+      "kbd-misc-2.0.4-13.fc30.noarch",
+      "kernel-5.0.9-301.fc30.x86_64",
+      "kernel-core-5.0.9-301.fc30.x86_64",
+      "kernel-modules-5.0.9-301.fc30.x86_64",
+      "keyutils-libs-1.6-2.fc30.x86_64",
+      "kmod-25-5.fc30.x86_64",
+      "kmod-libs-25-5.fc30.x86_64",
+      "kpartx-0.7.9-6.git2df6110.fc30.x86_64",
+      "krb5-libs-1.17-4.fc30.x86_64",
+      "langpacks-en-1.0-17.fc30.noarch",
+      "libacl-2.2.53-3.fc30.x86_64",
+      "libarchive-3.3.3-6.fc30.x86_64",
+      "libargon2-20161029-8.fc30.x86_64",
+      "libattr-2.4.48-5.fc30.x86_64",
+      "libblkid-2.33.2-1.fc30.x86_64",
+      "libcap-2.26-5.fc30.x86_64",
+      "libcap-ng-0.7.9-7.fc30.x86_64",
+      "libcom_err-1.44.6-1.fc30.x86_64",
+      "libcroco-0.6.13-1.fc30.x86_64",
+      "libcurl-7.64.0-6.fc30.x86_64",
+      "libdb-5.3.28-37.fc30.x86_64",
+      "libdb-utils-5.3.28-37.fc30.x86_64",
+      "libedit-3.1-26.20181209cvs.fc30.x86_64",
+      "libfdisk-2.33.2-1.fc30.x86_64",
+      "libffi-3.1-19.fc30.x86_64",
+      "libgcc-9.0.1-0.10.fc30.x86_64",
+      "libgcrypt-1.8.4-3.fc30.x86_64",
+      "libgomp-9.0.1-0.10.fc30.x86_64",
+      "libgpg-error-1.33-2.fc30.x86_64",
+      "libidn2-2.1.1a-1.fc30.x86_64",
+      "libkcapi-1.1.4-1.fc30.x86_64",
+      "libkcapi-hmaccalc-1.1.4-1.fc30.x86_64",
+      "libmetalink-0.1.3-8.fc30.x86_64",
+      "libmnl-1.0.4-9.fc30.x86_64",
+      "libmount-2.33.2-1.fc30.x86_64",
+      "libnetfilter_conntrack-1.0.7-2.fc30.x86_64",
+      "libnfnetlink-1.0.1-15.fc30.x86_64",
+      "libnftnl-1.1.1-6.fc30.x86_64",
+      "libnghttp2-1.37.0-1.fc30.x86_64",
+      "libnsl2-1.2.0-4.20180605git4a062cf.fc30.x86_64",
+      "libpcap-1.9.0-3.fc30.x86_64",
+      "libpsl-0.20.2-6.fc30.x86_64",
+      "libpwquality-1.4.0-12.fc30.x86_64",
+      "libseccomp-2.4.0-0.fc30.x86_64",
+      "libselinux-2.9-1.fc30.x86_64",
+      "libselinux-utils-2.9-1.fc30.x86_64",
+      "libsemanage-2.9-1.fc30.x86_64",
+      "libsepol-2.9-1.fc30.x86_64",
+      "libsigsegv-2.11-7.fc30.x86_64",
+      "libsmartcols-2.33.2-1.fc30.x86_64",
+      "libssh-0.8.7-1.fc30.x86_64",
+      "libstdc++-9.0.1-0.10.fc30.x86_64",
+      "libtasn1-4.13-7.fc30.x86_64",
+      "libtirpc-1.1.4-2.rc2.fc30.1.x86_64",
+      "libunistring-0.9.10-5.fc30.x86_64",
+      "libutempter-1.1.6-16.fc30.x86_64",
+      "libuuid-2.33.2-1.fc30.x86_64",
+      "libverto-0.3.0-7.fc30.x86_64",
+      "libxcrypt-4.4.4-2.fc30.x86_64",
+      "libxkbcommon-0.8.3-1.fc30.x86_64",
+      "libxml2-2.9.9-2.fc30.x86_64",
+      "libzstd-1.3.8-2.fc30.x86_64",
+      "linux-firmware-20190312-94.fc30.noarch",
+      "linux-firmware-whence-20190312-94.fc30.noarch",
+      "lua-libs-5.3.5-5.fc30.x86_64",
+      "lz4-libs-1.8.3-2.fc30.x86_64",
+      "mkpasswd-5.4.2-1.fc30.x86_64",
+      "mozjs60-60.4.0-5.fc30.x86_64",
+      "mpfr-3.1.6-4.fc30.x86_64",
+      "ncurses-6.1-10.20180923.fc30.x86_64",
+      "ncurses-base-6.1-10.20180923.fc30.noarch",
+      "ncurses-libs-6.1-10.20180923.fc30.x86_64",
+      "nettle-3.4.1rc1-2.fc30.x86_64",
+      "nftables-0.9.0-5.fc30.x86_64",
+      "openldap-2.4.47-1.fc30.x86_64",
+      "openssl-1.1.1b-3.fc30.x86_64",
+      "openssl-libs-1.1.1b-3.fc30.x86_64",
+      "openssl-pkcs11-0.4.10-1.fc30.x86_64",
+      "os-prober-1.74-8.fc30.x86_64",
+      "p11-kit-0.23.15-3.fc30.x86_64",
+      "p11-kit-trust-0.23.15-3.fc30.x86_64",
+      "pam-1.3.1-17.fc30.x86_64",
+      "pcre-8.43-1.fc30.x86_64",
+      "pcre2-10.32-9.fc30.x86_64",
+      "pigz-2.4-4.fc30.x86_64",
+      "policycoreutils-2.9-1.fc30.x86_64",
+      "polkit-0.115-10.fc30.1.x86_64",
+      "polkit-libs-0.115-10.fc30.1.x86_64",
+      "polkit-pkla-compat-0.1-14.fc30.x86_64",
+      "popt-1.16-17.fc30.x86_64",
+      "procps-ng-3.3.15-5.fc30.x86_64",
+      "publicsuffix-list-dafsa-20190128-2.fc30.noarch",
+      "python-pip-wheel-19.0.3-1.fc30.noarch",
+      "python-setuptools-wheel-40.8.0-1.fc30.noarch",
+      "python3-3.7.3-1.fc30.x86_64",
+      "python3-dbus-1.2.8-5.fc30.x86_64",
+      "python3-decorator-4.3.0-2.fc30.noarch",
+      "python3-firewall-0.6.3-2.fc30.noarch",
+      "python3-gobject-base-3.32.0-1.fc30.x86_64",
+      "python3-libs-3.7.3-1.fc30.x86_64",
+      "python3-libselinux-2.9-1.fc30.x86_64",
+      "python3-pip-19.0.3-1.fc30.noarch",
+      "python3-setuptools-40.8.0-1.fc30.noarch",
+      "python3-six-1.12.0-1.fc30.noarch",
+      "python3-slip-0.6.4-15.fc30.noarch",
+      "python3-slip-dbus-0.6.4-15.fc30.noarch",
+      "qrencode-libs-3.4.4-8.fc30.x86_64",
+      "readline-8.0-2.fc30.x86_64",
+      "rpm-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-selinux-4.14.2.1-4.fc30.1.x86_64",
+      "sed-4.5-3.fc30.x86_64",
+      "selinux-policy-3.14.3-29.fc30.noarch",
+      "selinux-policy-targeted-3.14.3-29.fc30.noarch",
+      "setup-2.13.3-1.fc30.noarch",
+      "shadow-utils-4.6-8.fc30.x86_64",
+      "shared-mime-info-1.12-2.fc30.x86_64",
+      "sqlite-libs-3.26.0-3.fc30.x86_64",
+      "systemd-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-bootchart-233-4.fc30.x86_64",
+      "systemd-libs-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-pam-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-rpm-macros-241-7.gita2eaa1c.fc30.noarch",
+      "systemd-udev-241-7.gita2eaa1c.fc30.x86_64",
+      "timedatex-0.5-6.fc30.x86_64",
+      "trousers-0.3.13-12.fc30.x86_64",
+      "trousers-lib-0.3.13-12.fc30.x86_64",
+      "tzdata-2019a-1.fc30.noarch",
+      "util-linux-2.33.2-1.fc30.x86_64",
+      "which-2.21-14.fc30.x86_64",
+      "whois-nls-5.4.2-1.fc30.noarch",
+      "xkeyboard-config-2.24-5.fc30.noarch",
+      "xz-5.2.4-5.fc30.x86_64",
+      "xz-libs-5.2.4-5.fc30.x86_64",
+      "zlib-1.2.11-15.fc30.x86_64"
+    ],
+    "partition-table": null,
+    "partition-table-id": null,
+    "partitions": [
+      {
+        "bootable": false,
+        "fstype": "ext4",
+        "label": null,
+        "size": 0,
+        "start": 0,
+        "type": null,
+        "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac"
+      }
+    ],
+    "passwd": [
+      "adm:x:3:4:adm:/var/adm:/sbin/nologin",
+      "bin:x:1:1:bin:/bin:/sbin/nologin",
+      "chrony:x:996:994::/var/lib/chrony:/sbin/nologin",
+      "daemon:x:2:2:daemon:/sbin:/sbin/nologin",
+      "dbus:x:81:81:System message bus:/:/sbin/nologin",
+      "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin",
+      "games:x:12:100:games:/usr/games:/sbin/nologin",
+      "halt:x:7:0:halt:/sbin:/sbin/halt",
+      "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin",
+      "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin",
+      "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin",
+      "operator:x:11:0:operator:/root:/sbin/nologin",
+      "polkitd:x:997:995:User for polkitd:/:/sbin/nologin",
+      "root:x:0:0:root:/root:/bin/bash",
+      "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown",
+      "sync:x:5:0:sync:/sbin:/bin/sync",
+      "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin",
+      "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin",
+      "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin",
+      "systemd-timesync:x:998:996:systemd Time Synchronization:/:/sbin/nologin",
+      "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin"
+    ],
+    "rpm-verify": {
+      "changed": {
+        "/boot/System.map-5.0.9-301.fc30.x86_64": ".M.......",
+        "/boot/initramfs-5.0.9-301.fc30.x86_64.img": ".M.......",
+        "/etc/udev/hwdb.bin": ".M.......",
+        "/proc": ".M.......",
+        "/run/cryptsetup": ".M.......",
+        "/sys": ".M.......",
+        "/var/log/btmp": ".M.......",
+        "/var/log/journal": ".M....G..",
+        "/var/log/lastlog": ".M....G.."
+      },
+      "missing": [
+        "/etc/systemd/system/dbus-org.freedesktop.network1.service",
+        "/etc/systemd/system/dbus-org.freedesktop.resolve1.service"
+      ]
+    }
   }
 }
diff --git a/tools/test_image_info/pipelines/openstack_empty_blueprint.json b/tools/test_image_info/pipelines/openstack_empty_blueprint.json
index d5f7e5e0d..45c5141bc 100644
--- a/tools/test_image_info/pipelines/openstack_empty_blueprint.json
+++ b/tools/test_image_info/pipelines/openstack_empty_blueprint.json
@@ -55,6 +55,9 @@
             "cloud-init",
             "libdrm"
           ],
+          "exclude_packages": [
+            "dracut-config-rescue"
+          ],
           "releasever": "30",
           "basearch": "x86_64"
         }
@@ -88,15 +91,15 @@
           "kernel_opts": "ro biosdevname=0 net.ifnames=0"
         }
       },
+      {
+        "name": "org.osbuild.fix-bls",
+        "options": {}
+      },
       {
         "name": "org.osbuild.selinux",
         "options": {
           "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts"
         }
-      },
-      {
-        "name": "org.osbuild.fix-bls",
-        "options": {}
       }
     ],
     "assembler": {
@@ -109,5 +112,523 @@
         "size": 3221225472
       }
     }
+  },
+  "expected": {
+    "bootloader": "grub",
+    "bootmenu": [
+      {
+        "grub_arg": "--unrestricted",
+        "grub_class": "kernel",
+        "grub_users": "$grub_users",
+        "initrd": "/initramfs-0-rescue-ffffffffffffffffffffffffffffffff.img",
+        "linux": "/vmlinuz-0-rescue-ffffffffffffffffffffffffffffffff",
+        "options": "$kernelopts",
+        "title": "Fedora (0-rescue-ffffffffffffffffffffffffffffffff) 30 (Thirty)",
+        "version": "0-rescue-ffffffffffffffffffffffffffffffff"
+      },
+      {
+        "grub_arg": "--unrestricted",
+        "grub_class": "kernel",
+        "grub_users": "$grub_users",
+        "initrd": "/boot/initramfs-5.0.9-301.fc30.x86_64.img",
+        "linux": "/boot/vmlinuz-5.0.9-301.fc30.x86_64",
+        "options": "$kernelopts",
+        "title": "Fedora (5.0.9-301.fc30.x86_64) 30 (Thirty)",
+        "version": "5.0.9-301.fc30.x86_64"
+      }
+    ],
+    "fstab": [
+      [
+        "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac",
+        "/",
+        "ext4",
+        "defaults",
+        "1",
+        "1"
+      ]
+    ],
+    "groups": [
+      "adm:x:4:",
+      "audio:x:63:",
+      "bin:x:1:",
+      "cdrom:x:11:",
+      "chrony:x:992:",
+      "daemon:x:2:",
+      "dbus:x:81:",
+      "dialout:x:18:",
+      "disk:x:6:",
+      "floppy:x:19:",
+      "ftp:x:50:",
+      "games:x:20:",
+      "input:x:999:",
+      "kmem:x:9:",
+      "kvm:x:36:",
+      "lock:x:54:",
+      "lp:x:7:",
+      "mail:x:12:",
+      "man:x:15:",
+      "mem:x:8:",
+      "nobody:x:65534:",
+      "polkitd:x:995:",
+      "render:x:998:",
+      "root:x:0:",
+      "ssh_keys:x:994:",
+      "sshd:x:74:",
+      "sys:x:3:",
+      "systemd-coredump:x:997:",
+      "systemd-journal:x:190:",
+      "systemd-network:x:192:",
+      "systemd-resolve:x:193:",
+      "systemd-timesync:x:996:",
+      "tape:x:33:",
+      "tss:x:59:",
+      "tty:x:5:",
+      "unbound:x:993:",
+      "users:x:100:",
+      "utempter:x:35:",
+      "utmp:x:22:",
+      "video:x:39:",
+      "wheel:x:10:"
+    ],
+    "image-format": "qcow2",
+    "os-release": {
+      "ANSI_COLOR": "0;34",
+      "BUG_REPORT_URL": "https://bugzilla.redhat.com/",
+      "CPE_NAME": "cpe:/o:fedoraproject:fedora:30",
+      "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f30/system-administrators-guide/",
+      "HOME_URL": "https://fedoraproject.org/",
+      "ID": "fedora",
+      "LOGO": "fedora-logo-icon",
+      "NAME": "Fedora",
+      "PLATFORM_ID": "platform:f30",
+      "PRETTY_NAME": "Fedora 30 (Thirty)",
+      "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy",
+      "REDHAT_BUGZILLA_PRODUCT": "Fedora",
+      "REDHAT_BUGZILLA_PRODUCT_VERSION": "30",
+      "REDHAT_SUPPORT_PRODUCT": "Fedora",
+      "REDHAT_SUPPORT_PRODUCT_VERSION": "30",
+      "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help",
+      "VERSION": "30 (Thirty)",
+      "VERSION_CODENAME": "",
+      "VERSION_ID": "30"
+    },
+    "packages": [
+      "NetworkManager-1.16.0-1.fc30.x86_64",
+      "NetworkManager-libnm-1.16.0-1.fc30.x86_64",
+      "acl-2.2.53-3.fc30.x86_64",
+      "alsa-lib-1.1.8-2.fc30.x86_64",
+      "alternatives-1.11-4.fc30.x86_64",
+      "audit-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "audit-libs-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "basesystem-11-7.fc30.noarch",
+      "bash-5.0.2-1.fc30.x86_64",
+      "bind-export-libs-9.11.5-13.P4.fc30.x86_64",
+      "brotli-1.0.7-3.fc30.x86_64",
+      "bzip2-libs-1.0.6-29.fc30.x86_64",
+      "c-ares-1.15.0-3.fc30.x86_64",
+      "ca-certificates-2018.2.26-3.fc30.noarch",
+      "checkpolicy-2.9-1.fc30.x86_64",
+      "chrony-3.4-2.fc30.x86_64",
+      "cloud-init-17.1-8.fc30.noarch",
+      "coreutils-8.31-1.fc30.x86_64",
+      "coreutils-common-8.31-1.fc30.x86_64",
+      "cpio-2.12-10.fc30.x86_64",
+      "cracklib-2.9.6-19.fc30.x86_64",
+      "cracklib-dicts-2.9.6-19.fc30.x86_64",
+      "crypto-policies-20190211-2.gite3eacfc.fc30.noarch",
+      "cryptsetup-libs-2.1.0-3.fc30.x86_64",
+      "curl-7.64.0-6.fc30.x86_64",
+      "cyrus-sasl-lib-2.1.27-0.6rc7.fc30.x86_64",
+      "dbus-1.12.12-7.fc30.x86_64",
+      "dbus-broker-20-3.fc30.x86_64",
+      "dbus-common-1.12.12-7.fc30.noarch",
+      "dbus-libs-1.12.12-7.fc30.x86_64",
+      "deltarpm-3.6-29.fc30.x86_64",
+      "device-mapper-1.02.154-3.fc30.x86_64",
+      "device-mapper-libs-1.02.154-3.fc30.x86_64",
+      "dhcp-client-4.3.6-32.fc30.x86_64",
+      "dhcp-common-4.3.6-32.fc30.noarch",
+      "dhcp-libs-4.3.6-32.fc30.x86_64",
+      "diffutils-3.7-2.fc30.x86_64",
+      "dnf-4.2.2-2.fc30.noarch",
+      "dnf-data-4.2.2-2.fc30.noarch",
+      "dnf-plugins-core-4.0.6-1.fc30.noarch",
+      "dnf-yum-4.2.2-2.fc30.noarch",
+      "dracut-049-26.git20181204.fc30.x86_64",
+      "dracut-config-rescue-049-26.git20181204.fc30.x86_64",
+      "e2fsprogs-1.44.6-1.fc30.x86_64",
+      "e2fsprogs-libs-1.44.6-1.fc30.x86_64",
+      "ebtables-2.0.10-31.fc30.x86_64",
+      "elfutils-default-yama-scope-0.176-1.fc30.noarch",
+      "elfutils-libelf-0.176-1.fc30.x86_64",
+      "elfutils-libs-0.176-1.fc30.x86_64",
+      "expat-2.2.6-2.fc30.x86_64",
+      "fedora-gpg-keys-30-1.noarch",
+      "fedora-release-30-1.noarch",
+      "fedora-release-common-30-1.noarch",
+      "fedora-repos-30-1.noarch",
+      "file-5.36-2.fc30.x86_64",
+      "file-libs-5.36-2.fc30.x86_64",
+      "filesystem-3.10-1.fc30.x86_64",
+      "findutils-4.6.0-22.fc30.x86_64",
+      "fipscheck-1.5.0-6.fc30.x86_64",
+      "fipscheck-lib-1.5.0-6.fc30.x86_64",
+      "firewalld-0.6.3-2.fc30.noarch",
+      "firewalld-filesystem-0.6.3-2.fc30.noarch",
+      "freetype-2.9.1-7.fc30.x86_64",
+      "fuse-libs-2.9.9-3.fc30.x86_64",
+      "gawk-4.2.1-6.fc30.x86_64",
+      "gdbm-libs-1.18-4.fc30.x86_64",
+      "geolite2-city-20190409-1.fc30.noarch",
+      "geolite2-country-20190409-1.fc30.noarch",
+      "gettext-0.19.8.1-18.fc30.x86_64",
+      "gettext-libs-0.19.8.1-18.fc30.x86_64",
+      "glib2-2.60.1-2.fc30.x86_64",
+      "glibc-2.29-9.fc30.x86_64",
+      "glibc-common-2.29-9.fc30.x86_64",
+      "glibc-langpack-en-2.29-9.fc30.x86_64",
+      "gmp-6.1.2-10.fc30.x86_64",
+      "gnupg2-2.2.13-1.fc30.x86_64",
+      "gnupg2-smime-2.2.13-1.fc30.x86_64",
+      "gnutls-3.6.7-1.fc30.x86_64",
+      "gobject-introspection-1.60.1-2.fc30.x86_64",
+      "gpg-pubkey-cfc659b9-5b6eac67",
+      "gpgme-1.12.0-1.fc30.x86_64",
+      "grep-3.1-9.fc30.x86_64",
+      "groff-base-1.22.3-19.fc30.x86_64",
+      "grub2-common-2.02-75.fc30.noarch",
+      "grub2-pc-2.02-75.fc30.x86_64",
+      "grub2-pc-modules-2.02-75.fc30.noarch",
+      "grub2-tools-2.02-75.fc30.x86_64",
+      "grub2-tools-extra-2.02-75.fc30.x86_64",
+      "grub2-tools-minimal-2.02-75.fc30.x86_64",
+      "grubby-8.40-30.fc30.x86_64",
+      "gzip-1.9-9.fc30.x86_64",
+      "hardlink-1.3-8.fc30.x86_64",
+      "hostname-3.20-8.fc30.x86_64",
+      "hwdata-0.322-1.fc30.noarch",
+      "ima-evm-utils-1.1-5.fc30.x86_64",
+      "ipcalc-0.2.5-2.fc30.x86_64",
+      "iproute-5.0.0-2.fc30.x86_64",
+      "iproute-tc-5.0.0-2.fc30.x86_64",
+      "ipset-6.38-2.fc30.x86_64",
+      "ipset-libs-6.38-2.fc30.x86_64",
+      "iptables-1.8.0-5.fc30.x86_64",
+      "iptables-libs-1.8.0-5.fc30.x86_64",
+      "iputils-20180629-4.fc30.x86_64",
+      "jansson-2.12-2.fc30.x86_64",
+      "json-c-0.13.1-4.fc30.x86_64",
+      "kbd-2.0.4-13.fc30.x86_64",
+      "kbd-legacy-2.0.4-13.fc30.noarch",
+      "kbd-misc-2.0.4-13.fc30.noarch",
+      "kernel-5.0.9-301.fc30.x86_64",
+      "kernel-core-5.0.9-301.fc30.x86_64",
+      "kernel-modules-5.0.9-301.fc30.x86_64",
+      "keyutils-libs-1.6-2.fc30.x86_64",
+      "kmod-25-5.fc30.x86_64",
+      "kmod-libs-25-5.fc30.x86_64",
+      "kpartx-0.7.9-6.git2df6110.fc30.x86_64",
+      "krb5-libs-1.17-4.fc30.x86_64",
+      "langpacks-en-1.0-17.fc30.noarch",
+      "less-530-4.fc30.x86_64",
+      "libX11-1.6.7-1.fc30.x86_64",
+      "libX11-common-1.6.7-1.fc30.noarch",
+      "libXau-1.0.9-1.fc30.x86_64",
+      "libXext-1.3.3-11.fc30.x86_64",
+      "libXfixes-5.0.3-9.fc30.x86_64",
+      "libXinerama-1.1.4-3.fc30.x86_64",
+      "libXrandr-1.5.1-9.fc30.x86_64",
+      "libXrender-0.9.10-9.fc30.x86_64",
+      "libacl-2.2.53-3.fc30.x86_64",
+      "libarchive-3.3.3-6.fc30.x86_64",
+      "libargon2-20161029-8.fc30.x86_64",
+      "libassuan-2.5.2-2.fc30.x86_64",
+      "libattr-2.4.48-5.fc30.x86_64",
+      "libbasicobjects-0.1.1-42.fc30.x86_64",
+      "libblkid-2.33.2-1.fc30.x86_64",
+      "libcap-2.26-5.fc30.x86_64",
+      "libcap-ng-0.7.9-7.fc30.x86_64",
+      "libcollection-0.7.0-42.fc30.x86_64",
+      "libcom_err-1.44.6-1.fc30.x86_64",
+      "libcomps-0.1.11-1.fc30.x86_64",
+      "libcroco-0.6.13-1.fc30.x86_64",
+      "libcurl-7.64.0-6.fc30.x86_64",
+      "libdb-5.3.28-37.fc30.x86_64",
+      "libdb-utils-5.3.28-37.fc30.x86_64",
+      "libdhash-0.5.0-42.fc30.x86_64",
+      "libdnf-0.28.1-1.fc30.x86_64",
+      "libdrm-2.4.97-2.fc30.x86_64",
+      "libedit-3.1-26.20181209cvs.fc30.x86_64",
+      "libevent-2.1.8-5.fc30.x86_64",
+      "libfdisk-2.33.2-1.fc30.x86_64",
+      "libffi-3.1-19.fc30.x86_64",
+      "libgcc-9.0.1-0.10.fc30.x86_64",
+      "libgcrypt-1.8.4-3.fc30.x86_64",
+      "libgomp-9.0.1-0.10.fc30.x86_64",
+      "libgpg-error-1.33-2.fc30.x86_64",
+      "libicu-63.1-2.fc30.x86_64",
+      "libidn2-2.1.1a-1.fc30.x86_64",
+      "libini_config-1.3.1-42.fc30.x86_64",
+      "libkcapi-1.1.4-1.fc30.x86_64",
+      "libkcapi-hmaccalc-1.1.4-1.fc30.x86_64",
+      "libksba-1.3.5-9.fc30.x86_64",
+      "libldb-1.5.4-1.fc30.x86_64",
+      "libmaxminddb-1.2.0-7.fc30.x86_64",
+      "libmetalink-0.1.3-8.fc30.x86_64",
+      "libmnl-1.0.4-9.fc30.x86_64",
+      "libmodulemd1-1.8.6-3.fc30.x86_64",
+      "libmount-2.33.2-1.fc30.x86_64",
+      "libndp-1.7-3.fc30.x86_64",
+      "libnetfilter_conntrack-1.0.7-2.fc30.x86_64",
+      "libnfnetlink-1.0.1-15.fc30.x86_64",
+      "libnfsidmap-2.3.3-7.rc2.fc30.x86_64",
+      "libnftnl-1.1.1-6.fc30.x86_64",
+      "libnghttp2-1.37.0-1.fc30.x86_64",
+      "libnl3-3.4.0-8.fc30.x86_64",
+      "libnsl2-1.2.0-4.20180605git4a062cf.fc30.x86_64",
+      "libpath_utils-0.2.1-42.fc30.x86_64",
+      "libpcap-1.9.0-3.fc30.x86_64",
+      "libpciaccess-0.14-3.fc30.x86_64",
+      "libpipeline-1.5.1-2.fc30.x86_64",
+      "libpng-1.6.36-1.fc30.x86_64",
+      "libpsl-0.20.2-6.fc30.x86_64",
+      "libpwquality-1.4.0-12.fc30.x86_64",
+      "libref_array-0.1.5-42.fc30.x86_64",
+      "librepo-1.9.6-2.fc30.x86_64",
+      "libreport-filesystem-2.10.0-1.fc30.noarch",
+      "libseccomp-2.4.0-0.fc30.x86_64",
+      "libsecret-0.18.8-1.fc30.x86_64",
+      "libselinux-2.9-1.fc30.x86_64",
+      "libselinux-utils-2.9-1.fc30.x86_64",
+      "libsemanage-2.9-1.fc30.x86_64",
+      "libsepol-2.9-1.fc30.x86_64",
+      "libsigsegv-2.11-7.fc30.x86_64",
+      "libsmartcols-2.33.2-1.fc30.x86_64",
+      "libsolv-0.7.4-2.fc30.x86_64",
+      "libss-1.44.6-1.fc30.x86_64",
+      "libssh-0.8.7-1.fc30.x86_64",
+      "libsss_autofs-2.1.0-2.fc30.x86_64",
+      "libsss_certmap-2.1.0-2.fc30.x86_64",
+      "libsss_idmap-2.1.0-2.fc30.x86_64",
+      "libsss_nss_idmap-2.1.0-2.fc30.x86_64",
+      "libsss_sudo-2.1.0-2.fc30.x86_64",
+      "libstdc++-9.0.1-0.10.fc30.x86_64",
+      "libtalloc-2.1.16-1.fc30.x86_64",
+      "libtasn1-4.13-7.fc30.x86_64",
+      "libtdb-1.3.18-1.fc30.x86_64",
+      "libtevent-0.9.39-1.fc30.x86_64",
+      "libtirpc-1.1.4-2.rc2.fc30.1.x86_64",
+      "libunistring-0.9.10-5.fc30.x86_64",
+      "libusbx-1.0.22-2.fc30.x86_64",
+      "libuser-0.62-20.fc30.x86_64",
+      "libutempter-1.1.6-16.fc30.x86_64",
+      "libuuid-2.33.2-1.fc30.x86_64",
+      "libverto-0.3.0-7.fc30.x86_64",
+      "libxcb-1.13.1-2.fc30.x86_64",
+      "libxcrypt-4.4.4-2.fc30.x86_64",
+      "libxkbcommon-0.8.3-1.fc30.x86_64",
+      "libxml2-2.9.9-2.fc30.x86_64",
+      "libyaml-0.2.1-5.fc30.x86_64",
+      "libzstd-1.3.8-2.fc30.x86_64",
+      "linux-atm-libs-2.5.1-21.fc29.x86_64",
+      "linux-firmware-20190312-94.fc30.noarch",
+      "linux-firmware-whence-20190312-94.fc30.noarch",
+      "lmdb-libs-0.9.23-2.fc30.x86_64",
+      "lua-libs-5.3.5-5.fc30.x86_64",
+      "lz4-libs-1.8.3-2.fc30.x86_64",
+      "man-db-2.8.4-4.fc30.x86_64",
+      "mkpasswd-5.4.2-1.fc30.x86_64",
+      "mozjs60-60.4.0-5.fc30.x86_64",
+      "mpfr-3.1.6-4.fc30.x86_64",
+      "ncurses-6.1-10.20180923.fc30.x86_64",
+      "ncurses-base-6.1-10.20180923.fc30.noarch",
+      "ncurses-libs-6.1-10.20180923.fc30.x86_64",
+      "net-tools-2.0-0.54.20160912git.fc30.x86_64",
+      "nettle-3.4.1rc1-2.fc30.x86_64",
+      "nftables-0.9.0-5.fc30.x86_64",
+      "npth-1.6-2.fc30.x86_64",
+      "openldap-2.4.47-1.fc30.x86_64",
+      "openssh-7.9p1-5.fc30.x86_64",
+      "openssh-clients-7.9p1-5.fc30.x86_64",
+      "openssh-server-7.9p1-5.fc30.x86_64",
+      "openssl-1.1.1b-3.fc30.x86_64",
+      "openssl-libs-1.1.1b-3.fc30.x86_64",
+      "openssl-pkcs11-0.4.10-1.fc30.x86_64",
+      "os-prober-1.74-8.fc30.x86_64",
+      "p11-kit-0.23.15-3.fc30.x86_64",
+      "p11-kit-trust-0.23.15-3.fc30.x86_64",
+      "pam-1.3.1-17.fc30.x86_64",
+      "parted-3.2-40.fc30.x86_64",
+      "passwd-0.80-5.fc30.x86_64",
+      "pcre-8.43-1.fc30.x86_64",
+      "pcre2-10.32-9.fc30.x86_64",
+      "pigz-2.4-4.fc30.x86_64",
+      "pinentry-1.1.0-5.fc30.x86_64",
+      "plymouth-0.9.4-5.fc30.x86_64",
+      "plymouth-core-libs-0.9.4-5.fc30.x86_64",
+      "plymouth-scripts-0.9.4-5.fc30.x86_64",
+      "policycoreutils-2.9-1.fc30.x86_64",
+      "polkit-0.115-10.fc30.1.x86_64",
+      "polkit-libs-0.115-10.fc30.1.x86_64",
+      "polkit-pkla-compat-0.1-14.fc30.x86_64",
+      "popt-1.16-17.fc30.x86_64",
+      "procps-ng-3.3.15-5.fc30.x86_64",
+      "publicsuffix-list-dafsa-20190128-2.fc30.noarch",
+      "python-pip-wheel-19.0.3-1.fc30.noarch",
+      "python-setuptools-wheel-40.8.0-1.fc30.noarch",
+      "python3-3.7.3-1.fc30.x86_64",
+      "python3-asn1crypto-0.24.0-6.fc30.noarch",
+      "python3-attrs-18.2.0-1.fc30.noarch",
+      "python3-audit-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "python3-babel-2.6.0-6.fc30.noarch",
+      "python3-cffi-1.11.5-7.fc30.x86_64",
+      "python3-chardet-3.0.4-9.fc30.noarch",
+      "python3-configobj-5.0.6-15.fc30.noarch",
+      "python3-cryptography-2.6.1-1.fc30.x86_64",
+      "python3-dateutil-2.8.0-1.fc30.noarch",
+      "python3-dbus-1.2.8-5.fc30.x86_64",
+      "python3-decorator-4.3.0-2.fc30.noarch",
+      "python3-distro-1.4.0-1.fc30.noarch",
+      "python3-dnf-4.2.2-2.fc30.noarch",
+      "python3-dnf-plugins-core-4.0.6-1.fc30.noarch",
+      "python3-firewall-0.6.3-2.fc30.noarch",
+      "python3-gobject-base-3.32.0-1.fc30.x86_64",
+      "python3-gpg-1.12.0-1.fc30.x86_64",
+      "python3-hawkey-0.28.1-1.fc30.x86_64",
+      "python3-idna-2.7-4.fc30.noarch",
+      "python3-jinja2-2.10-8.fc30.noarch",
+      "python3-jsonpatch-1.21-7.fc30.noarch",
+      "python3-jsonpointer-1.10-15.fc30.noarch",
+      "python3-jsonschema-3.0.1-1.fc30.noarch",
+      "python3-jwt-1.7.1-2.fc30.noarch",
+      "python3-libcomps-0.1.11-1.fc30.x86_64",
+      "python3-libdnf-0.28.1-1.fc30.x86_64",
+      "python3-libs-3.7.3-1.fc30.x86_64",
+      "python3-libselinux-2.9-1.fc30.x86_64",
+      "python3-libsemanage-2.9-1.fc30.x86_64",
+      "python3-markupsafe-1.1.1-1.fc30.x86_64",
+      "python3-oauthlib-2.1.0-1.fc29.noarch",
+      "python3-pip-19.0.3-1.fc30.noarch",
+      "python3-ply-3.11-2.fc30.noarch",
+      "python3-policycoreutils-2.9-1.fc30.noarch",
+      "python3-prettytable-0.7.2-17.fc30.noarch",
+      "python3-pycparser-2.14-18.fc30.noarch",
+      "python3-pyrsistent-0.14.11-1.fc30.x86_64",
+      "python3-pyserial-3.4-2.fc30.noarch",
+      "python3-pysocks-1.6.8-7.fc30.noarch",
+      "python3-pytz-2018.5-2.fc30.noarch",
+      "python3-pyyaml-5.1-1.fc30.x86_64",
+      "python3-requests-2.21.0-2.fc30.noarch",
+      "python3-rpm-4.14.2.1-4.fc30.1.x86_64",
+      "python3-setools-4.1.1-14.fc30.x86_64",
+      "python3-setuptools-40.8.0-1.fc30.noarch",
+      "python3-six-1.12.0-1.fc30.noarch",
+      "python3-slip-0.6.4-15.fc30.noarch",
+      "python3-slip-dbus-0.6.4-15.fc30.noarch",
+      "python3-unbound-1.8.3-4.fc30.x86_64",
+      "python3-urllib3-1.24.1-3.fc30.noarch",
+      "qemu-guest-agent-3.1.0-6.fc30.x86_64",
+      "qrencode-libs-3.4.4-8.fc30.x86_64",
+      "readline-8.0-2.fc30.x86_64",
+      "rootfiles-8.1-24.fc30.noarch",
+      "rpm-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-build-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-selinux-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-systemd-inhibit-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-sign-libs-4.14.2.1-4.fc30.1.x86_64",
+      "sed-4.5-3.fc30.x86_64",
+      "selinux-policy-3.14.3-29.fc30.noarch",
+      "selinux-policy-targeted-3.14.3-29.fc30.noarch",
+      "setup-2.13.3-1.fc30.noarch",
+      "shadow-utils-4.6-8.fc30.x86_64",
+      "shared-mime-info-1.12-2.fc30.x86_64",
+      "spice-vdagent-0.18.0-3.fc30.x86_64",
+      "sqlite-libs-3.26.0-3.fc30.x86_64",
+      "sssd-client-2.1.0-2.fc30.x86_64",
+      "sssd-common-2.1.0-2.fc30.x86_64",
+      "sssd-kcm-2.1.0-2.fc30.x86_64",
+      "sssd-nfs-idmap-2.1.0-2.fc30.x86_64",
+      "sudo-1.8.27-1.fc30.x86_64",
+      "systemd-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-bootchart-233-4.fc30.x86_64",
+      "systemd-libs-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-pam-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-rpm-macros-241-7.gita2eaa1c.fc30.noarch",
+      "systemd-udev-241-7.gita2eaa1c.fc30.x86_64",
+      "timedatex-0.5-6.fc30.x86_64",
+      "trousers-0.3.13-12.fc30.x86_64",
+      "trousers-lib-0.3.13-12.fc30.x86_64",
+      "tzdata-2019a-1.fc30.noarch",
+      "unbound-libs-1.8.3-4.fc30.x86_64",
+      "util-linux-2.33.2-1.fc30.x86_64",
+      "vim-minimal-8.1.1137-1.fc30.x86_64",
+      "which-2.21-14.fc30.x86_64",
+      "whois-nls-5.4.2-1.fc30.noarch",
+      "xen-libs-4.11.1-4.fc30.x86_64",
+      "xen-licenses-4.11.1-4.fc30.x86_64",
+      "xfsprogs-4.19.0-4.fc30.x86_64",
+      "xkeyboard-config-2.24-5.fc30.noarch",
+      "xz-5.2.4-5.fc30.x86_64",
+      "xz-libs-5.2.4-5.fc30.x86_64",
+      "yajl-2.1.0-12.fc30.x86_64",
+      "zchunk-libs-1.1.1-3.fc30.x86_64",
+      "zlib-1.2.11-15.fc30.x86_64"
+    ],
+    "partition-table": "dos",
+    "partition-table-id": "0x14fc63d2",
+    "partitions": [
+      {
+        "bootable": true,
+        "fstype": "ext4",
+        "label": null,
+        "size": 3220176896,
+        "start": 1048576,
+        "type": "83",
+        "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac"
+      }
+    ],
+    "passwd": [
+      "adm:x:3:4:adm:/var/adm:/sbin/nologin",
+      "bin:x:1:1:bin:/bin:/sbin/nologin",
+      "chrony:x:995:992::/var/lib/chrony:/sbin/nologin",
+      "daemon:x:2:2:daemon:/sbin:/sbin/nologin",
+      "dbus:x:81:81:System message bus:/:/sbin/nologin",
+      "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin",
+      "games:x:12:100:games:/usr/games:/sbin/nologin",
+      "halt:x:7:0:halt:/sbin:/sbin/halt",
+      "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin",
+      "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin",
+      "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin",
+      "operator:x:11:0:operator:/root:/sbin/nologin",
+      "polkitd:x:997:995:User for polkitd:/:/sbin/nologin",
+      "root:x:0:0:root:/root:/bin/bash",
+      "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown",
+      "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin",
+      "sync:x:5:0:sync:/sbin:/bin/sync",
+      "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin",
+      "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin",
+      "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin",
+      "systemd-timesync:x:998:996:systemd Time Synchronization:/:/sbin/nologin",
+      "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
+      "unbound:x:996:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
+    ],
+    "rpm-verify": {
+      "changed": {
+        "/boot/System.map-5.0.9-301.fc30.x86_64": ".M.......",
+        "/boot/initramfs-5.0.9-301.fc30.x86_64.img": ".M.......",
+        "/etc/udev/hwdb.bin": ".M.......",
+        "/proc": ".M.......",
+        "/run/cryptsetup": ".M.......",
+        "/sys": ".M.......",
+        "/var/log/btmp": ".M.......",
+        "/var/log/journal": ".M....G..",
+        "/var/log/lastlog": ".M....G.."
+      },
+      "missing": [
+        "/etc/systemd/system/dbus-org.freedesktop.network1.service",
+        "/etc/systemd/system/dbus-org.freedesktop.resolve1.service"
+      ]
+    }
   }
 }
diff --git a/tools/test_image_info/pipelines/qcow2_empty_blueprint.json b/tools/test_image_info/pipelines/qcow2_empty_blueprint.json
index a9e8c18e5..99cd353ac 100644
--- a/tools/test_image_info/pipelines/qcow2_empty_blueprint.json
+++ b/tools/test_image_info/pipelines/qcow2_empty_blueprint.json
@@ -92,15 +92,15 @@
           "kernel_opts": "ro biosdevname=0 net.ifnames=0"
         }
       },
+      {
+        "name": "org.osbuild.fix-bls",
+        "options": {}
+      },
       {
         "name": "org.osbuild.selinux",
         "options": {
           "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts"
         }
-      },
-      {
-        "name": "org.osbuild.fix-bls",
-        "options": {}
       }
     ],
     "assembler": {
@@ -113,5 +113,492 @@
         "size": 3221225472
       }
     }
+  },
+  "expected": {
+    "bootloader": "grub",
+    "bootmenu": [
+      {
+        "grub_arg": "--unrestricted",
+        "grub_class": "kernel",
+        "grub_users": "$grub_users",
+        "initrd": "/boot/initramfs-5.0.9-301.fc30.x86_64.img",
+        "linux": "/boot/vmlinuz-5.0.9-301.fc30.x86_64",
+        "options": "$kernelopts",
+        "title": "Fedora (5.0.9-301.fc30.x86_64) 30 (Thirty)",
+        "version": "5.0.9-301.fc30.x86_64"
+      }
+    ],
+    "fstab": [
+      [
+        "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac",
+        "/",
+        "ext4",
+        "defaults",
+        "1",
+        "1"
+      ]
+    ],
+    "groups": [
+      "adm:x:4:",
+      "audio:x:63:",
+      "bin:x:1:",
+      "cdrom:x:11:",
+      "chrony:x:992:",
+      "daemon:x:2:",
+      "dbus:x:81:",
+      "dialout:x:18:",
+      "disk:x:6:",
+      "floppy:x:19:",
+      "ftp:x:50:",
+      "games:x:20:",
+      "input:x:999:",
+      "kmem:x:9:",
+      "kvm:x:36:",
+      "lock:x:54:",
+      "lp:x:7:",
+      "mail:x:12:",
+      "man:x:15:",
+      "mem:x:8:",
+      "nobody:x:65534:",
+      "polkitd:x:995:",
+      "render:x:998:",
+      "root:x:0:",
+      "ssh_keys:x:994:",
+      "sshd:x:74:",
+      "sys:x:3:",
+      "systemd-coredump:x:997:",
+      "systemd-journal:x:190:",
+      "systemd-network:x:192:",
+      "systemd-resolve:x:193:",
+      "systemd-timesync:x:996:",
+      "tape:x:33:",
+      "tss:x:59:",
+      "tty:x:5:",
+      "unbound:x:993:",
+      "users:x:100:",
+      "utempter:x:35:",
+      "utmp:x:22:",
+      "video:x:39:",
+      "wheel:x:10:"
+    ],
+    "image-format": "qcow2",
+    "os-release": {
+      "ANSI_COLOR": "0;34",
+      "BUG_REPORT_URL": "https://bugzilla.redhat.com/",
+      "CPE_NAME": "cpe:/o:fedoraproject:fedora:30",
+      "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f30/system-administrators-guide/",
+      "HOME_URL": "https://fedoraproject.org/",
+      "ID": "fedora",
+      "LOGO": "fedora-logo-icon",
+      "NAME": "Fedora",
+      "PLATFORM_ID": "platform:f30",
+      "PRETTY_NAME": "Fedora 30 (Cloud Edition)",
+      "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy",
+      "REDHAT_BUGZILLA_PRODUCT": "Fedora",
+      "REDHAT_BUGZILLA_PRODUCT_VERSION": "30",
+      "REDHAT_SUPPORT_PRODUCT": "Fedora",
+      "REDHAT_SUPPORT_PRODUCT_VERSION": "30",
+      "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help",
+      "VARIANT": "Cloud Edition",
+      "VARIANT_ID": "cloud",
+      "VERSION": "30 (Cloud Edition)",
+      "VERSION_CODENAME": "",
+      "VERSION_ID": "30"
+    },
+    "packages": [
+      "NetworkManager-1.16.0-1.fc30.x86_64",
+      "NetworkManager-libnm-1.16.0-1.fc30.x86_64",
+      "acl-2.2.53-3.fc30.x86_64",
+      "alternatives-1.11-4.fc30.x86_64",
+      "audit-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "audit-libs-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "basesystem-11-7.fc30.noarch",
+      "bash-5.0.2-1.fc30.x86_64",
+      "bind-export-libs-9.11.5-13.P4.fc30.x86_64",
+      "brotli-1.0.7-3.fc30.x86_64",
+      "bzip2-1.0.6-29.fc30.x86_64",
+      "bzip2-libs-1.0.6-29.fc30.x86_64",
+      "c-ares-1.15.0-3.fc30.x86_64",
+      "ca-certificates-2018.2.26-3.fc30.noarch",
+      "checkpolicy-2.9-1.fc30.x86_64",
+      "chrony-3.4-2.fc30.x86_64",
+      "cloud-init-17.1-8.fc30.noarch",
+      "cloud-utils-growpart-0.31-2.fc30.noarch",
+      "coreutils-8.31-1.fc30.x86_64",
+      "coreutils-common-8.31-1.fc30.x86_64",
+      "cpio-2.12-10.fc30.x86_64",
+      "cracklib-2.9.6-19.fc30.x86_64",
+      "cracklib-dicts-2.9.6-19.fc30.x86_64",
+      "crypto-policies-20190211-2.gite3eacfc.fc30.noarch",
+      "cryptsetup-libs-2.1.0-3.fc30.x86_64",
+      "curl-7.64.0-6.fc30.x86_64",
+      "cyrus-sasl-lib-2.1.27-0.6rc7.fc30.x86_64",
+      "dbus-1.12.12-7.fc30.x86_64",
+      "dbus-broker-20-3.fc30.x86_64",
+      "dbus-common-1.12.12-7.fc30.noarch",
+      "dbus-libs-1.12.12-7.fc30.x86_64",
+      "deltarpm-3.6-29.fc30.x86_64",
+      "device-mapper-1.02.154-3.fc30.x86_64",
+      "device-mapper-libs-1.02.154-3.fc30.x86_64",
+      "dhcp-client-4.3.6-32.fc30.x86_64",
+      "dhcp-common-4.3.6-32.fc30.noarch",
+      "dhcp-libs-4.3.6-32.fc30.x86_64",
+      "diffutils-3.7-2.fc30.x86_64",
+      "dnf-4.2.2-2.fc30.noarch",
+      "dnf-data-4.2.2-2.fc30.noarch",
+      "dnf-plugins-core-4.0.6-1.fc30.noarch",
+      "dnf-yum-4.2.2-2.fc30.noarch",
+      "dracut-049-26.git20181204.fc30.x86_64",
+      "dracut-config-generic-049-26.git20181204.fc30.x86_64",
+      "e2fsprogs-1.44.6-1.fc30.x86_64",
+      "e2fsprogs-libs-1.44.6-1.fc30.x86_64",
+      "elfutils-default-yama-scope-0.176-1.fc30.noarch",
+      "elfutils-libelf-0.176-1.fc30.x86_64",
+      "elfutils-libs-0.176-1.fc30.x86_64",
+      "expat-2.2.6-2.fc30.x86_64",
+      "fedora-gpg-keys-30-1.noarch",
+      "fedora-release-cloud-30-1.noarch",
+      "fedora-release-common-30-1.noarch",
+      "fedora-repos-30-1.noarch",
+      "file-5.36-2.fc30.x86_64",
+      "file-libs-5.36-2.fc30.x86_64",
+      "filesystem-3.10-1.fc30.x86_64",
+      "findutils-4.6.0-22.fc30.x86_64",
+      "fipscheck-1.5.0-6.fc30.x86_64",
+      "fipscheck-lib-1.5.0-6.fc30.x86_64",
+      "freetype-2.9.1-7.fc30.x86_64",
+      "fuse-libs-2.9.9-3.fc30.x86_64",
+      "gawk-4.2.1-6.fc30.x86_64",
+      "gdbm-libs-1.18-4.fc30.x86_64",
+      "geolite2-city-20190409-1.fc30.noarch",
+      "geolite2-country-20190409-1.fc30.noarch",
+      "gettext-0.19.8.1-18.fc30.x86_64",
+      "gettext-libs-0.19.8.1-18.fc30.x86_64",
+      "git-core-2.21.0-1.fc30.x86_64",
+      "glib2-2.60.1-2.fc30.x86_64",
+      "glibc-2.29-9.fc30.x86_64",
+      "glibc-common-2.29-9.fc30.x86_64",
+      "glibc-langpack-en-2.29-9.fc30.x86_64",
+      "gmp-6.1.2-10.fc30.x86_64",
+      "gnupg2-2.2.13-1.fc30.x86_64",
+      "gnupg2-smime-2.2.13-1.fc30.x86_64",
+      "gnutls-3.6.7-1.fc30.x86_64",
+      "gpg-pubkey-cfc659b9-5b6eac67",
+      "gpgme-1.12.0-1.fc30.x86_64",
+      "grep-3.1-9.fc30.x86_64",
+      "groff-base-1.22.3-19.fc30.x86_64",
+      "grub2-common-2.02-75.fc30.noarch",
+      "grub2-pc-2.02-75.fc30.x86_64",
+      "grub2-pc-modules-2.02-75.fc30.noarch",
+      "grub2-tools-2.02-75.fc30.x86_64",
+      "grub2-tools-extra-2.02-75.fc30.x86_64",
+      "grub2-tools-minimal-2.02-75.fc30.x86_64",
+      "grubby-8.40-30.fc30.x86_64",
+      "gzip-1.9-9.fc30.x86_64",
+      "hardlink-1.3-8.fc30.x86_64",
+      "heat-cfntools-1.4.2-8.fc30.noarch",
+      "hostname-3.20-8.fc30.x86_64",
+      "ima-evm-utils-1.1-5.fc30.x86_64",
+      "ipcalc-0.2.5-2.fc30.x86_64",
+      "iproute-5.0.0-2.fc30.x86_64",
+      "iproute-tc-5.0.0-2.fc30.x86_64",
+      "iptables-libs-1.8.0-5.fc30.x86_64",
+      "iputils-20180629-4.fc30.x86_64",
+      "jansson-2.12-2.fc30.x86_64",
+      "json-c-0.13.1-4.fc30.x86_64",
+      "kbd-2.0.4-13.fc30.x86_64",
+      "kbd-legacy-2.0.4-13.fc30.noarch",
+      "kbd-misc-2.0.4-13.fc30.noarch",
+      "kernel-core-5.0.9-301.fc30.x86_64",
+      "keyutils-libs-1.6-2.fc30.x86_64",
+      "kmod-25-5.fc30.x86_64",
+      "kmod-libs-25-5.fc30.x86_64",
+      "kpartx-0.7.9-6.git2df6110.fc30.x86_64",
+      "krb5-libs-1.17-4.fc30.x86_64",
+      "langpacks-en-1.0-17.fc30.noarch",
+      "less-530-4.fc30.x86_64",
+      "libacl-2.2.53-3.fc30.x86_64",
+      "libarchive-3.3.3-6.fc30.x86_64",
+      "libargon2-20161029-8.fc30.x86_64",
+      "libassuan-2.5.2-2.fc30.x86_64",
+      "libattr-2.4.48-5.fc30.x86_64",
+      "libbasicobjects-0.1.1-42.fc30.x86_64",
+      "libblkid-2.33.2-1.fc30.x86_64",
+      "libcap-2.26-5.fc30.x86_64",
+      "libcap-ng-0.7.9-7.fc30.x86_64",
+      "libcollection-0.7.0-42.fc30.x86_64",
+      "libcom_err-1.44.6-1.fc30.x86_64",
+      "libcomps-0.1.11-1.fc30.x86_64",
+      "libcroco-0.6.13-1.fc30.x86_64",
+      "libcurl-7.64.0-6.fc30.x86_64",
+      "libdb-5.3.28-37.fc30.x86_64",
+      "libdb-utils-5.3.28-37.fc30.x86_64",
+      "libdhash-0.5.0-42.fc30.x86_64",
+      "libdnf-0.28.1-1.fc30.x86_64",
+      "libedit-3.1-26.20181209cvs.fc30.x86_64",
+      "libevent-2.1.8-5.fc30.x86_64",
+      "libfdisk-2.33.2-1.fc30.x86_64",
+      "libffi-3.1-19.fc30.x86_64",
+      "libgcc-9.0.1-0.10.fc30.x86_64",
+      "libgcrypt-1.8.4-3.fc30.x86_64",
+      "libgomp-9.0.1-0.10.fc30.x86_64",
+      "libgpg-error-1.33-2.fc30.x86_64",
+      "libicu-63.1-2.fc30.x86_64",
+      "libidn2-2.1.1a-1.fc30.x86_64",
+      "libini_config-1.3.1-42.fc30.x86_64",
+      "libkcapi-1.1.4-1.fc30.x86_64",
+      "libkcapi-hmaccalc-1.1.4-1.fc30.x86_64",
+      "libksba-1.3.5-9.fc30.x86_64",
+      "libldb-1.5.4-1.fc30.x86_64",
+      "libmaxminddb-1.2.0-7.fc30.x86_64",
+      "libmetalink-0.1.3-8.fc30.x86_64",
+      "libmnl-1.0.4-9.fc30.x86_64",
+      "libmodulemd1-1.8.6-3.fc30.x86_64",
+      "libmount-2.33.2-1.fc30.x86_64",
+      "libndp-1.7-3.fc30.x86_64",
+      "libnfsidmap-2.3.3-7.rc2.fc30.x86_64",
+      "libnghttp2-1.37.0-1.fc30.x86_64",
+      "libnl3-3.4.0-8.fc30.x86_64",
+      "libnsl2-1.2.0-4.20180605git4a062cf.fc30.x86_64",
+      "libpath_utils-0.2.1-42.fc30.x86_64",
+      "libpcap-1.9.0-3.fc30.x86_64",
+      "libpipeline-1.5.1-2.fc30.x86_64",
+      "libpng-1.6.36-1.fc30.x86_64",
+      "libpsl-0.20.2-6.fc30.x86_64",
+      "libpwquality-1.4.0-12.fc30.x86_64",
+      "libref_array-0.1.5-42.fc30.x86_64",
+      "librepo-1.9.6-2.fc30.x86_64",
+      "libreport-filesystem-2.10.0-1.fc30.noarch",
+      "libseccomp-2.4.0-0.fc30.x86_64",
+      "libsecret-0.18.8-1.fc30.x86_64",
+      "libselinux-2.9-1.fc30.x86_64",
+      "libselinux-utils-2.9-1.fc30.x86_64",
+      "libsemanage-2.9-1.fc30.x86_64",
+      "libsepol-2.9-1.fc30.x86_64",
+      "libsigsegv-2.11-7.fc30.x86_64",
+      "libsmartcols-2.33.2-1.fc30.x86_64",
+      "libsolv-0.7.4-2.fc30.x86_64",
+      "libss-1.44.6-1.fc30.x86_64",
+      "libssh-0.8.7-1.fc30.x86_64",
+      "libsss_autofs-2.1.0-2.fc30.x86_64",
+      "libsss_certmap-2.1.0-2.fc30.x86_64",
+      "libsss_idmap-2.1.0-2.fc30.x86_64",
+      "libsss_nss_idmap-2.1.0-2.fc30.x86_64",
+      "libsss_sudo-2.1.0-2.fc30.x86_64",
+      "libstdc++-9.0.1-0.10.fc30.x86_64",
+      "libtalloc-2.1.16-1.fc30.x86_64",
+      "libtasn1-4.13-7.fc30.x86_64",
+      "libtdb-1.3.18-1.fc30.x86_64",
+      "libtevent-0.9.39-1.fc30.x86_64",
+      "libtirpc-1.1.4-2.rc2.fc30.1.x86_64",
+      "libunistring-0.9.10-5.fc30.x86_64",
+      "libusbx-1.0.22-2.fc30.x86_64",
+      "libuser-0.62-20.fc30.x86_64",
+      "libutempter-1.1.6-16.fc30.x86_64",
+      "libuuid-2.33.2-1.fc30.x86_64",
+      "libverto-0.3.0-7.fc30.x86_64",
+      "libxcrypt-4.4.4-2.fc30.x86_64",
+      "libxkbcommon-0.8.3-1.fc30.x86_64",
+      "libxml2-2.9.9-2.fc30.x86_64",
+      "libyaml-0.2.1-5.fc30.x86_64",
+      "libzstd-1.3.8-2.fc30.x86_64",
+      "linux-atm-libs-2.5.1-21.fc29.x86_64",
+      "linux-firmware-20190312-94.fc30.noarch",
+      "linux-firmware-whence-20190312-94.fc30.noarch",
+      "lmdb-libs-0.9.23-2.fc30.x86_64",
+      "lua-libs-5.3.5-5.fc30.x86_64",
+      "lz4-libs-1.8.3-2.fc30.x86_64",
+      "man-db-2.8.4-4.fc30.x86_64",
+      "mkpasswd-5.4.2-1.fc30.x86_64",
+      "mozjs60-60.4.0-5.fc30.x86_64",
+      "mpfr-3.1.6-4.fc30.x86_64",
+      "mtools-4.0.18-16.fc30.x86_64",
+      "ncurses-6.1-10.20180923.fc30.x86_64",
+      "ncurses-base-6.1-10.20180923.fc30.noarch",
+      "ncurses-libs-6.1-10.20180923.fc30.x86_64",
+      "net-tools-2.0-0.54.20160912git.fc30.x86_64",
+      "nettle-3.4.1rc1-2.fc30.x86_64",
+      "npth-1.6-2.fc30.x86_64",
+      "openldap-2.4.47-1.fc30.x86_64",
+      "openssh-7.9p1-5.fc30.x86_64",
+      "openssh-clients-7.9p1-5.fc30.x86_64",
+      "openssh-server-7.9p1-5.fc30.x86_64",
+      "openssl-1.1.1b-3.fc30.x86_64",
+      "openssl-libs-1.1.1b-3.fc30.x86_64",
+      "openssl-pkcs11-0.4.10-1.fc30.x86_64",
+      "os-prober-1.74-8.fc30.x86_64",
+      "p11-kit-0.23.15-3.fc30.x86_64",
+      "p11-kit-trust-0.23.15-3.fc30.x86_64",
+      "pam-1.3.1-17.fc30.x86_64",
+      "parted-3.2-40.fc30.x86_64",
+      "passwd-0.80-5.fc30.x86_64",
+      "pcre-8.43-1.fc30.x86_64",
+      "pcre2-10.32-9.fc30.x86_64",
+      "pigz-2.4-4.fc30.x86_64",
+      "pinentry-1.1.0-5.fc30.x86_64",
+      "policycoreutils-2.9-1.fc30.x86_64",
+      "polkit-0.115-10.fc30.1.x86_64",
+      "polkit-libs-0.115-10.fc30.1.x86_64",
+      "polkit-pkla-compat-0.1-14.fc30.x86_64",
+      "popt-1.16-17.fc30.x86_64",
+      "procps-ng-3.3.15-5.fc30.x86_64",
+      "publicsuffix-list-dafsa-20190128-2.fc30.noarch",
+      "python-pip-wheel-19.0.3-1.fc30.noarch",
+      "python-setuptools-wheel-40.8.0-1.fc30.noarch",
+      "python3-3.7.3-1.fc30.x86_64",
+      "python3-asn1crypto-0.24.0-6.fc30.noarch",
+      "python3-attrs-18.2.0-1.fc30.noarch",
+      "python3-audit-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "python3-babel-2.6.0-6.fc30.noarch",
+      "python3-boto-2.45.0-11.fc30.noarch",
+      "python3-cffi-1.11.5-7.fc30.x86_64",
+      "python3-chardet-3.0.4-9.fc30.noarch",
+      "python3-configobj-5.0.6-15.fc30.noarch",
+      "python3-cryptography-2.6.1-1.fc30.x86_64",
+      "python3-dateutil-2.8.0-1.fc30.noarch",
+      "python3-dbus-1.2.8-5.fc30.x86_64",
+      "python3-distro-1.4.0-1.fc30.noarch",
+      "python3-dnf-4.2.2-2.fc30.noarch",
+      "python3-dnf-plugins-core-4.0.6-1.fc30.noarch",
+      "python3-gpg-1.12.0-1.fc30.x86_64",
+      "python3-hawkey-0.28.1-1.fc30.x86_64",
+      "python3-idna-2.7-4.fc30.noarch",
+      "python3-jinja2-2.10-8.fc30.noarch",
+      "python3-jsonpatch-1.21-7.fc30.noarch",
+      "python3-jsonpointer-1.10-15.fc30.noarch",
+      "python3-jsonschema-3.0.1-1.fc30.noarch",
+      "python3-jwt-1.7.1-2.fc30.noarch",
+      "python3-libcomps-0.1.11-1.fc30.x86_64",
+      "python3-libdnf-0.28.1-1.fc30.x86_64",
+      "python3-libs-3.7.3-1.fc30.x86_64",
+      "python3-libselinux-2.9-1.fc30.x86_64",
+      "python3-libsemanage-2.9-1.fc30.x86_64",
+      "python3-markupsafe-1.1.1-1.fc30.x86_64",
+      "python3-oauthlib-2.1.0-1.fc29.noarch",
+      "python3-pbr-5.1.2-2.fc30.noarch",
+      "python3-pip-19.0.3-1.fc30.noarch",
+      "python3-ply-3.11-2.fc30.noarch",
+      "python3-policycoreutils-2.9-1.fc30.noarch",
+      "python3-prettytable-0.7.2-17.fc30.noarch",
+      "python3-psutil-5.4.3-7.fc30.x86_64",
+      "python3-pyasn1-0.4.4-4.fc30.noarch",
+      "python3-pycparser-2.14-18.fc30.noarch",
+      "python3-pyrsistent-0.14.11-1.fc30.x86_64",
+      "python3-pyserial-3.4-2.fc30.noarch",
+      "python3-pysocks-1.6.8-7.fc30.noarch",
+      "python3-pytz-2018.5-2.fc30.noarch",
+      "python3-pyyaml-5.1-1.fc30.x86_64",
+      "python3-requests-2.21.0-2.fc30.noarch",
+      "python3-rpm-4.14.2.1-4.fc30.1.x86_64",
+      "python3-rsa-3.4.2-9.fc30.noarch",
+      "python3-setools-4.1.1-14.fc30.x86_64",
+      "python3-setuptools-40.8.0-1.fc30.noarch",
+      "python3-six-1.12.0-1.fc30.noarch",
+      "python3-unbound-1.8.3-4.fc30.x86_64",
+      "python3-urllib3-1.24.1-3.fc30.noarch",
+      "qrencode-libs-3.4.4-8.fc30.x86_64",
+      "readline-8.0-2.fc30.x86_64",
+      "rootfiles-8.1-24.fc30.noarch",
+      "rpm-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-build-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-selinux-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-systemd-inhibit-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-sign-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rsync-3.1.3-7.fc30.x86_64",
+      "sed-4.5-3.fc30.x86_64",
+      "selinux-policy-3.14.3-29.fc30.noarch",
+      "selinux-policy-targeted-3.14.3-29.fc30.noarch",
+      "setup-2.13.3-1.fc30.noarch",
+      "shadow-utils-4.6-8.fc30.x86_64",
+      "shared-mime-info-1.12-2.fc30.x86_64",
+      "sqlite-libs-3.26.0-3.fc30.x86_64",
+      "sssd-client-2.1.0-2.fc30.x86_64",
+      "sssd-common-2.1.0-2.fc30.x86_64",
+      "sssd-kcm-2.1.0-2.fc30.x86_64",
+      "sssd-nfs-idmap-2.1.0-2.fc30.x86_64",
+      "sudo-1.8.27-1.fc30.x86_64",
+      "syslinux-6.04-0.8.fc28.x86_64",
+      "syslinux-extlinux-6.04-0.8.fc28.x86_64",
+      "syslinux-extlinux-nonlinux-6.04-0.8.fc28.noarch",
+      "syslinux-nonlinux-6.04-0.8.fc28.noarch",
+      "systemd-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-bootchart-233-4.fc30.x86_64",
+      "systemd-libs-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-pam-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-rpm-macros-241-7.gita2eaa1c.fc30.noarch",
+      "systemd-udev-241-7.gita2eaa1c.fc30.x86_64",
+      "tar-1.32-1.fc30.x86_64",
+      "timedatex-0.5-6.fc30.x86_64",
+      "trousers-0.3.13-12.fc30.x86_64",
+      "trousers-lib-0.3.13-12.fc30.x86_64",
+      "tzdata-2019a-1.fc30.noarch",
+      "unbound-libs-1.8.3-4.fc30.x86_64",
+      "util-linux-2.33.2-1.fc30.x86_64",
+      "vim-minimal-8.1.1137-1.fc30.x86_64",
+      "which-2.21-14.fc30.x86_64",
+      "whois-nls-5.4.2-1.fc30.noarch",
+      "xfsprogs-4.19.0-4.fc30.x86_64",
+      "xkeyboard-config-2.24-5.fc30.noarch",
+      "xz-5.2.4-5.fc30.x86_64",
+      "xz-libs-5.2.4-5.fc30.x86_64",
+      "zchunk-libs-1.1.1-3.fc30.x86_64",
+      "zlib-1.2.11-15.fc30.x86_64"
+    ],
+    "partition-table": "dos",
+    "partition-table-id": "0x14fc63d2",
+    "partitions": [
+      {
+        "bootable": true,
+        "fstype": "ext4",
+        "label": null,
+        "size": 3220176896,
+        "start": 1048576,
+        "type": "83",
+        "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac"
+      }
+    ],
+    "passwd": [
+      "adm:x:3:4:adm:/var/adm:/sbin/nologin",
+      "bin:x:1:1:bin:/bin:/sbin/nologin",
+      "chrony:x:995:992::/var/lib/chrony:/sbin/nologin",
+      "daemon:x:2:2:daemon:/sbin:/sbin/nologin",
+      "dbus:x:81:81:System message bus:/:/sbin/nologin",
+      "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin",
+      "games:x:12:100:games:/usr/games:/sbin/nologin",
+      "halt:x:7:0:halt:/sbin:/sbin/halt",
+      "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin",
+      "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin",
+      "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin",
+      "operator:x:11:0:operator:/root:/sbin/nologin",
+      "polkitd:x:997:995:User for polkitd:/:/sbin/nologin",
+      "root:x:0:0:root:/root:/bin/bash",
+      "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown",
+      "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin",
+      "sync:x:5:0:sync:/sbin:/bin/sync",
+      "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin",
+      "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin",
+      "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin",
+      "systemd-timesync:x:998:996:systemd Time Synchronization:/:/sbin/nologin",
+      "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
+      "unbound:x:996:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
+    ],
+    "rpm-verify": {
+      "changed": {
+        "/boot/System.map-5.0.9-301.fc30.x86_64": ".M.......",
+        "/boot/initramfs-5.0.9-301.fc30.x86_64.img": ".M.......",
+        "/etc/udev/hwdb.bin": ".M.......",
+        "/proc": ".M.......",
+        "/run/cryptsetup": ".M.......",
+        "/sys": ".M.......",
+        "/var/log/btmp": ".M.......",
+        "/var/log/journal": ".M....G..",
+        "/var/log/lastlog": ".M....G.."
+      },
+      "missing": [
+        "/etc/systemd/system/dbus-org.freedesktop.network1.service",
+        "/etc/systemd/system/dbus-org.freedesktop.resolve1.service"
+      ]
+    }
   }
 }
diff --git a/tools/test_image_info/pipelines/tar_empty_blueprint.json b/tools/test_image_info/pipelines/tar_empty_blueprint.json
index 10ed3b212..c0cfbc9bb 100644
--- a/tools/test_image_info/pipelines/tar_empty_blueprint.json
+++ b/tools/test_image_info/pipelines/tar_empty_blueprint.json
@@ -43,30 +43,38 @@
             }
           ],
           "packages": [
-            "@Core",
-            "chrony",
-            "kernel",
+            "policycoreutils",
             "selinux-policy-targeted",
-            "grub2-pc",
-            "spice-vdagent",
-            "qemu-guest-agent",
-            "xen-libs",
+            "kernel",
+            "firewalld",
+            "chrony",
             "langpacks-en"
           ],
+          "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",
+          "boot_fs_uuid": "00000000-0000-0000-0000-000000000000",
+          "kernel_opts": "ro biosdevname=0 net.ifnames=0"
+        }
+      },
+      {
+        "name": "org.osbuild.fix-bls",
+        "options": {}
+      },
       {
         "name": "org.osbuild.selinux",
         "options": {
@@ -77,7 +85,7 @@
     "assembler": {
       "name": "org.osbuild.tar",
       "options": {
-        "filename": "image.tar"
+        "filename": "root.tar.xz"
       }
     }
   }
diff --git a/tools/test_image_info/pipelines/vhd_empty_blueprint.json b/tools/test_image_info/pipelines/vhd_empty_blueprint.json
index a69be2e8e..a118e7ea4 100644
--- a/tools/test_image_info/pipelines/vhd_empty_blueprint.json
+++ b/tools/test_image_info/pipelines/vhd_empty_blueprint.json
@@ -54,6 +54,9 @@
             "WALinuxAgent",
             "libxcrypt-compat"
           ],
+          "exclude_packages": [
+            "dracut-config-rescue"
+          ],
           "releasever": "30",
           "basearch": "x86_64"
         }
@@ -87,15 +90,15 @@
           "kernel_opts": "ro biosdevname=0 net.ifnames=0"
         }
       },
+      {
+        "name": "org.osbuild.fix-bls",
+        "options": {}
+      },
       {
         "name": "org.osbuild.selinux",
         "options": {
           "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts"
         }
-      },
-      {
-        "name": "org.osbuild.fix-bls",
-        "options": {}
       }
     ],
     "assembler": {
@@ -108,5 +111,478 @@
         "size": 3221225472
       }
     }
+  },
+  "expected": {
+    "bootloader": "grub",
+    "bootmenu": [
+      {
+        "grub_arg": "--unrestricted",
+        "grub_class": "kernel",
+        "grub_users": "$grub_users",
+        "initrd": "/initramfs-0-rescue-ffffffffffffffffffffffffffffffff.img",
+        "linux": "/vmlinuz-0-rescue-ffffffffffffffffffffffffffffffff",
+        "options": "$kernelopts",
+        "title": "Fedora (0-rescue-ffffffffffffffffffffffffffffffff) 30 (Thirty)",
+        "version": "0-rescue-ffffffffffffffffffffffffffffffff"
+      },
+      {
+        "grub_arg": "--unrestricted",
+        "grub_class": "kernel",
+        "grub_users": "$grub_users",
+        "initrd": "/boot/initramfs-5.0.9-301.fc30.x86_64.img",
+        "linux": "/boot/vmlinuz-5.0.9-301.fc30.x86_64",
+        "options": "$kernelopts",
+        "title": "Fedora (5.0.9-301.fc30.x86_64) 30 (Thirty)",
+        "version": "5.0.9-301.fc30.x86_64"
+      }
+    ],
+    "fstab": [
+      [
+        "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac",
+        "/",
+        "ext4",
+        "defaults",
+        "1",
+        "1"
+      ]
+    ],
+    "groups": [
+      "adm:x:4:",
+      "audio:x:63:",
+      "bin:x:1:",
+      "cdrom:x:11:",
+      "chrony:x:992:",
+      "daemon:x:2:",
+      "dbus:x:81:",
+      "dialout:x:18:",
+      "disk:x:6:",
+      "floppy:x:19:",
+      "ftp:x:50:",
+      "games:x:20:",
+      "input:x:999:",
+      "kmem:x:9:",
+      "kvm:x:36:",
+      "lock:x:54:",
+      "lp:x:7:",
+      "mail:x:12:",
+      "man:x:15:",
+      "mem:x:8:",
+      "nobody:x:65534:",
+      "polkitd:x:995:",
+      "render:x:998:",
+      "root:x:0:",
+      "ssh_keys:x:994:",
+      "sshd:x:74:",
+      "sys:x:3:",
+      "systemd-coredump:x:997:",
+      "systemd-journal:x:190:",
+      "systemd-network:x:192:",
+      "systemd-resolve:x:193:",
+      "systemd-timesync:x:996:",
+      "tape:x:33:",
+      "tss:x:59:",
+      "tty:x:5:",
+      "unbound:x:993:",
+      "users:x:100:",
+      "utempter:x:35:",
+      "utmp:x:22:",
+      "video:x:39:",
+      "wheel:x:10:"
+    ],
+    "image-format": "qcow2",
+    "os-release": {
+      "ANSI_COLOR": "0;34",
+      "BUG_REPORT_URL": "https://bugzilla.redhat.com/",
+      "CPE_NAME": "cpe:/o:fedoraproject:fedora:30",
+      "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f30/system-administrators-guide/",
+      "HOME_URL": "https://fedoraproject.org/",
+      "ID": "fedora",
+      "LOGO": "fedora-logo-icon",
+      "NAME": "Fedora",
+      "PLATFORM_ID": "platform:f30",
+      "PRETTY_NAME": "Fedora 30 (Thirty)",
+      "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy",
+      "REDHAT_BUGZILLA_PRODUCT": "Fedora",
+      "REDHAT_BUGZILLA_PRODUCT_VERSION": "30",
+      "REDHAT_SUPPORT_PRODUCT": "Fedora",
+      "REDHAT_SUPPORT_PRODUCT_VERSION": "30",
+      "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help",
+      "VERSION": "30 (Thirty)",
+      "VERSION_CODENAME": "",
+      "VERSION_ID": "30"
+    },
+    "packages": [
+      "NetworkManager-1.16.0-1.fc30.x86_64",
+      "NetworkManager-libnm-1.16.0-1.fc30.x86_64",
+      "WALinuxAgent-2.2.38-1.fc30.noarch",
+      "acl-2.2.53-3.fc30.x86_64",
+      "alternatives-1.11-4.fc30.x86_64",
+      "audit-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "audit-libs-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "basesystem-11-7.fc30.noarch",
+      "bash-5.0.2-1.fc30.x86_64",
+      "bind-export-libs-9.11.5-13.P4.fc30.x86_64",
+      "brotli-1.0.7-3.fc30.x86_64",
+      "bzip2-libs-1.0.6-29.fc30.x86_64",
+      "c-ares-1.15.0-3.fc30.x86_64",
+      "ca-certificates-2018.2.26-3.fc30.noarch",
+      "chrony-3.4-2.fc30.x86_64",
+      "coreutils-8.31-1.fc30.x86_64",
+      "coreutils-common-8.31-1.fc30.x86_64",
+      "cpio-2.12-10.fc30.x86_64",
+      "cracklib-2.9.6-19.fc30.x86_64",
+      "cracklib-dicts-2.9.6-19.fc30.x86_64",
+      "crypto-policies-20190211-2.gite3eacfc.fc30.noarch",
+      "cryptsetup-libs-2.1.0-3.fc30.x86_64",
+      "curl-7.64.0-6.fc30.x86_64",
+      "cyrus-sasl-lib-2.1.27-0.6rc7.fc30.x86_64",
+      "dbus-1.12.12-7.fc30.x86_64",
+      "dbus-broker-20-3.fc30.x86_64",
+      "dbus-common-1.12.12-7.fc30.noarch",
+      "dbus-libs-1.12.12-7.fc30.x86_64",
+      "deltarpm-3.6-29.fc30.x86_64",
+      "device-mapper-1.02.154-3.fc30.x86_64",
+      "device-mapper-libs-1.02.154-3.fc30.x86_64",
+      "dhcp-client-4.3.6-32.fc30.x86_64",
+      "dhcp-common-4.3.6-32.fc30.noarch",
+      "dhcp-libs-4.3.6-32.fc30.x86_64",
+      "diffutils-3.7-2.fc30.x86_64",
+      "dnf-4.2.2-2.fc30.noarch",
+      "dnf-data-4.2.2-2.fc30.noarch",
+      "dnf-plugins-core-4.0.6-1.fc30.noarch",
+      "dnf-yum-4.2.2-2.fc30.noarch",
+      "dracut-049-26.git20181204.fc30.x86_64",
+      "dracut-config-rescue-049-26.git20181204.fc30.x86_64",
+      "e2fsprogs-1.44.6-1.fc30.x86_64",
+      "e2fsprogs-libs-1.44.6-1.fc30.x86_64",
+      "ebtables-2.0.10-31.fc30.x86_64",
+      "elfutils-default-yama-scope-0.176-1.fc30.noarch",
+      "elfutils-libelf-0.176-1.fc30.x86_64",
+      "elfutils-libs-0.176-1.fc30.x86_64",
+      "expat-2.2.6-2.fc30.x86_64",
+      "fedora-gpg-keys-30-1.noarch",
+      "fedora-release-30-1.noarch",
+      "fedora-release-common-30-1.noarch",
+      "fedora-repos-30-1.noarch",
+      "file-5.36-2.fc30.x86_64",
+      "file-libs-5.36-2.fc30.x86_64",
+      "filesystem-3.10-1.fc30.x86_64",
+      "findutils-4.6.0-22.fc30.x86_64",
+      "fipscheck-1.5.0-6.fc30.x86_64",
+      "fipscheck-lib-1.5.0-6.fc30.x86_64",
+      "firewalld-0.6.3-2.fc30.noarch",
+      "firewalld-filesystem-0.6.3-2.fc30.noarch",
+      "freetype-2.9.1-7.fc30.x86_64",
+      "fuse-libs-2.9.9-3.fc30.x86_64",
+      "gawk-4.2.1-6.fc30.x86_64",
+      "gdbm-libs-1.18-4.fc30.x86_64",
+      "geolite2-city-20190409-1.fc30.noarch",
+      "geolite2-country-20190409-1.fc30.noarch",
+      "gettext-0.19.8.1-18.fc30.x86_64",
+      "gettext-libs-0.19.8.1-18.fc30.x86_64",
+      "glib2-2.60.1-2.fc30.x86_64",
+      "glibc-2.29-9.fc30.x86_64",
+      "glibc-common-2.29-9.fc30.x86_64",
+      "glibc-langpack-en-2.29-9.fc30.x86_64",
+      "gmp-6.1.2-10.fc30.x86_64",
+      "gnupg2-2.2.13-1.fc30.x86_64",
+      "gnupg2-smime-2.2.13-1.fc30.x86_64",
+      "gnutls-3.6.7-1.fc30.x86_64",
+      "gobject-introspection-1.60.1-2.fc30.x86_64",
+      "gpg-pubkey-cfc659b9-5b6eac67",
+      "gpgme-1.12.0-1.fc30.x86_64",
+      "grep-3.1-9.fc30.x86_64",
+      "groff-base-1.22.3-19.fc30.x86_64",
+      "grub2-common-2.02-75.fc30.noarch",
+      "grub2-pc-2.02-75.fc30.x86_64",
+      "grub2-pc-modules-2.02-75.fc30.noarch",
+      "grub2-tools-2.02-75.fc30.x86_64",
+      "grub2-tools-extra-2.02-75.fc30.x86_64",
+      "grub2-tools-minimal-2.02-75.fc30.x86_64",
+      "grubby-8.40-30.fc30.x86_64",
+      "gzip-1.9-9.fc30.x86_64",
+      "hardlink-1.3-8.fc30.x86_64",
+      "hostname-3.20-8.fc30.x86_64",
+      "ima-evm-utils-1.1-5.fc30.x86_64",
+      "ipcalc-0.2.5-2.fc30.x86_64",
+      "iproute-5.0.0-2.fc30.x86_64",
+      "iproute-tc-5.0.0-2.fc30.x86_64",
+      "ipset-6.38-2.fc30.x86_64",
+      "ipset-libs-6.38-2.fc30.x86_64",
+      "iptables-1.8.0-5.fc30.x86_64",
+      "iptables-libs-1.8.0-5.fc30.x86_64",
+      "iputils-20180629-4.fc30.x86_64",
+      "jansson-2.12-2.fc30.x86_64",
+      "json-c-0.13.1-4.fc30.x86_64",
+      "kbd-2.0.4-13.fc30.x86_64",
+      "kbd-legacy-2.0.4-13.fc30.noarch",
+      "kbd-misc-2.0.4-13.fc30.noarch",
+      "kernel-5.0.9-301.fc30.x86_64",
+      "kernel-core-5.0.9-301.fc30.x86_64",
+      "kernel-modules-5.0.9-301.fc30.x86_64",
+      "keyutils-libs-1.6-2.fc30.x86_64",
+      "kmod-25-5.fc30.x86_64",
+      "kmod-libs-25-5.fc30.x86_64",
+      "kpartx-0.7.9-6.git2df6110.fc30.x86_64",
+      "krb5-libs-1.17-4.fc30.x86_64",
+      "langpacks-en-1.0-17.fc30.noarch",
+      "less-530-4.fc30.x86_64",
+      "libacl-2.2.53-3.fc30.x86_64",
+      "libarchive-3.3.3-6.fc30.x86_64",
+      "libargon2-20161029-8.fc30.x86_64",
+      "libassuan-2.5.2-2.fc30.x86_64",
+      "libattr-2.4.48-5.fc30.x86_64",
+      "libbasicobjects-0.1.1-42.fc30.x86_64",
+      "libblkid-2.33.2-1.fc30.x86_64",
+      "libcap-2.26-5.fc30.x86_64",
+      "libcap-ng-0.7.9-7.fc30.x86_64",
+      "libcollection-0.7.0-42.fc30.x86_64",
+      "libcom_err-1.44.6-1.fc30.x86_64",
+      "libcomps-0.1.11-1.fc30.x86_64",
+      "libcroco-0.6.13-1.fc30.x86_64",
+      "libcurl-7.64.0-6.fc30.x86_64",
+      "libdb-5.3.28-37.fc30.x86_64",
+      "libdb-utils-5.3.28-37.fc30.x86_64",
+      "libdhash-0.5.0-42.fc30.x86_64",
+      "libdnf-0.28.1-1.fc30.x86_64",
+      "libedit-3.1-26.20181209cvs.fc30.x86_64",
+      "libevent-2.1.8-5.fc30.x86_64",
+      "libfdisk-2.33.2-1.fc30.x86_64",
+      "libffi-3.1-19.fc30.x86_64",
+      "libgcc-9.0.1-0.10.fc30.x86_64",
+      "libgcrypt-1.8.4-3.fc30.x86_64",
+      "libgomp-9.0.1-0.10.fc30.x86_64",
+      "libgpg-error-1.33-2.fc30.x86_64",
+      "libidn2-2.1.1a-1.fc30.x86_64",
+      "libini_config-1.3.1-42.fc30.x86_64",
+      "libkcapi-1.1.4-1.fc30.x86_64",
+      "libkcapi-hmaccalc-1.1.4-1.fc30.x86_64",
+      "libksba-1.3.5-9.fc30.x86_64",
+      "libldb-1.5.4-1.fc30.x86_64",
+      "libmaxminddb-1.2.0-7.fc30.x86_64",
+      "libmetalink-0.1.3-8.fc30.x86_64",
+      "libmnl-1.0.4-9.fc30.x86_64",
+      "libmodulemd1-1.8.6-3.fc30.x86_64",
+      "libmount-2.33.2-1.fc30.x86_64",
+      "libndp-1.7-3.fc30.x86_64",
+      "libnetfilter_conntrack-1.0.7-2.fc30.x86_64",
+      "libnfnetlink-1.0.1-15.fc30.x86_64",
+      "libnfsidmap-2.3.3-7.rc2.fc30.x86_64",
+      "libnftnl-1.1.1-6.fc30.x86_64",
+      "libnghttp2-1.37.0-1.fc30.x86_64",
+      "libnl3-3.4.0-8.fc30.x86_64",
+      "libnsl2-1.2.0-4.20180605git4a062cf.fc30.x86_64",
+      "libpath_utils-0.2.1-42.fc30.x86_64",
+      "libpcap-1.9.0-3.fc30.x86_64",
+      "libpipeline-1.5.1-2.fc30.x86_64",
+      "libpng-1.6.36-1.fc30.x86_64",
+      "libpsl-0.20.2-6.fc30.x86_64",
+      "libpwquality-1.4.0-12.fc30.x86_64",
+      "libref_array-0.1.5-42.fc30.x86_64",
+      "librepo-1.9.6-2.fc30.x86_64",
+      "libreport-filesystem-2.10.0-1.fc30.noarch",
+      "libseccomp-2.4.0-0.fc30.x86_64",
+      "libsecret-0.18.8-1.fc30.x86_64",
+      "libselinux-2.9-1.fc30.x86_64",
+      "libselinux-utils-2.9-1.fc30.x86_64",
+      "libsemanage-2.9-1.fc30.x86_64",
+      "libsepol-2.9-1.fc30.x86_64",
+      "libsigsegv-2.11-7.fc30.x86_64",
+      "libsmartcols-2.33.2-1.fc30.x86_64",
+      "libsolv-0.7.4-2.fc30.x86_64",
+      "libss-1.44.6-1.fc30.x86_64",
+      "libssh-0.8.7-1.fc30.x86_64",
+      "libsss_autofs-2.1.0-2.fc30.x86_64",
+      "libsss_certmap-2.1.0-2.fc30.x86_64",
+      "libsss_idmap-2.1.0-2.fc30.x86_64",
+      "libsss_nss_idmap-2.1.0-2.fc30.x86_64",
+      "libsss_sudo-2.1.0-2.fc30.x86_64",
+      "libstdc++-9.0.1-0.10.fc30.x86_64",
+      "libtalloc-2.1.16-1.fc30.x86_64",
+      "libtasn1-4.13-7.fc30.x86_64",
+      "libtdb-1.3.18-1.fc30.x86_64",
+      "libtevent-0.9.39-1.fc30.x86_64",
+      "libtirpc-1.1.4-2.rc2.fc30.1.x86_64",
+      "libunistring-0.9.10-5.fc30.x86_64",
+      "libusbx-1.0.22-2.fc30.x86_64",
+      "libuser-0.62-20.fc30.x86_64",
+      "libutempter-1.1.6-16.fc30.x86_64",
+      "libuuid-2.33.2-1.fc30.x86_64",
+      "libverto-0.3.0-7.fc30.x86_64",
+      "libxcrypt-4.4.4-2.fc30.x86_64",
+      "libxcrypt-compat-4.4.4-2.fc30.x86_64",
+      "libxkbcommon-0.8.3-1.fc30.x86_64",
+      "libxml2-2.9.9-2.fc30.x86_64",
+      "libyaml-0.2.1-5.fc30.x86_64",
+      "libzstd-1.3.8-2.fc30.x86_64",
+      "linux-atm-libs-2.5.1-21.fc29.x86_64",
+      "linux-firmware-20190312-94.fc30.noarch",
+      "linux-firmware-whence-20190312-94.fc30.noarch",
+      "lmdb-libs-0.9.23-2.fc30.x86_64",
+      "lua-libs-5.3.5-5.fc30.x86_64",
+      "lz4-libs-1.8.3-2.fc30.x86_64",
+      "man-db-2.8.4-4.fc30.x86_64",
+      "mkpasswd-5.4.2-1.fc30.x86_64",
+      "mozjs60-60.4.0-5.fc30.x86_64",
+      "mpfr-3.1.6-4.fc30.x86_64",
+      "ncurses-6.1-10.20180923.fc30.x86_64",
+      "ncurses-base-6.1-10.20180923.fc30.noarch",
+      "ncurses-libs-6.1-10.20180923.fc30.x86_64",
+      "net-tools-2.0-0.54.20160912git.fc30.x86_64",
+      "nettle-3.4.1rc1-2.fc30.x86_64",
+      "nftables-0.9.0-5.fc30.x86_64",
+      "npth-1.6-2.fc30.x86_64",
+      "ntfs-3g-2017.3.23-11.fc30.x86_64",
+      "ntfs-3g-system-compression-1.0-1.fc30.x86_64",
+      "ntfsprogs-2017.3.23-11.fc30.x86_64",
+      "openldap-2.4.47-1.fc30.x86_64",
+      "openssh-7.9p1-5.fc30.x86_64",
+      "openssh-clients-7.9p1-5.fc30.x86_64",
+      "openssh-server-7.9p1-5.fc30.x86_64",
+      "openssl-1.1.1b-3.fc30.x86_64",
+      "openssl-libs-1.1.1b-3.fc30.x86_64",
+      "openssl-pkcs11-0.4.10-1.fc30.x86_64",
+      "os-prober-1.74-8.fc30.x86_64",
+      "p11-kit-0.23.15-3.fc30.x86_64",
+      "p11-kit-trust-0.23.15-3.fc30.x86_64",
+      "pam-1.3.1-17.fc30.x86_64",
+      "parted-3.2-40.fc30.x86_64",
+      "passwd-0.80-5.fc30.x86_64",
+      "pcre-8.43-1.fc30.x86_64",
+      "pcre2-10.32-9.fc30.x86_64",
+      "pigz-2.4-4.fc30.x86_64",
+      "pinentry-1.1.0-5.fc30.x86_64",
+      "plymouth-0.9.4-5.fc30.x86_64",
+      "plymouth-core-libs-0.9.4-5.fc30.x86_64",
+      "plymouth-scripts-0.9.4-5.fc30.x86_64",
+      "policycoreutils-2.9-1.fc30.x86_64",
+      "polkit-0.115-10.fc30.1.x86_64",
+      "polkit-libs-0.115-10.fc30.1.x86_64",
+      "polkit-pkla-compat-0.1-14.fc30.x86_64",
+      "popt-1.16-17.fc30.x86_64",
+      "procps-ng-3.3.15-5.fc30.x86_64",
+      "publicsuffix-list-dafsa-20190128-2.fc30.noarch",
+      "python-pip-wheel-19.0.3-1.fc30.noarch",
+      "python-setuptools-wheel-40.8.0-1.fc30.noarch",
+      "python3-3.7.3-1.fc30.x86_64",
+      "python3-dateutil-2.8.0-1.fc30.noarch",
+      "python3-dbus-1.2.8-5.fc30.x86_64",
+      "python3-decorator-4.3.0-2.fc30.noarch",
+      "python3-distro-1.4.0-1.fc30.noarch",
+      "python3-dnf-4.2.2-2.fc30.noarch",
+      "python3-dnf-plugins-core-4.0.6-1.fc30.noarch",
+      "python3-firewall-0.6.3-2.fc30.noarch",
+      "python3-gobject-base-3.32.0-1.fc30.x86_64",
+      "python3-gpg-1.12.0-1.fc30.x86_64",
+      "python3-hawkey-0.28.1-1.fc30.x86_64",
+      "python3-libcomps-0.1.11-1.fc30.x86_64",
+      "python3-libdnf-0.28.1-1.fc30.x86_64",
+      "python3-libs-3.7.3-1.fc30.x86_64",
+      "python3-libselinux-2.9-1.fc30.x86_64",
+      "python3-pip-19.0.3-1.fc30.noarch",
+      "python3-pyasn1-0.4.4-4.fc30.noarch",
+      "python3-rpm-4.14.2.1-4.fc30.1.x86_64",
+      "python3-setuptools-40.8.0-1.fc30.noarch",
+      "python3-six-1.12.0-1.fc30.noarch",
+      "python3-slip-0.6.4-15.fc30.noarch",
+      "python3-slip-dbus-0.6.4-15.fc30.noarch",
+      "python3-unbound-1.8.3-4.fc30.x86_64",
+      "qrencode-libs-3.4.4-8.fc30.x86_64",
+      "readline-8.0-2.fc30.x86_64",
+      "rootfiles-8.1-24.fc30.noarch",
+      "rpm-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-build-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-selinux-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-systemd-inhibit-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-sign-libs-4.14.2.1-4.fc30.1.x86_64",
+      "sed-4.5-3.fc30.x86_64",
+      "selinux-policy-3.14.3-29.fc30.noarch",
+      "selinux-policy-targeted-3.14.3-29.fc30.noarch",
+      "setup-2.13.3-1.fc30.noarch",
+      "shadow-utils-4.6-8.fc30.x86_64",
+      "shared-mime-info-1.12-2.fc30.x86_64",
+      "sqlite-libs-3.26.0-3.fc30.x86_64",
+      "sssd-client-2.1.0-2.fc30.x86_64",
+      "sssd-common-2.1.0-2.fc30.x86_64",
+      "sssd-kcm-2.1.0-2.fc30.x86_64",
+      "sssd-nfs-idmap-2.1.0-2.fc30.x86_64",
+      "sudo-1.8.27-1.fc30.x86_64",
+      "systemd-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-bootchart-233-4.fc30.x86_64",
+      "systemd-libs-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-pam-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-rpm-macros-241-7.gita2eaa1c.fc30.noarch",
+      "systemd-udev-241-7.gita2eaa1c.fc30.x86_64",
+      "timedatex-0.5-6.fc30.x86_64",
+      "trousers-0.3.13-12.fc30.x86_64",
+      "trousers-lib-0.3.13-12.fc30.x86_64",
+      "tzdata-2019a-1.fc30.noarch",
+      "unbound-libs-1.8.3-4.fc30.x86_64",
+      "util-linux-2.33.2-1.fc30.x86_64",
+      "vim-minimal-8.1.1137-1.fc30.x86_64",
+      "which-2.21-14.fc30.x86_64",
+      "whois-nls-5.4.2-1.fc30.noarch",
+      "xkeyboard-config-2.24-5.fc30.noarch",
+      "xz-5.2.4-5.fc30.x86_64",
+      "xz-libs-5.2.4-5.fc30.x86_64",
+      "zchunk-libs-1.1.1-3.fc30.x86_64",
+      "zlib-1.2.11-15.fc30.x86_64"
+    ],
+    "partition-table": "dos",
+    "partition-table-id": "0x14fc63d2",
+    "partitions": [
+      {
+        "bootable": true,
+        "fstype": "ext4",
+        "label": null,
+        "size": 3220176896,
+        "start": 1048576,
+        "type": "83",
+        "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac"
+      }
+    ],
+    "passwd": [
+      "adm:x:3:4:adm:/var/adm:/sbin/nologin",
+      "bin:x:1:1:bin:/bin:/sbin/nologin",
+      "chrony:x:995:992::/var/lib/chrony:/sbin/nologin",
+      "daemon:x:2:2:daemon:/sbin:/sbin/nologin",
+      "dbus:x:81:81:System message bus:/:/sbin/nologin",
+      "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin",
+      "games:x:12:100:games:/usr/games:/sbin/nologin",
+      "halt:x:7:0:halt:/sbin:/sbin/halt",
+      "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin",
+      "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin",
+      "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin",
+      "operator:x:11:0:operator:/root:/sbin/nologin",
+      "polkitd:x:997:995:User for polkitd:/:/sbin/nologin",
+      "root:x:0:0:root:/root:/bin/bash",
+      "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown",
+      "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin",
+      "sync:x:5:0:sync:/sbin:/bin/sync",
+      "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin",
+      "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin",
+      "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin",
+      "systemd-timesync:x:998:996:systemd Time Synchronization:/:/sbin/nologin",
+      "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
+      "unbound:x:996:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
+    ],
+    "rpm-verify": {
+      "changed": {
+        "/boot/System.map-5.0.9-301.fc30.x86_64": ".M.......",
+        "/boot/initramfs-5.0.9-301.fc30.x86_64.img": ".M.......",
+        "/etc/udev/hwdb.bin": ".M.......",
+        "/proc": ".M.......",
+        "/run/cryptsetup": ".M.......",
+        "/sys": ".M.......",
+        "/var/log/btmp": ".M.......",
+        "/var/log/journal": ".M....G..",
+        "/var/log/lastlog": ".M....G.."
+      },
+      "missing": [
+        "/etc/systemd/system/dbus-org.freedesktop.network1.service",
+        "/etc/systemd/system/dbus-org.freedesktop.resolve1.service"
+      ]
+    }
   }
 }
diff --git a/tools/test_image_info/pipelines/vmdk_empty_blueprint.json b/tools/test_image_info/pipelines/vmdk_empty_blueprint.json
index 4bce7b7c1..e7102b624 100644
--- a/tools/test_image_info/pipelines/vmdk_empty_blueprint.json
+++ b/tools/test_image_info/pipelines/vmdk_empty_blueprint.json
@@ -43,24 +43,22 @@
             }
           ],
           "packages": [
-            "@Core",
+            "@core",
             "chrony",
-            "kernel",
-            "selinux-policy-targeted",
+            "firewalld",
             "grub2-pc",
-            "spice-vdagent",
-            "qemu-guest-agent",
-            "xen-libs",
-            "langpacks-en"
+            "kernel",
+            "langpacks-en",
+            "open-vm-tools",
+            "selinux-policy-targeted"
+          ],
+          "exclude_packages": [
+            "dracut-config-rescue"
           ],
           "releasever": "30",
           "basearch": "x86_64"
         }
       },
-      {
-        "name": "org.osbuild.fix-bls",
-        "options": {}
-      },
       {
         "name": "org.osbuild.locale",
         "options": {
@@ -90,6 +88,10 @@
           "kernel_opts": "ro biosdevname=0 net.ifnames=0"
         }
       },
+      {
+        "name": "org.osbuild.fix-bls",
+        "options": {}
+      },
       {
         "name": "org.osbuild.selinux",
         "options": {
@@ -101,11 +103,493 @@
       "name": "org.osbuild.qemu",
       "options": {
         "format": "vmdk",
-        "filename": "image.vmdk",
+        "filename": "disk.vmdk",
         "ptuuid": "0x14fc63d2",
         "root_fs_uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac",
         "size": 3221225472
       }
     }
+  },
+  "expected": {
+    "bootloader": "grub",
+    "bootmenu": [
+      {
+        "grub_arg": "--unrestricted",
+        "grub_class": "kernel",
+        "grub_users": "$grub_users",
+        "initrd": "/initramfs-0-rescue-ffffffffffffffffffffffffffffffff.img",
+        "linux": "/vmlinuz-0-rescue-ffffffffffffffffffffffffffffffff",
+        "options": "$kernelopts",
+        "title": "Fedora (0-rescue-ffffffffffffffffffffffffffffffff) 30 (Thirty)",
+        "version": "0-rescue-ffffffffffffffffffffffffffffffff"
+      },
+      {
+        "grub_arg": "--unrestricted",
+        "grub_class": "kernel",
+        "grub_users": "$grub_users",
+        "initrd": "/boot/initramfs-5.0.9-301.fc30.x86_64.img",
+        "linux": "/boot/vmlinuz-5.0.9-301.fc30.x86_64",
+        "options": "$kernelopts",
+        "title": "Fedora (5.0.9-301.fc30.x86_64) 30 (Thirty)",
+        "version": "5.0.9-301.fc30.x86_64"
+      }
+    ],
+    "fstab": [
+      [
+        "UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac",
+        "/",
+        "ext4",
+        "defaults",
+        "1",
+        "1"
+      ]
+    ],
+    "groups": [
+      "adm:x:4:",
+      "audio:x:63:",
+      "bin:x:1:",
+      "cdrom:x:11:",
+      "chrony:x:992:",
+      "daemon:x:2:",
+      "dbus:x:81:",
+      "dialout:x:18:",
+      "disk:x:6:",
+      "floppy:x:19:",
+      "ftp:x:50:",
+      "games:x:20:",
+      "input:x:999:",
+      "kmem:x:9:",
+      "kvm:x:36:",
+      "lock:x:54:",
+      "lp:x:7:",
+      "mail:x:12:",
+      "man:x:15:",
+      "mem:x:8:",
+      "nobody:x:65534:",
+      "polkitd:x:995:",
+      "render:x:998:",
+      "root:x:0:",
+      "ssh_keys:x:994:",
+      "sshd:x:74:",
+      "sys:x:3:",
+      "systemd-coredump:x:997:",
+      "systemd-journal:x:190:",
+      "systemd-network:x:192:",
+      "systemd-resolve:x:193:",
+      "systemd-timesync:x:996:",
+      "tape:x:33:",
+      "tss:x:59:",
+      "tty:x:5:",
+      "unbound:x:993:",
+      "users:x:100:",
+      "utempter:x:35:",
+      "utmp:x:22:",
+      "video:x:39:",
+      "wheel:x:10:"
+    ],
+    "image-format": "vmdk",
+    "os-release": {
+      "ANSI_COLOR": "0;34",
+      "BUG_REPORT_URL": "https://bugzilla.redhat.com/",
+      "CPE_NAME": "cpe:/o:fedoraproject:fedora:30",
+      "DOCUMENTATION_URL": "https://docs.fedoraproject.org/en-US/fedora/f30/system-administrators-guide/",
+      "HOME_URL": "https://fedoraproject.org/",
+      "ID": "fedora",
+      "LOGO": "fedora-logo-icon",
+      "NAME": "Fedora",
+      "PLATFORM_ID": "platform:f30",
+      "PRETTY_NAME": "Fedora 30 (Thirty)",
+      "PRIVACY_POLICY_URL": "https://fedoraproject.org/wiki/Legal:PrivacyPolicy",
+      "REDHAT_BUGZILLA_PRODUCT": "Fedora",
+      "REDHAT_BUGZILLA_PRODUCT_VERSION": "30",
+      "REDHAT_SUPPORT_PRODUCT": "Fedora",
+      "REDHAT_SUPPORT_PRODUCT_VERSION": "30",
+      "SUPPORT_URL": "https://fedoraproject.org/wiki/Communicating_and_getting_help",
+      "VERSION": "30 (Thirty)",
+      "VERSION_CODENAME": "",
+      "VERSION_ID": "30"
+    },
+    "packages": [
+      "NetworkManager-1.16.0-1.fc30.x86_64",
+      "NetworkManager-libnm-1.16.0-1.fc30.x86_64",
+      "acl-2.2.53-3.fc30.x86_64",
+      "alternatives-1.11-4.fc30.x86_64",
+      "audit-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "audit-libs-3.0-0.7.20190326git03e7489.fc30.x86_64",
+      "basesystem-11-7.fc30.noarch",
+      "bash-5.0.2-1.fc30.x86_64",
+      "bind-export-libs-9.11.5-13.P4.fc30.x86_64",
+      "brotli-1.0.7-3.fc30.x86_64",
+      "bzip2-libs-1.0.6-29.fc30.x86_64",
+      "c-ares-1.15.0-3.fc30.x86_64",
+      "ca-certificates-2018.2.26-3.fc30.noarch",
+      "chrony-3.4-2.fc30.x86_64",
+      "coreutils-8.31-1.fc30.x86_64",
+      "coreutils-common-8.31-1.fc30.x86_64",
+      "cpio-2.12-10.fc30.x86_64",
+      "cracklib-2.9.6-19.fc30.x86_64",
+      "cracklib-dicts-2.9.6-19.fc30.x86_64",
+      "crypto-policies-20190211-2.gite3eacfc.fc30.noarch",
+      "cryptsetup-libs-2.1.0-3.fc30.x86_64",
+      "curl-7.64.0-6.fc30.x86_64",
+      "cyrus-sasl-lib-2.1.27-0.6rc7.fc30.x86_64",
+      "dbus-1.12.12-7.fc30.x86_64",
+      "dbus-broker-20-3.fc30.x86_64",
+      "dbus-common-1.12.12-7.fc30.noarch",
+      "dbus-libs-1.12.12-7.fc30.x86_64",
+      "deltarpm-3.6-29.fc30.x86_64",
+      "device-mapper-1.02.154-3.fc30.x86_64",
+      "device-mapper-libs-1.02.154-3.fc30.x86_64",
+      "dhcp-client-4.3.6-32.fc30.x86_64",
+      "dhcp-common-4.3.6-32.fc30.noarch",
+      "dhcp-libs-4.3.6-32.fc30.x86_64",
+      "diffutils-3.7-2.fc30.x86_64",
+      "dnf-4.2.2-2.fc30.noarch",
+      "dnf-data-4.2.2-2.fc30.noarch",
+      "dnf-plugins-core-4.0.6-1.fc30.noarch",
+      "dnf-yum-4.2.2-2.fc30.noarch",
+      "dracut-049-26.git20181204.fc30.x86_64",
+      "dracut-config-rescue-049-26.git20181204.fc30.x86_64",
+      "e2fsprogs-1.44.6-1.fc30.x86_64",
+      "e2fsprogs-libs-1.44.6-1.fc30.x86_64",
+      "ebtables-2.0.10-31.fc30.x86_64",
+      "elfutils-default-yama-scope-0.176-1.fc30.noarch",
+      "elfutils-libelf-0.176-1.fc30.x86_64",
+      "elfutils-libs-0.176-1.fc30.x86_64",
+      "expat-2.2.6-2.fc30.x86_64",
+      "fedora-gpg-keys-30-1.noarch",
+      "fedora-release-30-1.noarch",
+      "fedora-release-common-30-1.noarch",
+      "fedora-repos-30-1.noarch",
+      "file-5.36-2.fc30.x86_64",
+      "file-libs-5.36-2.fc30.x86_64",
+      "filesystem-3.10-1.fc30.x86_64",
+      "findutils-4.6.0-22.fc30.x86_64",
+      "fipscheck-1.5.0-6.fc30.x86_64",
+      "fipscheck-lib-1.5.0-6.fc30.x86_64",
+      "firewalld-0.6.3-2.fc30.noarch",
+      "firewalld-filesystem-0.6.3-2.fc30.noarch",
+      "freetype-2.9.1-7.fc30.x86_64",
+      "fuse-2.9.9-3.fc30.x86_64",
+      "fuse-common-3.4.2-3.fc30.x86_64",
+      "fuse-libs-2.9.9-3.fc30.x86_64",
+      "gawk-4.2.1-6.fc30.x86_64",
+      "gdbm-libs-1.18-4.fc30.x86_64",
+      "geolite2-city-20190409-1.fc30.noarch",
+      "geolite2-country-20190409-1.fc30.noarch",
+      "gettext-0.19.8.1-18.fc30.x86_64",
+      "gettext-libs-0.19.8.1-18.fc30.x86_64",
+      "glib2-2.60.1-2.fc30.x86_64",
+      "glibc-2.29-9.fc30.x86_64",
+      "glibc-common-2.29-9.fc30.x86_64",
+      "glibc-langpack-en-2.29-9.fc30.x86_64",
+      "gmp-6.1.2-10.fc30.x86_64",
+      "gnupg2-2.2.13-1.fc30.x86_64",
+      "gnupg2-smime-2.2.13-1.fc30.x86_64",
+      "gnutls-3.6.7-1.fc30.x86_64",
+      "gobject-introspection-1.60.1-2.fc30.x86_64",
+      "gpg-pubkey-cfc659b9-5b6eac67",
+      "gpgme-1.12.0-1.fc30.x86_64",
+      "grep-3.1-9.fc30.x86_64",
+      "groff-base-1.22.3-19.fc30.x86_64",
+      "grub2-common-2.02-75.fc30.noarch",
+      "grub2-pc-2.02-75.fc30.x86_64",
+      "grub2-pc-modules-2.02-75.fc30.noarch",
+      "grub2-tools-2.02-75.fc30.x86_64",
+      "grub2-tools-extra-2.02-75.fc30.x86_64",
+      "grub2-tools-minimal-2.02-75.fc30.x86_64",
+      "grubby-8.40-30.fc30.x86_64",
+      "gzip-1.9-9.fc30.x86_64",
+      "hardlink-1.3-8.fc30.x86_64",
+      "hostname-3.20-8.fc30.x86_64",
+      "hwdata-0.322-1.fc30.noarch",
+      "ima-evm-utils-1.1-5.fc30.x86_64",
+      "ipcalc-0.2.5-2.fc30.x86_64",
+      "iproute-5.0.0-2.fc30.x86_64",
+      "iproute-tc-5.0.0-2.fc30.x86_64",
+      "ipset-6.38-2.fc30.x86_64",
+      "ipset-libs-6.38-2.fc30.x86_64",
+      "iptables-1.8.0-5.fc30.x86_64",
+      "iptables-libs-1.8.0-5.fc30.x86_64",
+      "iputils-20180629-4.fc30.x86_64",
+      "jansson-2.12-2.fc30.x86_64",
+      "json-c-0.13.1-4.fc30.x86_64",
+      "kbd-2.0.4-13.fc30.x86_64",
+      "kbd-legacy-2.0.4-13.fc30.noarch",
+      "kbd-misc-2.0.4-13.fc30.noarch",
+      "kernel-5.0.9-301.fc30.x86_64",
+      "kernel-core-5.0.9-301.fc30.x86_64",
+      "kernel-modules-5.0.9-301.fc30.x86_64",
+      "keyutils-libs-1.6-2.fc30.x86_64",
+      "kmod-25-5.fc30.x86_64",
+      "kmod-libs-25-5.fc30.x86_64",
+      "kpartx-0.7.9-6.git2df6110.fc30.x86_64",
+      "krb5-libs-1.17-4.fc30.x86_64",
+      "langpacks-en-1.0-17.fc30.noarch",
+      "less-530-4.fc30.x86_64",
+      "libacl-2.2.53-3.fc30.x86_64",
+      "libarchive-3.3.3-6.fc30.x86_64",
+      "libargon2-20161029-8.fc30.x86_64",
+      "libassuan-2.5.2-2.fc30.x86_64",
+      "libattr-2.4.48-5.fc30.x86_64",
+      "libbasicobjects-0.1.1-42.fc30.x86_64",
+      "libblkid-2.33.2-1.fc30.x86_64",
+      "libcap-2.26-5.fc30.x86_64",
+      "libcap-ng-0.7.9-7.fc30.x86_64",
+      "libcollection-0.7.0-42.fc30.x86_64",
+      "libcom_err-1.44.6-1.fc30.x86_64",
+      "libcomps-0.1.11-1.fc30.x86_64",
+      "libcroco-0.6.13-1.fc30.x86_64",
+      "libcurl-7.64.0-6.fc30.x86_64",
+      "libdb-5.3.28-37.fc30.x86_64",
+      "libdb-utils-5.3.28-37.fc30.x86_64",
+      "libdhash-0.5.0-42.fc30.x86_64",
+      "libdnet-1.12-30.fc30.x86_64",
+      "libdnf-0.28.1-1.fc30.x86_64",
+      "libdrm-2.4.97-2.fc30.x86_64",
+      "libedit-3.1-26.20181209cvs.fc30.x86_64",
+      "libevent-2.1.8-5.fc30.x86_64",
+      "libfdisk-2.33.2-1.fc30.x86_64",
+      "libffi-3.1-19.fc30.x86_64",
+      "libgcc-9.0.1-0.10.fc30.x86_64",
+      "libgcrypt-1.8.4-3.fc30.x86_64",
+      "libgomp-9.0.1-0.10.fc30.x86_64",
+      "libgpg-error-1.33-2.fc30.x86_64",
+      "libicu-63.1-2.fc30.x86_64",
+      "libidn2-2.1.1a-1.fc30.x86_64",
+      "libini_config-1.3.1-42.fc30.x86_64",
+      "libkcapi-1.1.4-1.fc30.x86_64",
+      "libkcapi-hmaccalc-1.1.4-1.fc30.x86_64",
+      "libksba-1.3.5-9.fc30.x86_64",
+      "libldb-1.5.4-1.fc30.x86_64",
+      "libmaxminddb-1.2.0-7.fc30.x86_64",
+      "libmetalink-0.1.3-8.fc30.x86_64",
+      "libmnl-1.0.4-9.fc30.x86_64",
+      "libmodulemd1-1.8.6-3.fc30.x86_64",
+      "libmount-2.33.2-1.fc30.x86_64",
+      "libmspack-0.9.1-0.2.alpha.fc30.x86_64",
+      "libndp-1.7-3.fc30.x86_64",
+      "libnetfilter_conntrack-1.0.7-2.fc30.x86_64",
+      "libnfnetlink-1.0.1-15.fc30.x86_64",
+      "libnfsidmap-2.3.3-7.rc2.fc30.x86_64",
+      "libnftnl-1.1.1-6.fc30.x86_64",
+      "libnghttp2-1.37.0-1.fc30.x86_64",
+      "libnl3-3.4.0-8.fc30.x86_64",
+      "libnsl2-1.2.0-4.20180605git4a062cf.fc30.x86_64",
+      "libpath_utils-0.2.1-42.fc30.x86_64",
+      "libpcap-1.9.0-3.fc30.x86_64",
+      "libpciaccess-0.14-3.fc30.x86_64",
+      "libpipeline-1.5.1-2.fc30.x86_64",
+      "libpng-1.6.36-1.fc30.x86_64",
+      "libpsl-0.20.2-6.fc30.x86_64",
+      "libpwquality-1.4.0-12.fc30.x86_64",
+      "libref_array-0.1.5-42.fc30.x86_64",
+      "librepo-1.9.6-2.fc30.x86_64",
+      "libreport-filesystem-2.10.0-1.fc30.noarch",
+      "libseccomp-2.4.0-0.fc30.x86_64",
+      "libsecret-0.18.8-1.fc30.x86_64",
+      "libselinux-2.9-1.fc30.x86_64",
+      "libselinux-utils-2.9-1.fc30.x86_64",
+      "libsemanage-2.9-1.fc30.x86_64",
+      "libsepol-2.9-1.fc30.x86_64",
+      "libsigsegv-2.11-7.fc30.x86_64",
+      "libsmartcols-2.33.2-1.fc30.x86_64",
+      "libsolv-0.7.4-2.fc30.x86_64",
+      "libss-1.44.6-1.fc30.x86_64",
+      "libssh-0.8.7-1.fc30.x86_64",
+      "libsss_autofs-2.1.0-2.fc30.x86_64",
+      "libsss_certmap-2.1.0-2.fc30.x86_64",
+      "libsss_idmap-2.1.0-2.fc30.x86_64",
+      "libsss_nss_idmap-2.1.0-2.fc30.x86_64",
+      "libsss_sudo-2.1.0-2.fc30.x86_64",
+      "libstdc++-9.0.1-0.10.fc30.x86_64",
+      "libtalloc-2.1.16-1.fc30.x86_64",
+      "libtasn1-4.13-7.fc30.x86_64",
+      "libtdb-1.3.18-1.fc30.x86_64",
+      "libtevent-0.9.39-1.fc30.x86_64",
+      "libtirpc-1.1.4-2.rc2.fc30.1.x86_64",
+      "libtool-ltdl-2.4.6-29.fc30.x86_64",
+      "libunistring-0.9.10-5.fc30.x86_64",
+      "libusbx-1.0.22-2.fc30.x86_64",
+      "libuser-0.62-20.fc30.x86_64",
+      "libutempter-1.1.6-16.fc30.x86_64",
+      "libuuid-2.33.2-1.fc30.x86_64",
+      "libverto-0.3.0-7.fc30.x86_64",
+      "libxcrypt-4.4.4-2.fc30.x86_64",
+      "libxkbcommon-0.8.3-1.fc30.x86_64",
+      "libxml2-2.9.9-2.fc30.x86_64",
+      "libxslt-1.1.32-4.fc30.x86_64",
+      "libyaml-0.2.1-5.fc30.x86_64",
+      "libzstd-1.3.8-2.fc30.x86_64",
+      "linux-atm-libs-2.5.1-21.fc29.x86_64",
+      "linux-firmware-20190312-94.fc30.noarch",
+      "linux-firmware-whence-20190312-94.fc30.noarch",
+      "lmdb-libs-0.9.23-2.fc30.x86_64",
+      "lua-libs-5.3.5-5.fc30.x86_64",
+      "lz4-libs-1.8.3-2.fc30.x86_64",
+      "man-db-2.8.4-4.fc30.x86_64",
+      "mkpasswd-5.4.2-1.fc30.x86_64",
+      "mozjs60-60.4.0-5.fc30.x86_64",
+      "mpfr-3.1.6-4.fc30.x86_64",
+      "ncurses-6.1-10.20180923.fc30.x86_64",
+      "ncurses-base-6.1-10.20180923.fc30.noarch",
+      "ncurses-libs-6.1-10.20180923.fc30.x86_64",
+      "nettle-3.4.1rc1-2.fc30.x86_64",
+      "nftables-0.9.0-5.fc30.x86_64",
+      "npth-1.6-2.fc30.x86_64",
+      "open-vm-tools-10.3.10-1.fc30.x86_64",
+      "openldap-2.4.47-1.fc30.x86_64",
+      "openssh-7.9p1-5.fc30.x86_64",
+      "openssh-clients-7.9p1-5.fc30.x86_64",
+      "openssh-server-7.9p1-5.fc30.x86_64",
+      "openssl-1.1.1b-3.fc30.x86_64",
+      "openssl-libs-1.1.1b-3.fc30.x86_64",
+      "openssl-pkcs11-0.4.10-1.fc30.x86_64",
+      "os-prober-1.74-8.fc30.x86_64",
+      "p11-kit-0.23.15-3.fc30.x86_64",
+      "p11-kit-trust-0.23.15-3.fc30.x86_64",
+      "pam-1.3.1-17.fc30.x86_64",
+      "parted-3.2-40.fc30.x86_64",
+      "passwd-0.80-5.fc30.x86_64",
+      "pciutils-3.6.2-2.fc30.x86_64",
+      "pciutils-libs-3.6.2-2.fc30.x86_64",
+      "pcre-8.43-1.fc30.x86_64",
+      "pcre2-10.32-9.fc30.x86_64",
+      "pigz-2.4-4.fc30.x86_64",
+      "pinentry-1.1.0-5.fc30.x86_64",
+      "plymouth-0.9.4-5.fc30.x86_64",
+      "plymouth-core-libs-0.9.4-5.fc30.x86_64",
+      "plymouth-scripts-0.9.4-5.fc30.x86_64",
+      "policycoreutils-2.9-1.fc30.x86_64",
+      "polkit-0.115-10.fc30.1.x86_64",
+      "polkit-libs-0.115-10.fc30.1.x86_64",
+      "polkit-pkla-compat-0.1-14.fc30.x86_64",
+      "popt-1.16-17.fc30.x86_64",
+      "procps-ng-3.3.15-5.fc30.x86_64",
+      "publicsuffix-list-dafsa-20190128-2.fc30.noarch",
+      "python-pip-wheel-19.0.3-1.fc30.noarch",
+      "python-setuptools-wheel-40.8.0-1.fc30.noarch",
+      "python3-3.7.3-1.fc30.x86_64",
+      "python3-dateutil-2.8.0-1.fc30.noarch",
+      "python3-dbus-1.2.8-5.fc30.x86_64",
+      "python3-decorator-4.3.0-2.fc30.noarch",
+      "python3-distro-1.4.0-1.fc30.noarch",
+      "python3-dnf-4.2.2-2.fc30.noarch",
+      "python3-dnf-plugins-core-4.0.6-1.fc30.noarch",
+      "python3-firewall-0.6.3-2.fc30.noarch",
+      "python3-gobject-base-3.32.0-1.fc30.x86_64",
+      "python3-gpg-1.12.0-1.fc30.x86_64",
+      "python3-hawkey-0.28.1-1.fc30.x86_64",
+      "python3-libcomps-0.1.11-1.fc30.x86_64",
+      "python3-libdnf-0.28.1-1.fc30.x86_64",
+      "python3-libs-3.7.3-1.fc30.x86_64",
+      "python3-libselinux-2.9-1.fc30.x86_64",
+      "python3-pip-19.0.3-1.fc30.noarch",
+      "python3-rpm-4.14.2.1-4.fc30.1.x86_64",
+      "python3-setuptools-40.8.0-1.fc30.noarch",
+      "python3-six-1.12.0-1.fc30.noarch",
+      "python3-slip-0.6.4-15.fc30.noarch",
+      "python3-slip-dbus-0.6.4-15.fc30.noarch",
+      "python3-unbound-1.8.3-4.fc30.x86_64",
+      "qrencode-libs-3.4.4-8.fc30.x86_64",
+      "readline-8.0-2.fc30.x86_64",
+      "rootfiles-8.1-24.fc30.noarch",
+      "rpm-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-build-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-libs-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-selinux-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-plugin-systemd-inhibit-4.14.2.1-4.fc30.1.x86_64",
+      "rpm-sign-libs-4.14.2.1-4.fc30.1.x86_64",
+      "sed-4.5-3.fc30.x86_64",
+      "selinux-policy-3.14.3-29.fc30.noarch",
+      "selinux-policy-targeted-3.14.3-29.fc30.noarch",
+      "setup-2.13.3-1.fc30.noarch",
+      "shadow-utils-4.6-8.fc30.x86_64",
+      "shared-mime-info-1.12-2.fc30.x86_64",
+      "sqlite-libs-3.26.0-3.fc30.x86_64",
+      "sssd-client-2.1.0-2.fc30.x86_64",
+      "sssd-common-2.1.0-2.fc30.x86_64",
+      "sssd-kcm-2.1.0-2.fc30.x86_64",
+      "sssd-nfs-idmap-2.1.0-2.fc30.x86_64",
+      "sudo-1.8.27-1.fc30.x86_64",
+      "systemd-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-bootchart-233-4.fc30.x86_64",
+      "systemd-libs-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-pam-241-7.gita2eaa1c.fc30.x86_64",
+      "systemd-rpm-macros-241-7.gita2eaa1c.fc30.noarch",
+      "systemd-udev-241-7.gita2eaa1c.fc30.x86_64",
+      "tar-1.32-1.fc30.x86_64",
+      "timedatex-0.5-6.fc30.x86_64",
+      "trousers-0.3.13-12.fc30.x86_64",
+      "trousers-lib-0.3.13-12.fc30.x86_64",
+      "tzdata-2019a-1.fc30.noarch",
+      "unbound-libs-1.8.3-4.fc30.x86_64",
+      "util-linux-2.33.2-1.fc30.x86_64",
+      "vim-minimal-8.1.1137-1.fc30.x86_64",
+      "which-2.21-14.fc30.x86_64",
+      "whois-nls-5.4.2-1.fc30.noarch",
+      "xkeyboard-config-2.24-5.fc30.noarch",
+      "xmlsec1-1.2.27-2.fc30.x86_64",
+      "xmlsec1-openssl-1.2.27-2.fc30.x86_64",
+      "xz-5.2.4-5.fc30.x86_64",
+      "xz-libs-5.2.4-5.fc30.x86_64",
+      "zchunk-libs-1.1.1-3.fc30.x86_64",
+      "zlib-1.2.11-15.fc30.x86_64"
+    ],
+    "partition-table": "dos",
+    "partition-table-id": "0x14fc63d2",
+    "partitions": [
+      {
+        "bootable": true,
+        "fstype": "ext4",
+        "label": null,
+        "size": 3220176896,
+        "start": 1048576,
+        "type": "83",
+        "uuid": "76a22bf4-f153-4541-b6c7-0332c0dfaeac"
+      }
+    ],
+    "passwd": [
+      "adm:x:3:4:adm:/var/adm:/sbin/nologin",
+      "bin:x:1:1:bin:/bin:/sbin/nologin",
+      "chrony:x:995:992::/var/lib/chrony:/sbin/nologin",
+      "daemon:x:2:2:daemon:/sbin:/sbin/nologin",
+      "dbus:x:81:81:System message bus:/:/sbin/nologin",
+      "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin",
+      "games:x:12:100:games:/usr/games:/sbin/nologin",
+      "halt:x:7:0:halt:/sbin:/sbin/halt",
+      "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin",
+      "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin",
+      "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin",
+      "operator:x:11:0:operator:/root:/sbin/nologin",
+      "polkitd:x:997:995:User for polkitd:/:/sbin/nologin",
+      "root:x:0:0:root:/root:/bin/bash",
+      "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown",
+      "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin",
+      "sync:x:5:0:sync:/sbin:/bin/sync",
+      "systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin",
+      "systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin",
+      "systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin",
+      "systemd-timesync:x:998:996:systemd Time Synchronization:/:/sbin/nologin",
+      "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
+      "unbound:x:996:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
+    ],
+    "rpm-verify": {
+      "changed": {
+        "/boot/System.map-5.0.9-301.fc30.x86_64": ".M.......",
+        "/boot/initramfs-5.0.9-301.fc30.x86_64.img": ".M.......",
+        "/etc/udev/hwdb.bin": ".M.......",
+        "/proc": ".M.......",
+        "/run/cryptsetup": ".M.......",
+        "/sys": ".M.......",
+        "/var/log/btmp": ".M.......",
+        "/var/log/journal": ".M....G..",
+        "/var/log/lastlog": ".M....G.."
+      },
+      "missing": [
+        "/etc/systemd/system/dbus-org.freedesktop.network1.service",
+        "/etc/systemd/system/dbus-org.freedesktop.resolve1.service"
+      ]
+    }
   }
 }