75 lines
2.4 KiB
Python
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
|
|
|