Merge pull request #754 from YunoHost/fix-log_corrupted_md_file

[fix] Path not displayed in log_corrupted_md_file
This commit is contained in:
Alexandre Aubin 2019-08-04 18:01:53 +02:00 committed by GitHub
commit 0ad91b027c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 16 deletions

View file

@ -252,7 +252,7 @@
"invalid_url_format": "Invalid URL format",
"ip6tables_unavailable": "You cannot play with ip6tables here. You are either in a container or your kernel does not support it",
"iptables_unavailable": "You cannot play with iptables here. You are either in a container or your kernel does not support it",
"log_corrupted_md_file": "The yaml metadata file associated with logs is corrupted: '{md_file}'",
"log_corrupted_md_file": "The yaml metadata file associated with logs is corrupted: '{md_file}\nError: {error}'",
"log_category_404": "The log category '{category}' does not exist",
"log_link_to_log": "Full log of this operation: '<a href=\"#/tools/logs/{name}\" style=\"text-decoration:underline\">{desc}</a>'",
"log_help_to_get_log": "To view the log of the operation '{desc}', use the command 'yunohost log display {name}'",

View file

@ -33,9 +33,10 @@ from datetime import datetime
from logging import FileHandler, getLogger, Formatter
from moulinette import m18n, msettings
from moulinette.core import MoulinetteError
from yunohost.utils.error import YunohostError
from moulinette.utils.log import getActionLogger
from moulinette.utils.filesystem import read_file
from moulinette.utils.filesystem import read_file, read_yaml
CATEGORIES_PATH = '/var/log/yunohost/categories/'
OPERATIONS_PATH = '/var/log/yunohost/categories/operation/'
@ -102,13 +103,8 @@ def log_list(category=[], limit=None, with_details=False):
entry["started_at"] = log_datetime
if with_details:
with open(md_path, "r") as md_file:
try:
metadata = yaml.safe_load(md_file)
except yaml.YAMLError:
logger.warning(m18n.n('log_corrupted_md_file', file=md_path))
entry["success"] = metadata.get("success", "?") if metadata else "?"
metadata = read_yaml(md_path)
entry["success"] = metadata.get("success", "?") if metadata else "?"
result[category].append(entry)
@ -186,17 +182,19 @@ def log_display(path, number=None, share=False):
if os.path.exists(md_path):
with open(md_path, "r") as md_file:
try:
metadata = yaml.safe_load(md_file)
infos['metadata_path'] = md_path
infos['metadata'] = metadata
if 'log_path' in metadata:
log_path = metadata['log_path']
except yaml.YAMLError:
error = m18n.n('log_corrupted_md_file', file=md_path)
metadata = read_yaml(md_file)
except MoulinetteError as e:
error = m18n.n('log_corrupted_md_file', md_file=md_path, error=e)
if os.path.exists(log_path):
logger.warning(error)
else:
raise YunohostError(error)
else:
infos['metadata_path'] = md_path
infos['metadata'] = metadata
if 'log_path' in metadata:
log_path = metadata['log_path']
# Display logs if exist
if os.path.exists(log_path):