Code Duplication    Length = 42-44 lines in 2 locations

org_fedora_oscap/service/installation.py 2 locations

@@ 269-312 (lines=44) @@
266
            return
267
268
269
class ScheduleFirstbootRemediationTask(Task):
270
    """The installation task for running the remediation."""
271
272
    def __init__(self, sysroot, policy_data, target_content_path,
273
                 target_tailoring_path):
274
        """Create a task."""
275
        super().__init__()
276
        self._sysroot = sysroot
277
        self._policy_data = policy_data
278
        self._target_content_path = target_content_path
279
        self._target_tailoring_path = target_tailoring_path
280
281
    @property
282
    def name(self):
283
        return "Schedule first-boot remediation"
284
285
    def run(self):
286
        """Run the task."""
287
        try:
288
            common.assert_scanner_works(
289
                chroot=self._sysroot, executable="oscap")
290
        except Exception as exc:
291
            msg_lines = [_(
292
                "The 'oscap' scanner doesn't work in the installed system: {error}"
293
                .format(error=str(exc)))]
294
            msg_lines.append(_("As a result, the installed system can't be hardened."))
295
            terminate("\n".join(msg_lines))
296
            return
297
298
        try:
299
            common.schedule_firstboot_remediation(
300
                self._sysroot,
301
                self._policy_data.profile_id,
302
                self._target_content_path,
303
                self._policy_data.datastream_id,
304
                self._policy_data.xccdf_id,
305
                self._target_tailoring_path,
306
            )
307
        except Exception as exc:
308
            msg = _(
309
                "Something went wrong when scheduling the first-boot remediation: {exc}."
310
                .format(exc=str(exc)))
311
            terminate(msg)
312
            return
313
@@ 225-266 (lines=42) @@
222
            shutil.copy2(self._tailoring_path, target_content_dir)
223
224
225
class RemediateSystemTask(Task):
226
    """The installation task for running the remediation."""
227
228
    def __init__(self, sysroot, policy_data, target_content_path,
229
                 target_tailoring_path):
230
        """Create a task."""
231
        super().__init__()
232
        self._sysroot = sysroot
233
        self._policy_data = policy_data
234
        self._target_content_path = target_content_path
235
        self._target_tailoring_path = target_tailoring_path
236
237
    @property
238
    def name(self):
239
        return "Remediate the system"
240
241
    def run(self):
242
        """Run the task."""
243
        try:
244
            common.assert_scanner_works(
245
                chroot=self._sysroot, executable="oscap")
246
        except Exception as exc:
247
            msg_lines = [_(
248
                "The 'oscap' scanner doesn't work in the installed system: {error}"
249
                .format(error=str(exc)))]
250
            msg_lines.append(_("As a result, the installed system can't be hardened."))
251
            terminate("\n".join(msg_lines))
252
            return
253
254
        try:
255
            common.run_oscap_remediate(
256
                self._policy_data.profile_id,
257
                self._target_content_path,
258
                self._policy_data.datastream_id,
259
                self._policy_data.xccdf_id,
260
                self._target_tailoring_path,
261
                chroot=self._sysroot
262
            )
263
        except Exception as exc:
264
            msg = _(f"Something went wrong during the final hardening: {str(exc)}.")
265
            terminate(msg)
266
            return
267
268
269
class ScheduleFirstbootRemediationTask(Task):