Слияние кода завершено, страница обновится автоматически
# Copyright (c) 2021 Huawei Technologies Co.,Ltd. All rights reserved.
#
# StratoVirt is licensed under Mulan PSL v2.
# You can use this software according to the terms and conditions of the Mulan
# PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
# http:#license.coscl.org.cn/MulanPSL2
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY
# KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
# NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
"""global config parser"""
import os
import configparser
from queue import Queue
from utils.decorators import Singleton
CONFIG_FILE = "../config/config.ini"
class ParserConfig(Singleton):
"""Global settings class"""
def __init__(self, cfg_file=CONFIG_FILE):
"""
Constructor
Args:
cfg_file: set the global config file
"""
self.conf = configparser.ConfigParser()
_tempfile = os.path.join(os.path.dirname(__file__), cfg_file)
self.conf.read(_tempfile)
self.flush()
self.vmconfigs = dict()
self.init_vmconfig_files()
self.test_session_root_path = self.test_dir
self.event_queue = Queue()
def get_option(self, section, option, default=None):
"""
Get item value
Args:
section: set the section value
option: set the option value
default: set the default value
"""
try:
return str(self.conf.get(section, option))
except configparser.NoSectionError:
return default
except configparser.NoOptionError:
return default
def flush(self):
"""Read config from self.conf file"""
# parser global env config
self.test_dir = self.get_option("env.params", "TEST_DIR", "/var/tmp/")
self.vmtype = self.get_option("env.params", "VMTYPE", "stratovirt")
self.vm_templ_dir = self.get_option("env.params", "VM_TEMPL_DIR",
"../config/test_config/vm_config")
self.vm_username = self.get_option("env.params", "VM_USERNAME", "root")
self.vm_password = self.get_option("env.params", "VM_PASSWORD", "openEuler12#$")
self.timeout_factor = int(self.get_option("env.params", "TIMEOUT_FACTOR", "1"))
self.delete_test_session = bool(self.get_option("env.params", "DELETE_TEST_SESSION",
"false") == "true")
self.concurrent_quantity = int(self.get_option("env.params", "CONCURRENT_QUANTITY", "10"))
# parser stratovirt config
self.stratovirt_microvm_bin = self.get_option("stratovirt.params", "STRATOVIRT_MICROVM_BINARY", None)
self.stratovirt_standvm_bin = self.get_option("stratovirt.params", "STRATOVIRT_STANDVM_BINARY", None)
self.stratovirt_microvm_boottime_bin = self.get_option("stratovirt.params",
"STRATOVIRT_MICROVM_BOOTTIME_BINARY", None)
self.stratovirt_microvm_config = self.get_option("stratovirt.params", "STRATOVIRT_MICROVM_CONFIG",
"config/test_config/vm_config/micro_vm.json")
self.stratovirt_standvm_config = self.get_option("stratovirt.params", "STRATOVIRT_STANDVM_CONFIG",
"config/test_config/vm_config/stand_vm.json")
self.stratovirt_binary_name = self.get_option("stratovirt.params",
"STRATOVIRT_BINARY_NAME", "microvm")
self.stratovirt_vmlinux = self.get_option("stratovirt.params", "STRATOVIRT_VMLINUX", None)
self.stratovirt_stand_vmlinux = self.get_option("stratovirt.params", "STRATOVIRT_STAND_VMLINUX", None)
self.stratovirt_rootfs = self.get_option("stratovirt.params", "STRATOVIRT_ROOTFS", None)
self.stratovirt_stand_rootfs = self.get_option("stratovirt.params", "STRATOVIRT_STAND_ROOTFS", None)
self.stratovirt_initrd = self.get_option("stratovirt.params", "STRATOVIRT_INITRD", None)
self.stratovirt_use_config_file = bool(self.get_option("stratovirt.params", "STRATOVIRT_USE_CONFIG_FILE",
"false") == "true")
self.stratovirt_feature = self.get_option("stratovirt.params", "STRATOVIRT_FEATURE", "mmio")
self.memory_usage_check = bool(self.get_option("stratovirt.params", "MEMORY_USAGE_CHECK",
"true") == "true")
self.rust_san_check = bool(self.get_option("stratovirt.params", "RUST_SAN_CHECK",
"false") == "true")
self.code_storage_file = self.get_option("stratovirt.params", "CODE_STORAGE_FILE", None)
# parser network params
self.bridge_name = self.get_option("network.params", "BRIDGE_NAME", "stratobr0")
self.nets_num = int(self.get_option("network.params", "NETS_NUMBER", "10"))
self.ip_prefix = self.get_option("network.params", "IP_PREFIX", "192.168")
self.ip_3rd = int(self.get_option("network.params", "IP_3RD", "133"))
self.dhcp_lower_limit = int(self.get_option("network.params", "DHCP_LOWER_LIMIT", "100"))
self.dhcp_top_limit = int(self.get_option("network.params", "DHCP_TOP_LIMIT", "240"))
self.static_ip_lower_limit = int(self.get_option("network.params", "STATIC_IP_LOWER_LIMIT", "10"))
self.static_ip_top_limit = int(self.get_option("network.params", "STATIC_IP_TOP_LIMIT", "100"))
self.netmasklen = self.get_option("network.params", "NETMASK_LEN", "24")
self.netmask = self.get_option("network.params", "NETMASK", "255.255.255.0")
# parser katacontainer params
self.kata_config_path = self.get_option("katacontainer.params", "KATA_CONFIG_PATH",
"/usr/share/defaults/kata-containers")
def init_vmconfig_files(self):
"""
Init vmconfig files(self.vmconfigs) as follow:
{"microvm": {"cpuhotplug": "microvm_cpuhotplug.json",
"seccomp": "microvm_seccomp.json"}
}
"""
for cfg_file in os.listdir(self.vm_templ_dir):
for vmtype in ["microvm", "standvm"]:
if cfg_file.startswith(vmtype):
if vmtype not in self.vmconfigs:
self.vmconfigs[vmtype] = dict()
tag = str(cfg_file).replace(vmtype + "_", "").replace(".json", "")
self.vmconfigs[vmtype][tag] = os.path.join(self.vm_templ_dir, cfg_file)
break
def list_vmconfigs(self, vmtype="microvm"):
"""
Get list of vmconfig file
Args:
vmtype: specify prefix of filename
"""
if vmtype in self.vmconfigs:
return self.vmconfigs[vmtype].values()
return list()
def _list_vmconfig_with_vmtype_tag(self, vmtype, tag):
if vmtype in self.vmconfigs:
return self.vmconfigs[vmtype].get(tag, None)
return None
def get_microvm_by_tag(self, tag):
"""
Get microvm config by tag
Args:
tag: such as -boottime, -initrd.
"""
return self._list_vmconfig_with_vmtype_tag("microvm", tag)
def get_standvm_by_tag(self, tag):
"""
Get standvm config by tag
"""
return self._list_vmconfig_with_vmtype_tag("standvm", tag)
def list_microvm_tags(self):
"""List microvm all tags"""
if "microvm" in self.vmconfigs:
return self.vmconfigs["microvm"].keys()
return list()
def list_standvm_tags(self):
"""List standvm all tags"""
if "standvm" in self.vmconfigs:
return self.vmconfigs["standvm"].keys()
return list()
def get_default_microvm_vmconfig(self):
"""Get default microvm vmconfig file"""
return self.stratovirt_microvm_config
def get_default_standvm_vmconfig(self):
"""Get default standvm vmconfig file"""
return self.stratovirt_standvm_config
CONFIG = ParserConfig()
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )