Skip to content

Commit 8b62e40

Browse files
committed
Closes netbox-community#16307: Enable calling log_* methods on Script without a log message
1 parent dbcd89c commit 8b62e40

File tree

2 files changed

+23
-19
lines changed

2 files changed

+23
-19
lines changed

docs/customization/custom-scripts.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,11 @@ These two methods will load data in YAML or JSON format, respectively, from file
138138

139139
The Script object provides a set of convenient functions for recording messages at different severity levels:
140140

141-
* `log_debug(message, obj=None)`
142-
* `log_success(message, obj=None)`
143-
* `log_info(message, obj=None)`
144-
* `log_warning(message, obj=None)`
145-
* `log_failure(message, obj=None)`
141+
* `log_debug(message=None, obj=None)`
142+
* `log_success(message=None, obj=None)`
143+
* `log_info(message=None, obj=None)`
144+
* `log_warning(message=None, obj=None)`
145+
* `log_failure(message=None, obj=None)`
146146

147147
Log messages are returned to the user upon execution of the script. Markdown rendering is supported for log messages. A message may optionally be associated with a particular object by passing it as the second argument to the logging method.
148148

@@ -152,6 +152,8 @@ A script can define one or more test methods to report on certain conditions. Al
152152

153153
These methods are detected and run automatically when the script is executed, unless its `run()` method has been overridden. (When overriding `run()`, `run_tests()` can be called to run all test methods present in the script.)
154154

155+
Calling any of these logging methods without a message will increment the relevant counter, but will not generate an output line in the script's log.
156+
155157
!!! info
156158
This functionality was ported from [legacy reports](./reports.md) in NetBox v4.0.
157159

netbox/extras/scripts.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -480,19 +480,21 @@ def _log(self, message, obj=None, level=LogLevelChoices.LOG_DEFAULT):
480480
# A test method is currently active, so log the message using legacy Report logging
481481
if self._current_test:
482482

483-
# TODO: Use a dataclass for test method logs
484-
self.tests[self._current_test]['log'].append((
485-
timezone.now().isoformat(),
486-
level,
487-
str(obj) if obj else None,
488-
obj.get_absolute_url() if hasattr(obj, 'get_absolute_url') else None,
489-
str(message),
490-
))
491-
492483
# Increment the event counter for this level
493484
if level in self.tests[self._current_test]:
494485
self.tests[self._current_test][level] += 1
495486

487+
# Record message (if any) to the report log
488+
if message:
489+
# TODO: Use a dataclass for test method logs
490+
self.tests[self._current_test]['log'].append((
491+
timezone.now().isoformat(),
492+
level,
493+
str(obj) if obj else None,
494+
obj.get_absolute_url() if hasattr(obj, 'get_absolute_url') else None,
495+
str(message),
496+
))
497+
496498
elif message:
497499

498500
# Record to the script's log
@@ -509,19 +511,19 @@ def _log(self, message, obj=None, level=LogLevelChoices.LOG_DEFAULT):
509511
message = f"{obj}: {message}"
510512
self.logger.log(LogLevelChoices.SYSTEM_LEVELS[level], message)
511513

512-
def log_debug(self, message, obj=None):
514+
def log_debug(self, message=None, obj=None):
513515
self._log(message, obj, level=LogLevelChoices.LOG_DEBUG)
514516

515-
def log_success(self, message, obj=None):
517+
def log_success(self, message=None, obj=None):
516518
self._log(message, obj, level=LogLevelChoices.LOG_SUCCESS)
517519

518-
def log_info(self, message, obj=None):
520+
def log_info(self, message=None, obj=None):
519521
self._log(message, obj, level=LogLevelChoices.LOG_INFO)
520522

521-
def log_warning(self, message, obj=None):
523+
def log_warning(self, message=None, obj=None):
522524
self._log(message, obj, level=LogLevelChoices.LOG_WARNING)
523525

524-
def log_failure(self, message, obj=None):
526+
def log_failure(self, message=None, obj=None):
525527
self._log(message, obj, level=LogLevelChoices.LOG_FAILURE)
526528
self.failed = True
527529

0 commit comments

Comments
 (0)