Repository: osbuild/osbuild-composer
Pull request #1193 (2021-02-02 13:55:14)

Add support for `org.osbuild.rhsm` osbuild stage + disable RHSM DNF plugins on RHEL qcow2 images
This pull request includes:
- [X] adequate testing for the new functionality or fixed issue
  - Unit tests have been added.
  - Image test cases for affected images have been regenerated.
- [X] adequate documentation informing people about the change
  - Added new entry in `docs/news/unreleased/`

Add support to configure `org.osbuild.rhsm` osbuild stage. This stage
allows the configuration of Red Hat Subscription Manager (RHSM) related
components. Currently it is possible to configure only the enablement
status of RHSM DNF plugins.

Modify RHEL 8.3 and 8.4 KVM guest images definition to produce osbuild
manifest with `org.osbuild.rhsm` stage to disable both RHSM DNF plugins
(`product-id` and `subscription-manager`).

Add `/docs/news/unreleased/osbuild-rhsm-stage.md` with information about
the added support for `org.osbuild.rhsm` osbuild stage. Also note that RHEL
8.3 and 8.4 qcow2 image definitions are updated to disable RHSM DNF
plugins by default.

Enhance `tools/image-info` tool to add RHSM-specific section to its
output in case RHSM DNF plugins configuration exists in the tree.

Regenerate all RHEL image test cases affected by the patch set.

thozza: @teg Yeah, I have been thinking about this as well... The `org.osbuild.rhsm` stage and its functionality is tested as part od osbuild's CI (https://github.com/osbuild/osbuild/pull/555/commits/ec2d3e396e82fe18b154c02877606658a7417f7e). Then the fact that the stage is added to the relevant rhel-8 rhel-84 manifest is tested as part of this PR.
Example snippet from `test/data/manifests/rhel_84-x86_64-qcow2-boot.json`
```
@@ -3486,6 +3492,19 @@
           "options": {
             "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts"
           }
+        },
+        {
+          "name": "org.osbuild.rhsm",
+          "options": {
+            "dnf-plugins": {
+              "product-id": {
+                "enabled": false
+              },
+              "subscription-manager": {
+                "enabled": false
+              }
+            }
+          }
         }
       ],
       "assembler": {
```
And the fact that the RHSM DNF plugin configurations have been modified is captured as part of `rpm-verify` output:
```
@@ -10180,6 +10217,8 @@
       "changed": {
         "/boot/efi/EFI/redhat/grubx64.efi": ".......T.",
         "/etc/chrony.conf": "S.5....T.",
+        "/etc/dnf/plugins/product-id.conf": "..5....T.",
+        "/etc/dnf/plugins/subscription-manager.conf": "..5....T.",
         "/etc/machine-id": ".M.......",
         "/proc": ".M.......",
         "/run/cockpit": ".M.......",
```

Nevertheless I agree that all of this information is not really good enough for verifying what is the actual content of the plugin configurations and how were they modified.

So `image-info` could be definitely extended to list additional information specific to the RHSM stage. The question is how... I'm not really keen on having a generic section listing enablement status of all DNF plugins. The reason is that each plugin can handle its configuration in a different way and although plugin configurations are usually in INI format, it is not really mandatory. For this reason it would be hard to implement something really generic when we don't have any constrains on the plugin configuration format. I would suggest two options:

1. Have a RHSM specific section in the `image-info` output and for now, include only the enablement status of the RHSM DNF plugins. List the information only if the respective plugin configuration file exists.
2. Have a generic DNF plugins section in the `image-info` output, but check specifically only a defined list of plugin configurations. For now, the list would contain only RHSM DNF plugins. The information listed could be either the enablement status of the plugin, or all the listed options in the configuration, I don't have a strong preference... And also list the information only if the respective plugin configuration file exists.

What do you think?
teg: Ah, you gave this more thought than me @thozza! I think the argument could be made that this is already good enough (as the contents of the modified files is presumably tested in osbuild). However, if we were to improve the image-info tests (still nice, but I wouldn't say a requirement, so up to you). I would try to mirror the osbuild stage in functionality. I.e., collect exactly the info it is able to set.
ondrejbudai: Blocked by https://bodhi.fedoraproject.org/updates/FEDORA-2021-1f28f28ea7.
thozza: So osbuild v24 should be already in F32 and F33 stable, as well as in el8.4 nightly. I'll wait for the PR #1188 to get merged and rebase my PR after that...
gicmo: #1188 is in, osbuild 24 in stable, should not be blocked anymore.
thozza: I enhanced the `image-info` tool to include RHSM-specific section in its output in case the RHSM DNF plugins configurations are in the image tree. I'm regenerating image test cases now and will update the PR once this is done. This should be (hopefully) the last change needed to get this merged...
thozza: The PR has been rebased and all RHEL image test cases have been regenerated. :partying_face:  Once the Schutzbot CI passes, this PR should be good to go (unless there is any additional feedback on the code changes). 

Patch:
diff --git a/HACKING.md b/HACKING.md
index 123a1af65..e57431f12 100644
--- a/HACKING.md
+++ b/HACKING.md
@@ -22,14 +22,14 @@ To start a ephemeral virtual machine using this repository, run:
     tools/deploy-qemu IMAGE tools/deploy/test
 
 `IMAGE` has to be a path to an cloud-init-enabled image matching the host
-operating system, because that's what the packages where built for above.
+operating system, because that's what the packages were built for above.
 Note that the Fedora/RHEL cloud images might be too small for some tests
 to pass. Run `qemu-img resize IMAGE 10G` to grow them, cloud-init's growpart
 module will grow the root partition automatically during boot. 
 
 The second argument points to a directory from which cloud-init user-data is
 generated (see `tools/gen-user-data` for details). The one given above tries to
-mimick what is run on *osbuild-composer*'s continuous integration
+mimic what is run on *osbuild-composer*'s continuous integration
 infrastructure, i.e., installing `osbuild-composer-tests` and starting the
 service.
 
@@ -70,7 +70,7 @@ of certificates. The storage location for these is shared between the
 containers for simplicity. By default it's configured to be at
 `./containers/config`, but this can be changed in the
 [`./distribution/.env`](./distribution/.env) file by modifying the value of the
-`$CONTAIN£R_CONFIG_DIR` variable (both absolute and relative paths work).
+`$CONTAINER_CONFIG_DIR` variable (both absolute and relative paths work).
 
 Use the [`tools/gen-certs.sh`](./tools/gen-certs.sh) script to
 generate the certificates (using the test OpenSSL config file):
diff --git a/docs/news/unreleased/osbuild-rhsm-stage.md b/docs/news/unreleased/osbuild-rhsm-stage.md
new file mode 100644
index 000000000..e67951001
--- /dev/null
+++ b/docs/news/unreleased/osbuild-rhsm-stage.md
@@ -0,0 +1,13 @@
+# Add support for `org.osbuild.rhsm` osbuild stage
+
+Add support for `org.osbuild.rhsm` osbuild stage. This stage is available in
+osbuild since version 24. The stage currently allows only configuring the
+enablement status of two RHSM DNF plugins, specifically of `product-id` and
+`subscription-manager` DNF plugins.
+
+# RHEL 8.3 & 8.4: Disable all RHSM DNF plugins on qcow2 image
+
+Disable both available RHSM DNF plugins (`product-id` and
+`subscription-manager`) on rhel-8 and rhel-84 qcow2 images. The reason for
+disabling these DNF plugins is to make the produced images consistent in this
+regard, with what had been previously produced by the imagefactory.
diff --git a/internal/distro/rhel8/distro.go b/internal/distro/rhel8/distro.go
index 5b3076bfc..9fd0d8bef 100644
--- a/internal/distro/rhel8/distro.go
+++ b/internal/distro/rhel8/distro.go
@@ -324,6 +324,20 @@ func (t *imageType) pipeline(c *blueprint.Customizations, options distro.ImageOp
 			WaitForNetwork: true,
 		},
 		))
+	} else {
+		// RHSM DNF plugins should be by default disabled on RHEL Guest KVM images
+		if t.Name() == "qcow2" {
+			p.AddStage(osbuild.NewRHSMStage(&osbuild.RHSMStageOptions{
+				DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{
+					ProductID: &osbuild.RHSMStageOptionsDnfPlugin{
+						Enabled: false,
+					},
+					SubscriptionManager: &osbuild.RHSMStageOptionsDnfPlugin{
+						Enabled: false,
+					},
+				},
+			}))
+		}
 	}
 
 	p.Assembler = t.assembler(t.arch.uefi, options, t.arch)
@@ -1002,6 +1016,7 @@ func New() distro.Distro {
 			"glibc",
 			"policycoreutils",
 			"python36",
+			"python3-iniparse", // dependency of org.osbuild.rhsm stage
 			"qemu-img",
 			"selinux-policy-targeted",
 			"systemd",
diff --git a/internal/distro/rhel84/distro.go b/internal/distro/rhel84/distro.go
index 1a5877b1e..ef26d238e 100644
--- a/internal/distro/rhel84/distro.go
+++ b/internal/distro/rhel84/distro.go
@@ -363,6 +363,20 @@ func (t *imageType) pipeline(c *blueprint.Customizations, options distro.ImageOp
 			WaitForNetwork: true,
 		},
 		))
+	} else {
+		// RHSM DNF plugins should be by default disabled on RHEL Guest KVM images
+		if t.Name() == "qcow2" {
+			p.AddStage(osbuild.NewRHSMStage(&osbuild.RHSMStageOptions{
+				DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{
+					ProductID: &osbuild.RHSMStageOptionsDnfPlugin{
+						Enabled: false,
+					},
+					SubscriptionManager: &osbuild.RHSMStageOptionsDnfPlugin{
+						Enabled: false,
+					},
+				},
+			}))
+		}
 	}
 
 	p.Assembler = t.assembler(pt, options, t.arch)
@@ -1111,6 +1125,7 @@ func New() distro.Distro {
 			"glibc",
 			"policycoreutils",
 			"python36",
+			"python3-iniparse", // dependency of org.osbuild.rhsm stage
 			"qemu-img",
 			"selinux-policy-targeted",
 			"systemd",
diff --git a/internal/osbuild/rhsm_stage.go b/internal/osbuild/rhsm_stage.go
new file mode 100644
index 000000000..38f096d41
--- /dev/null
+++ b/internal/osbuild/rhsm_stage.go
@@ -0,0 +1,34 @@
+package osbuild
+
+// RHSMStageOptions describes configuration of the RHSM stage.
+//
+// The RHSM stage allows configuration of Red Hat Subscription Manager (RHSM)
+// related components. Currently it allows only configuration of the enablement
+// state of DNF plugins used by the Subscription Manager.
+type RHSMStageOptions struct {
+	DnfPlugins *RHSMStageOptionsDnfPlugins `json:"dnf-plugins,omitempty"`
+}
+
+func (RHSMStageOptions) isStageOptions() {}
+
+// RHSMStageOptionsDnfPlugins describes configuration of all RHSM DNF plugins
+type RHSMStageOptionsDnfPlugins struct {
+	ProductID           *RHSMStageOptionsDnfPlugin `json:"product-id,omitempty"`
+	SubscriptionManager *RHSMStageOptionsDnfPlugin `json:"subscription-manager,omitempty"`
+}
+
+// RHSMStageOptionsDnfPlugin describes configuration of a specific RHSM DNF
+// plugin
+//
+// Only the enablement state of a DNF plugin can be currenlty  set.
+type RHSMStageOptionsDnfPlugin struct {
+	Enabled bool `json:"enabled"`
+}
+
+// NewRHSMStage creates a new RHSM stage
+func NewRHSMStage(options *RHSMStageOptions) *Stage {
+	return &Stage{
+		Name:    "org.osbuild.rhsm",
+		Options: options,
+	}
+}
diff --git a/internal/osbuild/stage.go b/internal/osbuild/stage.go
index dd2689585..4aeddad8a 100644
--- a/internal/osbuild/stage.go
+++ b/internal/osbuild/stage.go
@@ -60,6 +60,8 @@ func (stage *Stage) UnmarshalJSON(data []byte) error {
 		options = new(KeymapStageOptions)
 	case "org.osbuild.firewall":
 		options = new(FirewallStageOptions)
+	case "org.osbuild.rhsm":
+		options = new(RHSMStageOptions)
 	case "org.osbuild.rpm":
 		options = new(RPMStageOptions)
 	case "org.osbuild.rpm-ostree":
diff --git a/tools/image-info b/tools/image-info
index cc874705f..681d48614 100755
--- a/tools/image-info
+++ b/tools/image-info
@@ -1,6 +1,7 @@
 #!/usr/bin/python3
 
 import argparse
+import configparser
 import contextlib
 import errno
 import functools
@@ -358,6 +359,42 @@ def read_fstab(tree):
             result = sorted([line.split() for line in f if line and not line.startswith("#")])
     return result
 
+
+# Read configuration changes possible via org.osbuild.rhsm stage
+def read_rhsm(tree):
+    result = {}
+
+    # Check RHSM DNF plugins configuration and allowed options
+    dnf_plugins_config = {
+        "product-id": f"{tree}/etc/dnf/plugins/product-id.conf",
+        "subscription-manager": f"{tree}/etc/dnf/plugins/subscription-manager.conf"
+    }
+
+    for plugin_name, plugin_path in dnf_plugins_config.items():
+        with contextlib.suppress(FileNotFoundError):
+            with open(plugin_path) as f:
+                parser = configparser.ConfigParser()
+                parser.read_file(f)
+                # only read "enabled" option from "main" section
+                with contextlib.suppress(configparser.NoSectionError, configparser.NoOptionError):
+                    # get the value as the first thing, in case it raises an exception
+                    enabled = parser.getboolean("main", "enabled")
+
+                    try:
+                        dnf_plugins_dict = result["dnf-plugins"]
+                    except KeyError as _:
+                        dnf_plugins_dict = result["dnf-plugins"] = {}
+
+                    try:
+                        plugin_dict = dnf_plugins_dict[plugin_name]
+                    except KeyError as _:
+                        plugin_dict = dnf_plugins_dict[plugin_name] = {}
+
+                    plugin_dict["enabled"] = enabled
+
+    return result
+
+
 # Create a nested dictionary for all supported sysconfigs 
 def read_sysconfig(tree):
     result = {}
@@ -413,6 +450,10 @@ def append_filesystem(report, tree, *, is_ostree=False):
         if fstab:
             report["fstab"] = fstab
 
+        rhsm = read_rhsm(tree)
+        if rhsm:
+            report["rhsm"] = rhsm
+
         sysconfig = read_sysconfig(tree)
         if sysconfig:
             report["sysconfig"] = sysconfig


Test patch:
diff --git a/internal/osbuild/rhsm_stage_test.go b/internal/osbuild/rhsm_stage_test.go
new file mode 100644
index 000000000..47b1a33aa
--- /dev/null
+++ b/internal/osbuild/rhsm_stage_test.go
@@ -0,0 +1,16 @@
+package osbuild
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestNewRhsmStage(t *testing.T) {
+	expectedStage := &Stage{
+		Name:    "org.osbuild.rhsm",
+		Options: &RHSMStageOptions{},
+	}
+	actualStage := NewRHSMStage(&RHSMStageOptions{})
+	assert.Equal(t, expectedStage, actualStage)
+}
diff --git a/internal/osbuild/stage_test.go b/internal/osbuild/stage_test.go
index 35463aad8..3753dd3d8 100644
--- a/internal/osbuild/stage_test.go
+++ b/internal/osbuild/stage_test.go
@@ -172,6 +172,35 @@ func TestStage_UnmarshalJSON(t *testing.T) {
 				data: []byte(`{"name":"org.osbuild.locale","options":{"language":""}}`),
 			},
 		},
+		{
+			name: "rhsm-empty",
+			fields: fields{
+				Name:    "org.osbuild.rhsm",
+				Options: &RHSMStageOptions{},
+			},
+			args: args{
+				data: []byte(`{"name":"org.osbuild.rhsm","options":{}}`),
+			},
+		},
+		{
+			name: "rhsm",
+			fields: fields{
+				Name: "org.osbuild.rhsm",
+				Options: &RHSMStageOptions{
+					DnfPlugins: &RHSMStageOptionsDnfPlugins{
+						ProductID: &RHSMStageOptionsDnfPlugin{
+							Enabled: false,
+						},
+						SubscriptionManager: &RHSMStageOptionsDnfPlugin{
+							Enabled: false,
+						},
+					},
+				},
+			},
+			args: args{
+				data: []byte(`{"name":"org.osbuild.rhsm","options":{"dnf-plugins":{"product-id":{"enabled":false},"subscription-manager":{"enabled":false}}}}`),
+			},
+		},
 		{
 			name: "rpm-empty",
 			fields: fields{
diff --git a/test/data/manifests/rhel_8-aarch64-ami-boot.json b/test/data/manifests/rhel_8-aarch64-ami-boot.json
index 5149acd8e..1556157d4 100644
--- a/test/data/manifests/rhel_8-aarch64-ami-boot.json
+++ b/test/data/manifests/rhel_8-aarch64-ami-boot.json
@@ -1712,6 +1712,9 @@
                   {
                     "checksum": "sha256:f74dcf1a854453ea75c5159ac909c01c983cf3d2d6d46f762dfe973fdd1c55dd"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63"
                   },
@@ -1733,6 +1736,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e"
                   },
@@ -4612,6 +4618,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.aarch64.rpm",
         "checksum": "sha256:f74dcf1a854453ea75c5159ac909c01c983cf3d2d6d46f762dfe973fdd1c55dd"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -4675,6 +4690,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -9007,6 +9031,16 @@
       "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": true
+        },
+        "subscription-manager": {
+          "enabled": true
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/boot/efi/EFI": ".M.......",
diff --git a/test/data/manifests/rhel_8-aarch64-openstack-boot.json b/test/data/manifests/rhel_8-aarch64-openstack-boot.json
index d2e985edb..2f0f47974 100644
--- a/test/data/manifests/rhel_8-aarch64-openstack-boot.json
+++ b/test/data/manifests/rhel_8-aarch64-openstack-boot.json
@@ -1837,6 +1837,9 @@
                   {
                     "checksum": "sha256:f74dcf1a854453ea75c5159ac909c01c983cf3d2d6d46f762dfe973fdd1c55dd"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63"
                   },
@@ -1858,6 +1861,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e"
                   },
@@ -4849,6 +4855,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.aarch64.rpm",
         "checksum": "sha256:f74dcf1a854453ea75c5159ac909c01c983cf3d2d6d46f762dfe973fdd1c55dd"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -4912,6 +4927,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -9609,6 +9633,16 @@
       "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": true
+        },
+        "subscription-manager": {
+          "enabled": true
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/boot/efi/EFI": ".M.......",
diff --git a/test/data/manifests/rhel_8-aarch64-qcow2-boot.json b/test/data/manifests/rhel_8-aarch64-qcow2-boot.json
index d651857d7..a7557218d 100644
--- a/test/data/manifests/rhel_8-aarch64-qcow2-boot.json
+++ b/test/data/manifests/rhel_8-aarch64-qcow2-boot.json
@@ -1921,6 +1921,9 @@
                   {
                     "checksum": "sha256:f74dcf1a854453ea75c5159ac909c01c983cf3d2d6d46f762dfe973fdd1c55dd"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63"
                   },
@@ -1942,6 +1945,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e"
                   },
@@ -3483,6 +3489,19 @@
           "options": {
             "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts"
           }
+        },
+        {
+          "name": "org.osbuild.rhsm",
+          "options": {
+            "dnf-plugins": {
+              "product-id": {
+                "enabled": false
+              },
+              "subscription-manager": {
+                "enabled": false
+              }
+            }
+          }
         }
       ],
       "assembler": {
@@ -5023,6 +5042,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.aarch64.rpm",
         "checksum": "sha256:f74dcf1a854453ea75c5159ac909c01c983cf3d2d6d46f762dfe973fdd1c55dd"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -5086,6 +5114,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -10092,9 +10129,21 @@
       "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": false
+        },
+        "subscription-manager": {
+          "enabled": false
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/boot/efi/EFI": ".M.......",
+        "/etc/dnf/plugins/product-id.conf": "..5....T.",
+        "/etc/dnf/plugins/subscription-manager.conf": "..5....T.",
         "/etc/machine-id": ".M.......",
         "/proc": ".M.......",
         "/sys": ".M.......",
diff --git a/test/data/manifests/rhel_8-aarch64-rhel_edge_commit-boot.json b/test/data/manifests/rhel_8-aarch64-rhel_edge_commit-boot.json
index 372b26ffa..276902499 100644
--- a/test/data/manifests/rhel_8-aarch64-rhel_edge_commit-boot.json
+++ b/test/data/manifests/rhel_8-aarch64-rhel_edge_commit-boot.json
@@ -650,6 +650,9 @@
           "sha256:9a1c6f2b18126214e9afa768bbf16b29b89ce3169ccbd4bc169000eed143dcb4": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/dhcp-libs-4.3.6-41.el8.aarch64.rpm"
           },
+          "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": {
+            "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm"
+          },
           "sha256:9a89874a5b8326c85c0b34b02c122ffc052b32a12b20354ce95859ac5296a159": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/pkgconf-m4-1.4.2-1.el8.noarch.rpm"
           },
@@ -1691,6 +1694,9 @@
                   {
                     "checksum": "sha256:f74dcf1a854453ea75c5159ac909c01c983cf3d2d6d46f762dfe973fdd1c55dd"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63"
                   },
@@ -1712,6 +1718,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e"
                   },
@@ -4534,6 +4543,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.aarch64.rpm",
         "checksum": "sha256:f74dcf1a854453ea75c5159ac909c01c983cf3d2d6d46f762dfe973fdd1c55dd"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -4597,6 +4615,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
diff --git a/test/data/manifests/rhel_8-aarch64-tar-boot.json b/test/data/manifests/rhel_8-aarch64-tar-boot.json
index 18aeb42fd..5b7e0e8b4 100644
--- a/test/data/manifests/rhel_8-aarch64-tar-boot.json
+++ b/test/data/manifests/rhel_8-aarch64-tar-boot.json
@@ -384,6 +384,9 @@
           "sha256:923b89c7c2ee61033b0860230fe2e833748364eb7a2ee64ca22523d09a23273c": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/kpartx-0.8.4-5.el8.aarch64.rpm"
           },
+          "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": {
+            "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm"
+          },
           "sha256:95a000eb1262fce9d451592a13df5d713ebd0abeb88d90411d384174828153f5": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/grub2-common-2.02-90.el8.noarch.rpm"
           },
@@ -399,6 +402,9 @@
           "sha256:98f838a9775269a0f796151bd54d52c7ac91d4bf1365186772f243bfafbb136a": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/libaio-0.3.112-1.el8.aarch64.rpm"
           },
+          "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": {
+            "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm"
+          },
           "sha256:9bc0e71d942cc7946a01105a1a350e11877b6781d9495930cc360cf66ad493bc": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/libselinux-2.9-3.el8.aarch64.rpm"
           },
@@ -1197,6 +1203,9 @@
                   {
                     "checksum": "sha256:f74dcf1a854453ea75c5159ac909c01c983cf3d2d6d46f762dfe973fdd1c55dd"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:3a3207904e90b42a3fcf474f906e4c1544dbdccafa0d7e6e0406c32fd31e2a63"
                   },
@@ -1218,6 +1227,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:c2f286f6b75caf1508829d748c35833ee5fba762e0175b1f5dbb23ab8ab2079e"
                   },
@@ -3402,6 +3414,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.aarch64.rpm",
         "checksum": "sha256:f74dcf1a854453ea75c5159ac909c01c983cf3d2d6d46f762dfe973fdd1c55dd"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -3465,6 +3486,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-aarch64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
diff --git a/test/data/manifests/rhel_8-ppc64le-qcow2-boot.json b/test/data/manifests/rhel_8-ppc64le-qcow2-boot.json
index dc9037381..7ede64578 100644
--- a/test/data/manifests/rhel_8-ppc64le-qcow2-boot.json
+++ b/test/data/manifests/rhel_8-ppc64le-qcow2-boot.json
@@ -2074,6 +2074,9 @@
                   {
                     "checksum": "sha256:af6d0c925a95f2b23843fcce53f1eff0b449db44ff362dc2d7d62bb6dff0a553"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:0396d12973b68a7d16074aa51f75e706c0b7558cd24d32e5573c49a487b2497c"
                   },
@@ -2095,6 +2098,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:d8ba6a91610d87dfb599018c887514af663a0f963ed6b25a83bac8fba56fa266"
                   },
@@ -3762,6 +3768,19 @@
           "options": {
             "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts"
           }
+        },
+        {
+          "name": "org.osbuild.rhsm",
+          "options": {
+            "dnf-plugins": {
+              "product-id": {
+                "enabled": false
+              },
+              "subscription-manager": {
+                "enabled": false
+              }
+            }
+          }
         }
       ],
       "assembler": {
@@ -5355,6 +5374,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.ppc64le.rpm",
         "checksum": "sha256:af6d0c925a95f2b23843fcce53f1eff0b449db44ff362dc2d7d62bb6dff0a553"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -5418,6 +5446,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -10867,8 +10904,20 @@
       "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
       "unbound:x:997:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": false
+        },
+        "subscription-manager": {
+          "enabled": false
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
+        "/etc/dnf/plugins/product-id.conf": "..5....T.",
+        "/etc/dnf/plugins/subscription-manager.conf": "..5....T.",
         "/etc/machine-id": ".M.......",
         "/proc": ".M.......",
         "/sys": ".M.......",
diff --git a/test/data/manifests/rhel_8-ppc64le-tar-boot.json b/test/data/manifests/rhel_8-ppc64le-tar-boot.json
index 9349bc0bd..6ea5d1fd8 100644
--- a/test/data/manifests/rhel_8-ppc64le-tar-boot.json
+++ b/test/data/manifests/rhel_8-ppc64le-tar-boot.json
@@ -423,6 +423,9 @@
           "sha256:910396eda6d7874dd51011ad565afecc62a2772568f6ec1c373083f6fa8e5e57": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/platform-python-3.6.8-31.el8.ppc64le.rpm"
           },
+          "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": {
+            "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm"
+          },
           "sha256:93e8eb519fee69ad0a90733dea8577670a1c62f02fce9348633880e0d9190f4b": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/libseccomp-2.4.3-1.el8.ppc64le.rpm"
           },
@@ -444,6 +447,9 @@
           "sha256:9a1782b0ff33ad11979c039999990819c66145010e17c4af41550daf4d9d15ae": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/libcroco-0.6.12-4.el8_2.1.ppc64le.rpm"
           },
+          "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": {
+            "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm"
+          },
           "sha256:9bdf8e5f329b54f1ea45a5d5277d650be84f7bd2f1570d7c5e7ac743fd57cf1f": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/libsmartcols-2.32.1-24.el8.ppc64le.rpm"
           },
@@ -1233,6 +1239,9 @@
                   {
                     "checksum": "sha256:af6d0c925a95f2b23843fcce53f1eff0b449db44ff362dc2d7d62bb6dff0a553"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:0396d12973b68a7d16074aa51f75e706c0b7558cd24d32e5573c49a487b2497c"
                   },
@@ -1254,6 +1263,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:d8ba6a91610d87dfb599018c887514af663a0f963ed6b25a83bac8fba56fa266"
                   },
@@ -3495,6 +3507,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.ppc64le.rpm",
         "checksum": "sha256:af6d0c925a95f2b23843fcce53f1eff0b449db44ff362dc2d7d62bb6dff0a553"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -3558,6 +3579,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-ppc64le-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
diff --git a/test/data/manifests/rhel_8-s390x-qcow2-boot.json b/test/data/manifests/rhel_8-s390x-qcow2-boot.json
index a0ad2609b..6fcc2ec0b 100644
--- a/test/data/manifests/rhel_8-s390x-qcow2-boot.json
+++ b/test/data/manifests/rhel_8-s390x-qcow2-boot.json
@@ -2032,6 +2032,9 @@
                   {
                     "checksum": "sha256:a4323036608c3e7708d688843b869177d58a17b3b39dd9baf69e53c6542c0ff6"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:f3b45fd08cba7c338a8103d236ba4fd2c9bbe36e6d4ef96ddcb6a722d4cf529e"
                   },
@@ -2053,6 +2056,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:3e1977c9b662e295f67e2114694d4a11d87215346cd7836c8fe8b9cec050f357"
                   },
@@ -3687,6 +3693,19 @@
           "options": {
             "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts"
           }
+        },
+        {
+          "name": "org.osbuild.rhsm",
+          "options": {
+            "dnf-plugins": {
+              "product-id": {
+                "enabled": false
+              },
+              "subscription-manager": {
+                "enabled": false
+              }
+            }
+          }
         }
       ],
       "assembler": {
@@ -5346,6 +5365,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.s390x.rpm",
         "checksum": "sha256:a4323036608c3e7708d688843b869177d58a17b3b39dd9baf69e53c6542c0ff6"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -5409,6 +5437,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -10715,8 +10752,20 @@
       "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
       "unbound:x:997:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": false
+        },
+        "subscription-manager": {
+          "enabled": false
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
+        "/etc/dnf/plugins/product-id.conf": "..5....T.",
+        "/etc/dnf/plugins/subscription-manager.conf": "..5....T.",
         "/etc/machine-id": ".M.......",
         "/proc": ".M.......",
         "/sys": ".M.......",
diff --git a/test/data/manifests/rhel_8-s390x-tar-boot.json b/test/data/manifests/rhel_8-s390x-tar-boot.json
index 28dc823df..68849bbdf 100644
--- a/test/data/manifests/rhel_8-s390x-tar-boot.json
+++ b/test/data/manifests/rhel_8-s390x-tar-boot.json
@@ -465,6 +465,9 @@
           "sha256:90cad0b0149c8e21613247039af49e91e138aa5e3e7d158022cfd274f349b123": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/perl-libs-5.26.3-416.el8.s390x.rpm"
           },
+          "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": {
+            "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm"
+          },
           "sha256:957f0ffdff9579966c5c0b8cccbd8d41bec7520aa48f7704b01f7ea62dee52e2": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/coreutils-8.30-8.el8.s390x.rpm"
           },
@@ -477,6 +480,9 @@
           "sha256:998276e153886e014ce37c429a0f22b76f3ca955c1c9ba89999ce3dface1cf10": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/libyaml-0.1.7-5.el8.s390x.rpm"
           },
+          "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": {
+            "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm"
+          },
           "sha256:9b88cba46414a21b780f2fc25f8e76a0cc144aabf1bec1eb9873e10369cd27c3": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/keyutils-libs-1.5.10-6.el8.s390x.rpm"
           },
@@ -1311,6 +1317,9 @@
                   {
                     "checksum": "sha256:a4323036608c3e7708d688843b869177d58a17b3b39dd9baf69e53c6542c0ff6"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:f3b45fd08cba7c338a8103d236ba4fd2c9bbe36e6d4ef96ddcb6a722d4cf529e"
                   },
@@ -1332,6 +1341,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:3e1977c9b662e295f67e2114694d4a11d87215346cd7836c8fe8b9cec050f357"
                   },
@@ -3752,6 +3764,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.s390x.rpm",
         "checksum": "sha256:a4323036608c3e7708d688843b869177d58a17b3b39dd9baf69e53c6542c0ff6"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -3815,6 +3836,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-s390x-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
diff --git a/test/data/manifests/rhel_8-x86_64-ami-boot.json b/test/data/manifests/rhel_8-x86_64-ami-boot.json
index 0168e5169..fbc24f11f 100644
--- a/test/data/manifests/rhel_8-x86_64-ami-boot.json
+++ b/test/data/manifests/rhel_8-x86_64-ami-boot.json
@@ -1718,6 +1718,9 @@
                   {
                     "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1739,6 +1742,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -4635,6 +4641,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.x86_64.rpm",
         "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -4698,6 +4713,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -8982,6 +9006,16 @@
       "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": true
+        },
+        "subscription-manager": {
+          "enabled": true
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/etc/machine-id": ".M.......",
diff --git a/test/data/manifests/rhel_8-x86_64-openstack-boot.json b/test/data/manifests/rhel_8-x86_64-openstack-boot.json
index b54fd278c..0d24a7582 100644
--- a/test/data/manifests/rhel_8-x86_64-openstack-boot.json
+++ b/test/data/manifests/rhel_8-x86_64-openstack-boot.json
@@ -1846,6 +1846,9 @@
                   {
                     "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1867,6 +1870,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -4878,6 +4884,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.x86_64.rpm",
         "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -4941,6 +4956,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -9600,6 +9624,16 @@
       "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": true
+        },
+        "subscription-manager": {
+          "enabled": true
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/etc/machine-id": ".M.......",
diff --git a/test/data/manifests/rhel_8-x86_64-qcow2-boot.json b/test/data/manifests/rhel_8-x86_64-qcow2-boot.json
index 21c86d9c4..d351810c4 100644
--- a/test/data/manifests/rhel_8-x86_64-qcow2-boot.json
+++ b/test/data/manifests/rhel_8-x86_64-qcow2-boot.json
@@ -1924,6 +1924,9 @@
                   {
                     "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1945,6 +1948,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -3465,6 +3471,19 @@
           "options": {
             "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts"
           }
+        },
+        {
+          "name": "org.osbuild.rhsm",
+          "options": {
+            "dnf-plugins": {
+              "product-id": {
+                "enabled": false
+              },
+              "subscription-manager": {
+                "enabled": false
+              }
+            }
+          }
         }
       ],
       "assembler": {
@@ -5040,6 +5059,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.x86_64.rpm",
         "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -5103,6 +5131,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -10051,8 +10088,20 @@
       "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": false
+        },
+        "subscription-manager": {
+          "enabled": false
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
+        "/etc/dnf/plugins/product-id.conf": "..5....T.",
+        "/etc/dnf/plugins/subscription-manager.conf": "..5....T.",
         "/etc/machine-id": ".M.......",
         "/proc": ".M.......",
         "/sys": ".M.......",
diff --git a/test/data/manifests/rhel_8-x86_64-qcow2-customize.json b/test/data/manifests/rhel_8-x86_64-qcow2-customize.json
index 7a47ab5d5..8c00ce223 100644
--- a/test/data/manifests/rhel_8-x86_64-qcow2-customize.json
+++ b/test/data/manifests/rhel_8-x86_64-qcow2-customize.json
@@ -1976,6 +1976,9 @@
                   {
                     "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1997,6 +2000,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -3581,6 +3587,19 @@
           "options": {
             "file_contexts": "etc/selinux/targeted/contexts/files/file_contexts"
           }
+        },
+        {
+          "name": "org.osbuild.rhsm",
+          "options": {
+            "dnf-plugins": {
+              "product-id": {
+                "enabled": false
+              },
+              "subscription-manager": {
+                "enabled": false
+              }
+            }
+          }
         }
       ],
       "assembler": {
@@ -5156,6 +5175,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.x86_64.rpm",
         "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -5219,6 +5247,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -10171,9 +10208,21 @@
       "user1:x:1000:1000::/home/user1:/bin/bash",
       "user2:x:1020:1050:description 2:/home/home2:/bin/sh"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": false
+        },
+        "subscription-manager": {
+          "enabled": false
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/etc/chrony.conf": "S.5....T.",
+        "/etc/dnf/plugins/product-id.conf": "..5....T.",
+        "/etc/dnf/plugins/subscription-manager.conf": "..5....T.",
         "/etc/machine-id": ".M.......",
         "/proc": ".M.......",
         "/sys": ".M.......",
diff --git a/test/data/manifests/rhel_8-x86_64-rhel_edge_commit-boot.json b/test/data/manifests/rhel_8-x86_64-rhel_edge_commit-boot.json
index 8dec00f16..1e48ff889 100644
--- a/test/data/manifests/rhel_8-x86_64-rhel_edge_commit-boot.json
+++ b/test/data/manifests/rhel_8-x86_64-rhel_edge_commit-boot.json
@@ -731,6 +731,9 @@
           "sha256:995a5401cd86404d14d08c0aeafeaa8da3f540b1806f9d0e233d75dec9e45c74": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-appstream-8.3.0.r-20210120/Packages/libmaxminddb-1.2.0-10.el8.x86_64.rpm"
           },
+          "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": {
+            "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm"
+          },
           "sha256:9a89874a5b8326c85c0b34b02c122ffc052b32a12b20354ce95859ac5296a159": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/pkgconf-m4-1.4.2-1.el8.noarch.rpm"
           },
@@ -1751,6 +1754,9 @@
                   {
                     "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1772,6 +1778,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -4684,6 +4693,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.x86_64.rpm",
         "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -4747,6 +4765,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
diff --git a/test/data/manifests/rhel_8-x86_64-tar-boot.json b/test/data/manifests/rhel_8-x86_64-tar-boot.json
index 865efcee1..8a52ccbd8 100644
--- a/test/data/manifests/rhel_8-x86_64-tar-boot.json
+++ b/test/data/manifests/rhel_8-x86_64-tar-boot.json
@@ -399,6 +399,9 @@
           "sha256:90406300b99022d9a28db65bb1dd9c0e14654e8a2dd5c02f35426b3714a1d042": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/fuse-libs-2.9.7-12.el8.x86_64.rpm"
           },
+          "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac": {
+            "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm"
+          },
           "sha256:9461fa7a5e74bfd8d9e9961af9d3003d9d2b496830c2fd6b0641ae8b8bc8e178": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/libacl-2.2.53-1.el8.x86_64.rpm"
           },
@@ -417,6 +420,9 @@
           "sha256:980704e06e8bca4cf302b3498e1432063539c324a3f3feb3b7d7ece5d2aefcf8": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/chkconfig-1.13-2.el8.x86_64.rpm"
           },
+          "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419": {
+            "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm"
+          },
           "sha256:9cf2e24fdbe89f25b8283291fd3fcaf73ca60554bbf5767932c38882cdd0e3c4": {
             "url": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/cracklib-2.9.6-15.el8.x86_64.rpm"
           },
@@ -1227,6 +1233,9 @@
                   {
                     "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1248,6 +1257,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -3477,6 +3489,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.x86_64.rpm",
         "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -3540,6 +3561,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
diff --git a/test/data/manifests/rhel_8-x86_64-vhd-boot.json b/test/data/manifests/rhel_8-x86_64-vhd-boot.json
index 31e7b6ef6..ec37c5a86 100644
--- a/test/data/manifests/rhel_8-x86_64-vhd-boot.json
+++ b/test/data/manifests/rhel_8-x86_64-vhd-boot.json
@@ -1819,6 +1819,9 @@
                   {
                     "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1840,6 +1843,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -4843,6 +4849,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.x86_64.rpm",
         "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -4906,6 +4921,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -9507,6 +9531,16 @@
       "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": true
+        },
+        "subscription-manager": {
+          "enabled": true
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/etc/machine-id": ".M.......",
diff --git a/test/data/manifests/rhel_8-x86_64-vmdk-boot.json b/test/data/manifests/rhel_8-x86_64-vmdk-boot.json
index b3e238ae7..30b912a3c 100644
--- a/test/data/manifests/rhel_8-x86_64-vmdk-boot.json
+++ b/test/data/manifests/rhel_8-x86_64-vmdk-boot.json
@@ -1753,6 +1753,9 @@
                   {
                     "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1774,6 +1777,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -4695,6 +4701,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-hawkey-0.48.0-5.el8.x86_64.rpm",
         "checksum": "sha256:e835f84cdda741b66c3f315a0db71c8209ff4cb451f5ae3afde35b2eda0dd929"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -4758,6 +4773,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.3.0.r-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -9119,6 +9143,16 @@
       "tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": true
+        },
+        "subscription-manager": {
+          "enabled": true
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/etc/machine-id": ".M.......",
diff --git a/test/data/manifests/rhel_84-x86_64-ami-boot.json b/test/data/manifests/rhel_84-x86_64-ami-boot.json
index 2b390e5a4..154a69851 100644
--- a/test/data/manifests/rhel_84-x86_64-ami-boot.json
+++ b/test/data/manifests/rhel_84-x86_64-ami-boot.json
@@ -1822,6 +1822,9 @@
                   {
                     "checksum": "sha256:c4fab880fc77cba297766e3f09b7242dcf0891dc11a596b390b78259656dffcd"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1843,6 +1846,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -4896,6 +4902,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-hawkey-0.55.0-1.el8.x86_64.rpm",
         "checksum": "sha256:c4fab880fc77cba297766e3f09b7242dcf0891dc11a596b390b78259656dffcd"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -4959,6 +4974,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -9620,6 +9644,16 @@
       "tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": true
+        },
+        "subscription-manager": {
+          "enabled": true
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/boot/efi/EFI/redhat/grubx64.efi": ".......T.",
diff --git a/test/data/manifests/rhel_84-x86_64-openstack-boot.json b/test/data/manifests/rhel_84-x86_64-openstack-boot.json
index 8a8aad0dc..d7878d67e 100644
--- a/test/data/manifests/rhel_84-x86_64-openstack-boot.json
+++ b/test/data/manifests/rhel_84-x86_64-openstack-boot.json
@@ -1950,6 +1950,9 @@
                   {
                     "checksum": "sha256:c4fab880fc77cba297766e3f09b7242dcf0891dc11a596b390b78259656dffcd"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1971,6 +1974,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -5139,6 +5145,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-hawkey-0.55.0-1.el8.x86_64.rpm",
         "checksum": "sha256:c4fab880fc77cba297766e3f09b7242dcf0891dc11a596b390b78259656dffcd"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -5202,6 +5217,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -10238,6 +10262,16 @@
       "tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": true
+        },
+        "subscription-manager": {
+          "enabled": true
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/boot/efi/EFI/redhat/grubx64.efi": ".......T.",
diff --git a/test/data/manifests/rhel_84-x86_64-qcow2-boot.json b/test/data/manifests/rhel_84-x86_64-qcow2-boot.json
index 5478748d6..305100c57 100644
--- a/test/data/manifests/rhel_84-x86_64-qcow2-boot.json
+++ b/test/data/manifests/rhel_84-x86_64-qcow2-boot.json
@@ -1914,6 +1914,9 @@
                   {
                     "checksum": "sha256:c4fab880fc77cba297766e3f09b7242dcf0891dc11a596b390b78259656dffcd"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1935,6 +1938,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -3481,6 +3487,19 @@
               "no_zero_conf": true
             }
           }
+        },
+        {
+          "name": "org.osbuild.rhsm",
+          "options": {
+            "dnf-plugins": {
+              "product-id": {
+                "enabled": false
+              },
+              "subscription-manager": {
+                "enabled": false
+              }
+            }
+          }
         }
       ],
       "assembler": {
@@ -5079,6 +5098,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-hawkey-0.55.0-1.el8.x86_64.rpm",
         "checksum": "sha256:c4fab880fc77cba297766e3f09b7242dcf0891dc11a596b390b78259656dffcd"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -5142,6 +5170,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -10087,9 +10124,21 @@
       "tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": false
+        },
+        "subscription-manager": {
+          "enabled": false
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/boot/efi/EFI/redhat/grubx64.efi": ".......T.",
+        "/etc/dnf/plugins/product-id.conf": "..5....T.",
+        "/etc/dnf/plugins/subscription-manager.conf": "..5....T.",
         "/etc/machine-id": ".M.......",
         "/proc": ".M.......",
         "/run/cockpit": ".M.......",
@@ -10193,4 +10242,4 @@
     },
     "timezone": "New_York"
   }
-}
\ No newline at end of file
+}
diff --git a/test/data/manifests/rhel_84-x86_64-qcow2-customize.json b/test/data/manifests/rhel_84-x86_64-qcow2-customize.json
index 1d46d4f67..64993444a 100644
--- a/test/data/manifests/rhel_84-x86_64-qcow2-customize.json
+++ b/test/data/manifests/rhel_84-x86_64-qcow2-customize.json
@@ -1966,6 +1966,9 @@
                   {
                     "checksum": "sha256:c4fab880fc77cba297766e3f09b7242dcf0891dc11a596b390b78259656dffcd"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1987,6 +1990,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -3586,6 +3592,19 @@
               "no_zero_conf": true
             }
           }
+        },
+        {
+          "name": "org.osbuild.rhsm",
+          "options": {
+            "dnf-plugins": {
+              "product-id": {
+                "enabled": false
+              },
+              "subscription-manager": {
+                "enabled": false
+              }
+            }
+          }
         }
       ],
       "assembler": {
@@ -5184,6 +5203,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-hawkey-0.55.0-1.el8.x86_64.rpm",
         "checksum": "sha256:c4fab880fc77cba297766e3f09b7242dcf0891dc11a596b390b78259656dffcd"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -5247,6 +5275,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -10196,10 +10233,22 @@
       "user1:x:1000:1000::/home/user1:/bin/bash",
       "user2:x:1020:1050:description 2:/home/home2:/bin/sh"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": false
+        },
+        "subscription-manager": {
+          "enabled": false
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/boot/efi/EFI/redhat/grubx64.efi": ".......T.",
         "/etc/chrony.conf": "S.5....T.",
+        "/etc/dnf/plugins/product-id.conf": "..5....T.",
+        "/etc/dnf/plugins/subscription-manager.conf": "..5....T.",
         "/etc/machine-id": ".M.......",
         "/proc": ".M.......",
         "/run/cockpit": ".M.......",
@@ -10303,4 +10352,4 @@
     },
     "timezone": "London"
   }
-}
\ No newline at end of file
+}
diff --git a/test/data/manifests/rhel_84-x86_64-vhd-boot.json b/test/data/manifests/rhel_84-x86_64-vhd-boot.json
index a3641f266..3f9cd1f6e 100644
--- a/test/data/manifests/rhel_84-x86_64-vhd-boot.json
+++ b/test/data/manifests/rhel_84-x86_64-vhd-boot.json
@@ -1926,6 +1926,9 @@
                   {
                     "checksum": "sha256:c4fab880fc77cba297766e3f09b7242dcf0891dc11a596b390b78259656dffcd"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1947,6 +1950,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -5110,6 +5116,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-hawkey-0.55.0-1.el8.x86_64.rpm",
         "checksum": "sha256:c4fab880fc77cba297766e3f09b7242dcf0891dc11a596b390b78259656dffcd"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -5173,6 +5188,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -10161,6 +10185,16 @@
       "tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": true
+        },
+        "subscription-manager": {
+          "enabled": true
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/boot/efi/EFI/redhat/grubx64.efi": ".......T.",
diff --git a/test/data/manifests/rhel_84-x86_64-vmdk-boot.json b/test/data/manifests/rhel_84-x86_64-vmdk-boot.json
index bf9e12ac9..2b8bda678 100644
--- a/test/data/manifests/rhel_84-x86_64-vmdk-boot.json
+++ b/test/data/manifests/rhel_84-x86_64-vmdk-boot.json
@@ -1863,6 +1863,9 @@
                   {
                     "checksum": "sha256:c4fab880fc77cba297766e3f09b7242dcf0891dc11a596b390b78259656dffcd"
                   },
+                  {
+                    "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+                  },
                   {
                     "checksum": "sha256:24c7b8b233b0a5a23ff5d42ba56f0ee40372234f91e4fabe36d68e8077157e23"
                   },
@@ -1884,6 +1887,9 @@
                   {
                     "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
                   },
+                  {
+                    "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+                  },
                   {
                     "checksum": "sha256:ef221ca565f17ed425997e97fdeb5fc27261910659fa61372b18d93e1a5613e9"
                   },
@@ -4968,6 +4974,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-hawkey-0.55.0-1.el8.x86_64.rpm",
         "checksum": "sha256:c4fab880fc77cba297766e3f09b7242dcf0891dc11a596b390b78259656dffcd"
       },
+      {
+        "name": "python3-iniparse",
+        "epoch": 0,
+        "version": "0.4",
+        "release": "31.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-iniparse-0.4-31.el8.noarch.rpm",
+        "checksum": "sha256:9a6eb680e8debcd0b97575a76e9cf0d0655ef7f875b362542e0d129f5e423419"
+      },
       {
         "name": "python3-libcomps",
         "epoch": 0,
@@ -5031,6 +5046,15 @@
         "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-setuptools-wheel-39.2.0-6.el8.noarch.rpm",
         "checksum": "sha256:1ed3940c0466986fa38fe9d3bd5fc6370b5e62edba51f7a8359eab786b4b81ec"
       },
+      {
+        "name": "python3-six",
+        "epoch": 0,
+        "version": "1.11.0",
+        "release": "8.el8",
+        "arch": "noarch",
+        "remote_location": "https://rpmrepo.osbuild.org/v1/psi/el8/el8-x86_64-baseos-8.4.0.n-20210120/Packages/python3-six-1.11.0-8.el8.noarch.rpm",
+        "checksum": "sha256:932cca0b2aa28d64538fca0401acc35bec34f14bfe99d3e22ea8452b79890eac"
+      },
       {
         "name": "readline",
         "epoch": 0,
@@ -9789,6 +9813,16 @@
       "tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin",
       "unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin"
     ],
+    "rhsm": {
+      "dnf-plugins": {
+        "product-id": {
+          "enabled": true
+        },
+        "subscription-manager": {
+          "enabled": true
+        }
+      }
+    },
     "rpm-verify": {
       "changed": {
         "/boot/efi/EFI/redhat/grubx64.efi": ".......T.",