提交 e301e65c 编写于 作者: C Cleber Rosa 提交者: Eduardo Habkost

scripts/qemu.py: use a more consistent docstring style

Signed-off-by: NCleber Rosa <crosa@redhat.com>
Message-Id: <20181004161852.11673-10-crosa@redhat.com>
[ehabkost: reverted unintentional submodule update]
Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
上级 cbcdf1a9
...@@ -59,9 +59,9 @@ class QEMUMachineAddDeviceError(QEMUMachineError): ...@@ -59,9 +59,9 @@ class QEMUMachineAddDeviceError(QEMUMachineError):
""" """
class MonitorResponseError(qmp.qmp.QMPError): class MonitorResponseError(qmp.qmp.QMPError):
''' """
Represents erroneous QMP monitor reply Represents erroneous QMP monitor reply
''' """
def __init__(self, reply): def __init__(self, reply):
try: try:
desc = reply["error"]["desc"] desc = reply["error"]["desc"]
...@@ -72,14 +72,15 @@ class MonitorResponseError(qmp.qmp.QMPError): ...@@ -72,14 +72,15 @@ class MonitorResponseError(qmp.qmp.QMPError):
class QEMUMachine(object): class QEMUMachine(object):
'''A QEMU VM """
A QEMU VM
Use this object as a context manager to ensure the QEMU process terminates:: Use this object as a context manager to ensure the QEMU process terminates::
with VM(binary) as vm: with VM(binary) as vm:
... ...
# vm is guaranteed to be shut down here # vm is guaranteed to be shut down here
''' """
def __init__(self, binary, args=None, wrapper=None, name=None, def __init__(self, binary, args=None, wrapper=None, name=None,
test_dir="/var/tmp", monitor_address=None, test_dir="/var/tmp", monitor_address=None,
...@@ -141,7 +142,9 @@ class QEMUMachine(object): ...@@ -141,7 +142,9 @@ class QEMUMachine(object):
self._args.append(args) self._args.append(args)
def add_fd(self, fd, fdset, opaque, opts=''): def add_fd(self, fd, fdset, opaque, opts=''):
'''Pass a file descriptor to the VM''' """
Pass a file descriptor to the VM
"""
options = ['fd=%d' % fd, options = ['fd=%d' % fd,
'set=%d' % fdset, 'set=%d' % fdset,
'opaque=%s' % opaque] 'opaque=%s' % opaque]
...@@ -197,7 +200,9 @@ class QEMUMachine(object): ...@@ -197,7 +200,9 @@ class QEMUMachine(object):
@staticmethod @staticmethod
def _remove_if_exists(path): def _remove_if_exists(path):
'''Remove file object at path if it exists''' """
Remove file object at path if it exists
"""
try: try:
os.remove(path) os.remove(path)
except OSError as exception: except OSError as exception:
...@@ -300,7 +305,9 @@ class QEMUMachine(object): ...@@ -300,7 +305,9 @@ class QEMUMachine(object):
raise raise
def _launch(self): def _launch(self):
'''Launch the VM and establish a QMP connection''' """
Launch the VM and establish a QMP connection
"""
devnull = open(os.path.devnull, 'rb') devnull = open(os.path.devnull, 'rb')
self._pre_launch() self._pre_launch()
self._qemu_full_args = (self._wrapper + [self._binary] + self._qemu_full_args = (self._wrapper + [self._binary] +
...@@ -314,14 +321,18 @@ class QEMUMachine(object): ...@@ -314,14 +321,18 @@ class QEMUMachine(object):
self._post_launch() self._post_launch()
def wait(self): def wait(self):
'''Wait for the VM to power off''' """
Wait for the VM to power off
"""
self._popen.wait() self._popen.wait()
self._qmp.close() self._qmp.close()
self._load_io_log() self._load_io_log()
self._post_shutdown() self._post_shutdown()
def shutdown(self): def shutdown(self):
'''Terminate the VM and clean up''' """
Terminate the VM and clean up
"""
if self.is_running(): if self.is_running():
try: try:
self._qmp.cmd('quit') self._qmp.cmd('quit')
...@@ -345,7 +356,9 @@ class QEMUMachine(object): ...@@ -345,7 +356,9 @@ class QEMUMachine(object):
self._launched = False self._launched = False
def qmp(self, cmd, conv_keys=True, **args): def qmp(self, cmd, conv_keys=True, **args):
'''Invoke a QMP command and return the response dict''' """
Invoke a QMP command and return the response dict
"""
qmp_args = dict() qmp_args = dict()
for key, value in args.items(): for key, value in args.items():
if conv_keys: if conv_keys:
...@@ -356,11 +369,11 @@ class QEMUMachine(object): ...@@ -356,11 +369,11 @@ class QEMUMachine(object):
return self._qmp.cmd(cmd, args=qmp_args) return self._qmp.cmd(cmd, args=qmp_args)
def command(self, cmd, conv_keys=True, **args): def command(self, cmd, conv_keys=True, **args):
''' """
Invoke a QMP command. Invoke a QMP command.
On success return the response dict. On success return the response dict.
On failure raise an exception. On failure raise an exception.
''' """
reply = self.qmp(cmd, conv_keys, **args) reply = self.qmp(cmd, conv_keys, **args)
if reply is None: if reply is None:
raise qmp.qmp.QMPError("Monitor is closed") raise qmp.qmp.QMPError("Monitor is closed")
...@@ -369,13 +382,17 @@ class QEMUMachine(object): ...@@ -369,13 +382,17 @@ class QEMUMachine(object):
return reply["return"] return reply["return"]
def get_qmp_event(self, wait=False): def get_qmp_event(self, wait=False):
'''Poll for one queued QMP events and return it''' """
Poll for one queued QMP events and return it
"""
if len(self._events) > 0: if len(self._events) > 0:
return self._events.pop(0) return self._events.pop(0)
return self._qmp.pull_event(wait=wait) return self._qmp.pull_event(wait=wait)
def get_qmp_events(self, wait=False): def get_qmp_events(self, wait=False):
'''Poll for queued QMP events and return a list of dicts''' """
Poll for queued QMP events and return a list of dicts
"""
events = self._qmp.get_events(wait=wait) events = self._qmp.get_events(wait=wait)
events.extend(self._events) events.extend(self._events)
del self._events[:] del self._events[:]
...@@ -383,7 +400,7 @@ class QEMUMachine(object): ...@@ -383,7 +400,7 @@ class QEMUMachine(object):
return events return events
def event_wait(self, name, timeout=60.0, match=None): def event_wait(self, name, timeout=60.0, match=None):
''' """
Wait for specified timeout on named event in QMP; optionally filter Wait for specified timeout on named event in QMP; optionally filter
results by match. results by match.
...@@ -391,7 +408,7 @@ class QEMUMachine(object): ...@@ -391,7 +408,7 @@ class QEMUMachine(object):
branch processing on match's value None branch processing on match's value None
{"foo": {"bar": 1}} matches {"foo": None} {"foo": {"bar": 1}} matches {"foo": None}
{"foo": {"bar": 1}} does not matches {"foo": {"baz": None}} {"foo": {"bar": 1}} does not matches {"foo": {"baz": None}}
''' """
def event_match(event, match=None): def event_match(event, match=None):
if match is None: if match is None:
return True return True
...@@ -424,29 +441,29 @@ class QEMUMachine(object): ...@@ -424,29 +441,29 @@ class QEMUMachine(object):
return None return None
def get_log(self): def get_log(self):
''' """
After self.shutdown or failed qemu execution, this returns the output After self.shutdown or failed qemu execution, this returns the output
of the qemu process. of the qemu process.
''' """
return self._iolog return self._iolog
def add_args(self, *args): def add_args(self, *args):
''' """
Adds to the list of extra arguments to be given to the QEMU binary Adds to the list of extra arguments to be given to the QEMU binary
''' """
self._args.extend(args) self._args.extend(args)
def set_machine(self, machine_type): def set_machine(self, machine_type):
''' """
Sets the machine type Sets the machine type
If set, the machine type will be added to the base arguments If set, the machine type will be added to the base arguments
of the resulting QEMU command line. of the resulting QEMU command line.
''' """
self._machine = machine_type self._machine = machine_type
def set_console(self, device_type=None): def set_console(self, device_type=None):
''' """
Sets the device type for a console device Sets the device type for a console device
If set, the console device and a backing character device will If set, the console device and a backing character device will
...@@ -464,7 +481,7 @@ class QEMUMachine(object): ...@@ -464,7 +481,7 @@ class QEMUMachine(object):
@param device_type: the device type, such as "isa-serial" @param device_type: the device type, such as "isa-serial"
@raises: QEMUMachineAddDeviceError if the device type is not given @raises: QEMUMachineAddDeviceError if the device type is not given
and can not be determined. and can not be determined.
''' """
if device_type is None: if device_type is None:
if self._machine is None: if self._machine is None:
raise QEMUMachineAddDeviceError("Can not add a console device:" raise QEMUMachineAddDeviceError("Can not add a console device:"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册