mirror of
https://github.com/certbot/certbot.git
synced 2026-08-01 19:02:52 +02:00
apache: expose aug_save errors in the debug log (#9169)
Fixes #9168. * apache: expose aug_save errors in the debug log * logger arguments wrong way around * log formatting Co-authored-by: Brad Warren <bmw@users.noreply.github.com>
This commit is contained in:
@@ -199,7 +199,13 @@ class ApacheParser:
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
self.configurator.save_notes = ""
|
self.configurator.save_notes = ""
|
||||||
self.aug.save()
|
|
||||||
|
ex_errs = self.aug.match("/augeas//error")
|
||||||
|
try:
|
||||||
|
self.aug.save()
|
||||||
|
except IOError:
|
||||||
|
self._log_save_errors(ex_errs)
|
||||||
|
raise
|
||||||
|
|
||||||
# Force reload if files were modified
|
# Force reload if files were modified
|
||||||
# This is needed to recalculate augeas directive span
|
# This is needed to recalculate augeas directive span
|
||||||
@@ -215,12 +221,15 @@ class ApacheParser:
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
# Check for the root of save problems
|
# Check for the root of save problems
|
||||||
new_errs = self.aug.match("/augeas//error")
|
new_errs = [e for e in self.aug.match("/augeas//error") if e not in ex_errs]
|
||||||
# logger.error("During Save - %s", mod_conf)
|
|
||||||
logger.error("Unable to save files: %s. Attempted Save Notes: %s",
|
for err in new_errs:
|
||||||
", ".join(err[13:len(err) - 6] for err in new_errs
|
logger.debug(
|
||||||
# Only new errors caused by recent save
|
"Error %s saving %s: %s", self.aug.get(err), err[13:len(err) - 6],
|
||||||
if err not in ex_errs), self.configurator.save_notes)
|
self.aug.get(f"{err}/message"))
|
||||||
|
logger.error(
|
||||||
|
"Unable to save files: %s.%s", ", ".join(err[13:len(err) - 6] for err in new_errs),
|
||||||
|
f" Save Notes: {self.configurator.save_notes}" if self.configurator.save_notes else "")
|
||||||
|
|
||||||
def add_include(self, main_config: str, inc_path: str) -> None:
|
def add_include(self, main_config: str, inc_path: str) -> None:
|
||||||
"""Add Include for a new configuration file if one does not exist
|
"""Add Include for a new configuration file if one does not exist
|
||||||
|
|||||||
@@ -35,6 +35,19 @@ class BasicParserTest(util.ParserTest):
|
|||||||
self.parser.aug.save = mock_save
|
self.parser.aug.save = mock_save
|
||||||
self.assertRaises(errors.PluginError, self.parser.unsaved_files)
|
self.assertRaises(errors.PluginError, self.parser.unsaved_files)
|
||||||
|
|
||||||
|
@mock.patch("certbot_apache._internal.parser.logger")
|
||||||
|
def test_bad_save_errors(self, mock_logger):
|
||||||
|
nx_path = "/non/existent/path.conf"
|
||||||
|
self.parser.aug.set("/augeas/load/Httpd/incl[last()]", nx_path)
|
||||||
|
self.parser.add_dir(f"/files{nx_path}", "AddDirective", "test")
|
||||||
|
|
||||||
|
self.assertRaises(IOError, self.parser.save, {})
|
||||||
|
mock_logger.error.assert_called_with(
|
||||||
|
'Unable to save files: %s.%s', '/non/existent/path.conf', mock.ANY)
|
||||||
|
mock_logger.debug.assert_called_with(
|
||||||
|
"Error %s saving %s: %s", "mk_augtemp",
|
||||||
|
"/non/existent/path.conf", "No such file or directory")
|
||||||
|
|
||||||
def test_aug_version(self):
|
def test_aug_version(self):
|
||||||
mock_match = mock.Mock(return_value=["something"])
|
mock_match = mock.Mock(return_value=["something"])
|
||||||
self.parser.aug.match = mock_match
|
self.parser.aug.match = mock_match
|
||||||
|
|||||||
Reference in New Issue
Block a user