diff --git a/subiquity/models/filesystem.py b/subiquity/models/filesystem.py index 66409b1a..1e1fa7e6 100644 --- a/subiquity/models/filesystem.py +++ b/subiquity/models/filesystem.py @@ -36,6 +36,7 @@ from curtin.util import human2bytes from probert.storage import StorageInfo from subiquity.common.types import Bootloader, OsProber, RecoveryKey +from subiquitycore.utils import write_named_tempfile log = logging.getLogger("subiquity.models.filesystem") @@ -1135,10 +1136,7 @@ class DM_Crypt(_Formattable): def serialize_key(self): if self.key and not self.keyfile: - f = tempfile.NamedTemporaryFile(prefix="luks-key-", mode="w", delete=False) - f.write(self.key) - f.close() - return {"keyfile": f.name} + return {"keyfile": write_named_tempfile("luks-key-", self.key)} else: return {} diff --git a/subiquitycore/utils.py b/subiquitycore/utils.py index 2a283b5f..89ef1742 100644 --- a/subiquitycore/utils.py +++ b/subiquitycore/utils.py @@ -19,6 +19,7 @@ import logging import os import random import subprocess +import tempfile from typing import Any, Dict, List, Sequence log = logging.getLogger("subiquitycore.utils") @@ -282,3 +283,10 @@ def gen_zsys_uuid(): """Create a 6 character identifier. Functionally equivalent to `head -100 /dev/urandom | tr -dc 'a-z0-9' | head -c6`""" return "".join([random.choice(_zsys_uuid_charset()) for i in range(6)]) + + +def write_named_tempfile(prefix, contents): + f = tempfile.NamedTemporaryFile(prefix=prefix, mode="w", delete=False) + with f: + f.write(contents) + return f.name