opencas-test-framework/test_utils/dut.py
Daniel Madej 06ff3622d9 Make serial optional for disks
Signed-off-by: Daniel Madej <daniel.madej@huawei.com>
2024-09-25 14:44:14 +02:00

75 lines
2.4 KiB
Python

#
# Copyright(c) 2019-2021 Intel Corporation
# Copyright(c) 2023-2024 Huawei Technologies Co., Ltd.
# SPDX-License-Identifier: BSD-3-Clause
#
from storage_devices.disk import Disk, DiskType
class Dut:
def __init__(self, dut_info):
self.config = dut_info
self.disks = [
Disk.create_disk(
disk_info["path"],
DiskType[disk_info["type"]],
disk_info.get("serial", None),
disk_info["blocksize"],
)
for disk_info in dut_info.get("disks", [])
]
self.disks.sort(key=lambda disk: disk.disk_type, reverse=True)
self.ipmi = dut_info.get("ipmi")
self.spider = dut_info.get("spider")
self.wps = dut_info.get("wps")
self.env = dut_info.get("env")
self.ip = dut_info.get("ip")
self.virsh = self.__parse_virsh_config(dut_info)
def __str__(self):
dut_str = f"ip: {self.ip}\n"
dut_str += f'ipmi: {self.ipmi["ip"]}\n' if self.ipmi is not None else ""
dut_str += f'spider: {self.spider["ip"]}\n' if self.spider is not None else ""
dut_str += (
f'wps: {self.wps["ip"]} port: {self.wps["port"]}\n' if self.wps is not None else ""
)
dut_str += (
f'virsh.vm_name: {self.virsh["vm_name"]}\n'
if (self.virsh is not None)
else ""
)
dut_str += (
f'virsh.reboot_timeout: {self.virsh["reboot_timeout"]}\n'
if (self.virsh is not None)
else ""
)
dut_str += f"disks:\n"
for disk in self.disks:
dut_str += f"\t{disk}"
dut_str += "\n"
return dut_str
def get_disks_of_type(self, disk_type: DiskType):
ret_list = []
for d in self.disks:
if d.disk_type == disk_type:
ret_list.append(d)
return ret_list
@staticmethod
def __parse_virsh_config(dut_info) -> dict | None:
from core.test_run import TestRun
if "power_control" not in TestRun.plugin_manager.req_plugins.keys():
return None
try:
virsh_controller = TestRun.plugin_manager.get_plugin("power_control")
return virsh_controller.parse_virsh_config(
vm_name=dut_info["vm_name"], reboot_timeout=dut_info.get("reboot_timeout")
)
except NameError:
return None