def post_install(self): """Perform post-installation tasks.""" # Write selected kickstart repos to target system for ks_repo in (ks for ks in (self.get_addon_repo(r) for r in self.addons) if ks.install): if ks_repo.baseurl.startswith("nfs://"): log.info("Skip writing nfs repo %s to target system.", ks_repo.name) continue try: repo = self._get_repo(ks_repo.name) if not repo: continue except (dnf.exceptions.RepoError, KeyError): continue repo_path = conf.target.system_root + YUM_REPOS_DIR + "%s.repo" % repo.id try: log.info("Writing %s.repo to target system.", repo.id) self._write_dnf_repo(repo, repo_path) except PayloadSetupError as e: log.error(e) # We don't need the mother base anymore. Close it. self._base.close() super().post_install() # rpm needs importing installed certificates manually, see rhbz#748320 and rhbz#185800 task = ImportRPMKeysTask( sysroot=conf.target.system_root, gpg_keys=conf.payload.default_rpm_gpg_keys ) task.run()
def test_import_no_rpm(self): """Import GPG keys without installed rpm.""" with tempfile.TemporaryDirectory() as sysroot: task = ImportRPMKeysTask(sysroot, ["key"]) with self.assertLogs(level="DEBUG") as cm: task.run() msg = "Can not import GPG keys to RPM database" assert any(map(lambda x: msg in x, cm.output))
def test_import_no_keys(self): """Import no GPG keys.""" with tempfile.TemporaryDirectory() as sysroot: task = ImportRPMKeysTask(sysroot, []) with self.assertLogs(level="DEBUG") as cm: task.run() msg = "No GPG keys to import." assert any(map(lambda x: msg in x, cm.output))
def test_import_error(self, mock_exec): """Import GPG keys with error.""" mock_exec.return_value = 1 with tempfile.TemporaryDirectory() as sysroot: self._create_rpm(sysroot) task = ImportRPMKeysTask(sysroot, ["key"]) with self.assertLogs(level="ERROR") as cm: task.run() msg = "Failed to import the GPG key." assert any(map(lambda x: msg in x, cm.output))
def post_install(self): """Perform post-installation tasks.""" # Write selected kickstart repos to target system repositories = list( map(convert_ks_repo_to_repo_data, self.data.repo.dataList())) task = WriteRepositoriesTask( sysroot=conf.target.system_root, dnf_manager=self.dnf_manager, repositories=repositories, ) task.run() # We don't need the mother base anymore. Close it. self._base.close() super().post_install() # rpm needs importing installed certificates manually, see rhbz#748320 and rhbz#185800 task = ImportRPMKeysTask(sysroot=conf.target.system_root, gpg_keys=conf.payload.default_rpm_gpg_keys) task.run() # Update the DNF configuration. task = UpdateDNFConfigurationTask( sysroot=conf.target.system_root, data=self.get_packages_configuration()) task.run()
def test_import_keys(self, mock_exec): """Import GPG keys.""" mock_exec.return_value = 0 key_1 = "/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-1" key_2 = "/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-2" with tempfile.TemporaryDirectory() as sysroot: self._create_rpm(sysroot) task = ImportRPMKeysTask(sysroot, [key_1, key_2]) task.run() mock_exec.assert_has_calls([ call("rpm", ["--import", key_1], root=sysroot), call("rpm", ["--import", key_2], root=sysroot), ])
def test_import_substitution(self, mock_util): """Import GPG keys with variables.""" mock_util.execWithRedirect.return_value = 0 mock_util.execWithCapture.return_value = "s390x" mock_util.get_os_release_value.return_value = "34" key = "/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch" with tempfile.TemporaryDirectory() as sysroot: self._create_rpm(sysroot) task = ImportRPMKeysTask(sysroot, [key]) task.run() mock_util.execWithRedirect.assert_called_once_with( "rpm", ["--import", "/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-34-s390x"], root=sysroot)