open-cas-linux/test/functional/api/cas/init_config.py
Katarzyna Treder e740ce377f Fix imports
Signed-off-by: Katarzyna Treder <katarzyna.treder@h-partners.com>
2024-12-31 12:06:18 +01:00

110 lines
3.3 KiB
Python

#
# Copyright(c) 2019-2022 Intel Corporation
# Copyright(c) 2024 Huawei Technologies Co., Ltd.
# SPDX-License-Identifier: BSD-3-Clause
#
from api.cas import casadm_parser
from api.cas.cache_config import CacheMode
from storage_devices.device import Device
from test_tools.fs_tools import remove, write_file
opencas_conf_path = "/etc/opencas/opencas.conf"
class InitConfig:
def __init__(self):
self.cache_config_lines = []
self.core_config_lines = []
def add_cache(
self,
cache_id,
cache_device: Device,
cache_mode: CacheMode = CacheMode.WT,
extra_flags="",
):
self.cache_config_lines.append(
CacheConfigLine(cache_id, cache_device, cache_mode, extra_flags)
)
def add_core(self, cache_id, core_id, core_device: Device, extra_flags=""):
self.core_config_lines.append(CoreConfigLine(cache_id, core_id, core_device, extra_flags))
@staticmethod
def remove_config_file():
remove(opencas_conf_path, force=False)
def save_config_file(self):
config_lines = []
InitConfig.create_default_init_config()
if self.cache_config_lines:
config_lines.append(CacheConfigLine.header)
for c in self.cache_config_lines:
config_lines.append(str(c))
if self.core_config_lines:
config_lines.append(CoreConfigLine.header)
for c in self.core_config_lines:
config_lines.append(str(c))
write_file(opencas_conf_path, "\n".join(config_lines), False)
@classmethod
def create_init_config_from_running_configuration(
cls, cache_extra_flags="", core_extra_flags=""
):
init_conf = cls()
for cache in casadm_parser.get_caches():
init_conf.add_cache(
cache.cache_id,
cache.cache_device,
cache.get_cache_mode(),
cache_extra_flags,
)
for core in casadm_parser.get_cores(cache.cache_id):
init_conf.add_core(cache.cache_id, core.core_id, core.core_device, core_extra_flags)
init_conf.save_config_file()
return init_conf
@classmethod
def create_default_init_config(cls):
cas_version = casadm_parser.get_casadm_version()
write_file(opencas_conf_path, f"version={cas_version.base}")
class CacheConfigLine:
header = "[caches]"
def __init__(self, cache_id, cache_device: Device, cache_mode: CacheMode, extra_flags=""):
self.cache_id = cache_id
self.cache_device = cache_device
self.cache_mode = cache_mode
self.extra_flags = extra_flags
def __str__(self):
params = [
str(self.cache_id),
self.cache_device.path,
self.cache_mode.name,
self.extra_flags,
]
return "\t".join(params)
class CoreConfigLine:
header = "[cores]"
def __init__(self, cache_id, core_id, core_device: Device, extra_flags=""):
self.cache_id = cache_id
self.core_id = core_id
self.core_device = core_device
self.extra_flags = extra_flags
def __str__(self):
params = [
str(self.cache_id),
str(self.core_id),
self.core_device.path,
self.extra_flags,
]
return "\t".join(params)