Python: expose QEMUMachine's temporary directory
Each instance of qemu.machine.QEMUMachine currently has a "test directory", which may not have any relation to a "test", and it's really a temporary directory. Users instantiating the QEMUMachine class will be able to set the location of the directory that will *contain* the QEMUMachine unique temporary directory, so that parameter name has been changed from test_dir to base_temp_dir. A property has been added to allow users to access it without using private attributes, and with that, the directory is created on first use of the property. Signed-off-by: Cleber Rosa <crosa@redhat.com> Message-Id: <20210211220146.2525771-3-crosa@redhat.com> Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com> Signed-off-by: Cleber Rosa <crosa@redhat.com> Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
52848929b7
commit
2ca6e26cea
|
@ -84,7 +84,7 @@ class QEMUMachine:
|
||||||
args: Sequence[str] = (),
|
args: Sequence[str] = (),
|
||||||
wrapper: Sequence[str] = (),
|
wrapper: Sequence[str] = (),
|
||||||
name: Optional[str] = None,
|
name: Optional[str] = None,
|
||||||
test_dir: str = "/var/tmp",
|
base_temp_dir: str = "/var/tmp",
|
||||||
monitor_address: Optional[SocketAddrT] = None,
|
monitor_address: Optional[SocketAddrT] = None,
|
||||||
socket_scm_helper: Optional[str] = None,
|
socket_scm_helper: Optional[str] = None,
|
||||||
sock_dir: Optional[str] = None,
|
sock_dir: Optional[str] = None,
|
||||||
|
@ -97,10 +97,10 @@ class QEMUMachine:
|
||||||
@param args: list of extra arguments
|
@param args: list of extra arguments
|
||||||
@param wrapper: list of arguments used as prefix to qemu binary
|
@param wrapper: list of arguments used as prefix to qemu binary
|
||||||
@param name: prefix for socket and log file names (default: qemu-PID)
|
@param name: prefix for socket and log file names (default: qemu-PID)
|
||||||
@param test_dir: where to create socket and log file
|
@param base_temp_dir: default location where temporary files are created
|
||||||
@param monitor_address: address for QMP monitor
|
@param monitor_address: address for QMP monitor
|
||||||
@param socket_scm_helper: helper program, required for send_fd_scm()
|
@param socket_scm_helper: helper program, required for send_fd_scm()
|
||||||
@param sock_dir: where to create socket (overrides test_dir for sock)
|
@param sock_dir: where to create socket (defaults to base_temp_dir)
|
||||||
@param drain_console: (optional) True to drain console socket to buffer
|
@param drain_console: (optional) True to drain console socket to buffer
|
||||||
@param console_log: (optional) path to console log file
|
@param console_log: (optional) path to console log file
|
||||||
@note: Qemu process is not started until launch() is used.
|
@note: Qemu process is not started until launch() is used.
|
||||||
|
@ -112,8 +112,8 @@ class QEMUMachine:
|
||||||
self._wrapper = wrapper
|
self._wrapper = wrapper
|
||||||
|
|
||||||
self._name = name or "qemu-%d" % os.getpid()
|
self._name = name or "qemu-%d" % os.getpid()
|
||||||
self._test_dir = test_dir
|
self._base_temp_dir = base_temp_dir
|
||||||
self._sock_dir = sock_dir or self._test_dir
|
self._sock_dir = sock_dir or self._base_temp_dir
|
||||||
self._socket_scm_helper = socket_scm_helper
|
self._socket_scm_helper = socket_scm_helper
|
||||||
|
|
||||||
if monitor_address is not None:
|
if monitor_address is not None:
|
||||||
|
@ -303,9 +303,7 @@ class QEMUMachine:
|
||||||
return args
|
return args
|
||||||
|
|
||||||
def _pre_launch(self) -> None:
|
def _pre_launch(self) -> None:
|
||||||
self._temp_dir = tempfile.mkdtemp(prefix="qemu-machine-",
|
self._qemu_log_path = os.path.join(self.temp_dir, self._name + ".log")
|
||||||
dir=self._test_dir)
|
|
||||||
self._qemu_log_path = os.path.join(self._temp_dir, self._name + ".log")
|
|
||||||
self._qemu_log_file = open(self._qemu_log_path, 'wb')
|
self._qemu_log_file = open(self._qemu_log_path, 'wb')
|
||||||
|
|
||||||
if self._console_set:
|
if self._console_set:
|
||||||
|
@ -744,3 +742,13 @@ class QEMUMachine:
|
||||||
file=self._console_log_path,
|
file=self._console_log_path,
|
||||||
drain=self._drain_console)
|
drain=self._drain_console)
|
||||||
return self._console_socket
|
return self._console_socket
|
||||||
|
|
||||||
|
@property
|
||||||
|
def temp_dir(self) -> str:
|
||||||
|
"""
|
||||||
|
Returns a temporary directory to be used for this machine
|
||||||
|
"""
|
||||||
|
if self._temp_dir is None:
|
||||||
|
self._temp_dir = tempfile.mkdtemp(prefix="qemu-machine-",
|
||||||
|
dir=self._base_temp_dir)
|
||||||
|
return self._temp_dir
|
||||||
|
|
|
@ -112,14 +112,14 @@ class QEMUQtestMachine(QEMUMachine):
|
||||||
binary: str,
|
binary: str,
|
||||||
args: Sequence[str] = (),
|
args: Sequence[str] = (),
|
||||||
name: Optional[str] = None,
|
name: Optional[str] = None,
|
||||||
test_dir: str = "/var/tmp",
|
base_temp_dir: str = "/var/tmp",
|
||||||
socket_scm_helper: Optional[str] = None,
|
socket_scm_helper: Optional[str] = None,
|
||||||
sock_dir: Optional[str] = None):
|
sock_dir: Optional[str] = None):
|
||||||
if name is None:
|
if name is None:
|
||||||
name = "qemu-%d" % os.getpid()
|
name = "qemu-%d" % os.getpid()
|
||||||
if sock_dir is None:
|
if sock_dir is None:
|
||||||
sock_dir = test_dir
|
sock_dir = base_temp_dir
|
||||||
super().__init__(binary, args, name=name, test_dir=test_dir,
|
super().__init__(binary, args, name=name, base_temp_dir=base_temp_dir,
|
||||||
socket_scm_helper=socket_scm_helper,
|
socket_scm_helper=socket_scm_helper,
|
||||||
sock_dir=sock_dir)
|
sock_dir=sock_dir)
|
||||||
self._qtest: Optional[QEMUQtestProtocol] = None
|
self._qtest: Optional[QEMUQtestProtocol] = None
|
||||||
|
|
|
@ -571,7 +571,7 @@ class VM(qtest.QEMUQtestMachine):
|
||||||
def __init__(self, path_suffix=''):
|
def __init__(self, path_suffix=''):
|
||||||
name = "qemu%s-%d" % (path_suffix, os.getpid())
|
name = "qemu%s-%d" % (path_suffix, os.getpid())
|
||||||
super().__init__(qemu_prog, qemu_opts, name=name,
|
super().__init__(qemu_prog, qemu_opts, name=name,
|
||||||
test_dir=test_dir,
|
base_temp_dir=test_dir,
|
||||||
socket_scm_helper=socket_scm_helper,
|
socket_scm_helper=socket_scm_helper,
|
||||||
sock_dir=sock_dir)
|
sock_dir=sock_dir)
|
||||||
self._num_drives = 0
|
self._num_drives = 0
|
||||||
|
|
Loading…
Reference in New Issue