Слияние кода завершено, страница обновится автоматически
# 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.
"""Some qmp functions"""
import re
from utils.exception import QMPError
def dictpath(dictionary, path):
"""Traverse a path in a nested dict"""
index_re = re.compile(r'([^\[]+)\[([^\]]+)\]')
for component in path.split('/'):
match = index_re.match(component)
if match:
component, idx = match.groups()
idx = int(idx)
if not isinstance(dictionary, dict) or component not in dictionary:
raise QMPError('failed path traversal for "%s" in "%s"' % (path, str(dictionary)))
dictionary = dictionary[component]
if match:
if not isinstance(dictionary, list):
raise QMPError('path component "%s" in "%s" is not a list in "%s"' %
(component, path, str(dictionary)))
try:
dictionary = dictionary[idx]
except IndexError:
raise QMPError('invalid index "%s" in path "%s" in "%s"' % (idx, path, str(dictionary)))
return dictionary
def assert_qmp_absent(dictionary, path):
"""Assert that the path is invalid in 'dictionary'"""
try:
result = dictpath(dictionary, path)
except AssertionError:
return
raise QMPError('path "%s" has value "%s"' % (path, str(result)))
def assert_qmp(dictionary, path, value):
"""
Assert that the value for a specific path in a QMP dict
matches. When given a list of values, assert that any of
them matches.
"""
result = dictpath(dictionary, path)
# [] makes no sense as a list of valid values, so treat it as
# an actual single value.
if isinstance(value, list) and value != []:
for val in value:
if result == val:
return
raise QMPError('no match for "%s" in %s' % (str(result), str(value)))
assert result == value
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )