Source code for taf.testlib.linux.libvirt

# Copyright (c) 2017, Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""``libvirt.py``

`Class to abstract libvirt operations`

Notes:
    Examples of libvirt usage in tests::

        env.lhost[1].ui.libvirt.start()
        env.lhost[1].ui.libvirt.stop()
        env.lhost[1].ui.libvirt.restart()
        env.lhost[1].ui.libvirt.virsh_execute_command('list')
        env.lhost[1].ui.libvirt.virsh_execute_command('domstats vm_name', exp_rc = frozenset({1})))

"""

from testlib.linux import service_lib


[docs]class Libvirt(object): SERVICE = 'libvirtd'
[docs] def __init__(self, cli_send_command): """Initialize libvirt class. """ super().__init__() self.cli_send_command = cli_send_command self.service_manager = service_lib.SpecificServiceManager(self.SERVICE, self.cli_send_command)
[docs] def __getattr__(self, name): """Method for getting attribute from service_manager. Args: name(str): attribute name """ return getattr(self.service_manager, name)
[docs] def __call__(self, cmd, expected_rc): """Overloaded call method. Args: cmd(str): command to execute expected_rc(int | set | list | frozenset): expected return code Returns: tuple: named tuple """ return self.cli_send_command(cmd, expected_rcs=expected_rc)
[docs] def virsh_execute_command(self, command, expected_rc=frozenset({0})): """Method for virsh command execution. Args: command(str): command to execute expected_rc(int | set | list | frozenset): expected return code Returns: tuple: named tuple """ return self('virsh {}'.format(command), expected_rc)