1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openeuler-stratovirt

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
container.py 3.7 КБ
Копировать Редактировать Исходные данные Просмотреть построчно История
Zhu Huankai Отправлено 3 лет назад d86e59a
# 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.
"""container class"""
import os
import subprocess
from subprocess import PIPE
import logging
import aexpect
from utils.config import CONFIG
from utils.utils_logging import TestLog
LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
logging.basicConfig(filename="/var/log/pytest.log", level=logging.DEBUG, format=LOG_FORMAT)
LOG = TestLog.get_global_log()
LOGIN_TIMEOUT = 60
LOGIN_WAIT_TIMEOUT = 60
class KataContainer:
"""This class provides methods to operate kata container"""
def __init__(self):
self.config_path = CONFIG.kata_config_path
self.isula_session = None
self.isula_run_cmd = None
def create_isula_shellsession(self, name):
"""Create session to isula container"""
self.isula_session = aexpect.ShellSession(
"isula exec -ti %s sh" % name,
auto_close=False,
output_func=LOG.debug,
prompt=r"[\#\$]",
status_test_command="echo $?"
)
return self.isula_session
def basic_config(self, **kwargs):
"""get kata configuration items"""
for key, value in kwargs.items():
if hasattr(self, key):
setattr(self, key, value)
def make_isula_cmd(self, options, runtime, image, **kwargs):
"""make isula command"""
cmd = 'isula run %s --runtime %s' % (options, runtime)
for key, value in kwargs.items():
if isinstance(value, list):
for elem in value:
cmd += " --%s" % key
cmd += " %s" % elem
else:
cmd += " --%s" % key
cmd += " %s" % value
cmd += " %s sh" % image
LOG.info("run command: %s", cmd)
self.isula_run_cmd = cmd
def run_isula(self, options, runtime, image, **kwargs):
"""run a new isula container"""
self.make_isula_cmd(options, runtime, image, **kwargs)
LOG.info("isula run:")
return subprocess.run(self.isula_run_cmd, shell=True, check=True, stdout=PIPE).stdout.decode('utf-8')
def stop_isula(self, container):
"""stop isula container, input container id or name"""
LOG.info("isula stop %s" % container)
cmd = "isula stop %s" % container
subprocess.run(cmd, shell=True, check=True)
def remove_isula(self, container):
"""remove isula container, input container id or name"""
LOG.info("isula rm %s" % container)
cmd = "isula rm %s" % container
subprocess.run(cmd, shell=True, check=True)
def remove_isula_force(self, container):
"""force remove isula container, input container id or name"""
LOG.info("isula rm -f %s" % container)
cmd = "isula rm -f %s" % container
subprocess.run(cmd, shell=True, check=True)
def replace_configuration(self, cig_name):
"""replace origin kata configuration"""
target_path = "%s/%s" % (self.config_path, cig_name)
assert os.path.exists(target_path)
LOG.info("replace configuration now...")
replace_cmd = "cp %s %s/configuration.toml" % (target_path, self.config_path)
subprocess.run(replace_cmd, shell=True, check=True)

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/openeuler-stratovirt.git
git@gitlife.ru:oschina-mirror/openeuler-stratovirt.git
oschina-mirror
openeuler-stratovirt
openeuler-stratovirt
v2.2.0-rc6