Skip to content

Commit

Permalink
Severity_level was override when task is flag as failed (#612)
Browse files Browse the repository at this point in the history
  • Loading branch information
FloLaco committed Nov 27, 2020
1 parent 4efe021 commit 82b531c
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 6 deletions.
2 changes: 1 addition & 1 deletion docs/tutorial/failed_tasks.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@
"\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31m---- Greeting is the polite thing to do ** changed : False --------------------- ERROR\u001b[0m\n",
"\u001b[0mTraceback (most recent call last):\n",
" File \"/home/dbarroso/workspace/dbarrosop/nornir/nornir/core/task.py\", line 98, in start\n",
" File \"/home/dbarroso/workspace/dbarrosop/nornir/nornir/core/task.py\", line 99, in start\n",
" r = self.task(self, **self.params)\n",
" File \"<ipython-input-1-3ab8433d31a3>\", line 20, in say\n",
" raise Exception(\"I can't say anything right now\")\n",
Expand Down
4 changes: 2 additions & 2 deletions docs/tutorial/task_results.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@
"\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31m---- Greeting is the polite thing to do ** changed : False --------------------- ERROR\u001b[0m\n",
"\u001b[0mTraceback (most recent call last):\n",
" File \"/home/dbarroso/workspace/dbarrosop/nornir/nornir/core/task.py\", line 98, in start\n",
" File \"/home/dbarroso/workspace/dbarrosop/nornir/nornir/core/task.py\", line 99, in start\n",
" r = self.task(self, **self.params)\n",
" File \"<ipython-input-1-c084194db610>\", line 19, in say\n",
" raise Exception(\"I can't say anything right now\")\n",
Expand Down Expand Up @@ -244,7 +244,7 @@
"\u001b[0m\n",
"\u001b[0m\u001b[1m\u001b[31m---- Greeting is the polite thing to do ** changed : False --------------------- ERROR\u001b[0m\n",
"\u001b[0mTraceback (most recent call last):\n",
" File \"/home/dbarroso/workspace/dbarrosop/nornir/nornir/core/task.py\", line 98, in start\n",
" File \"/home/dbarroso/workspace/dbarrosop/nornir/nornir/core/task.py\", line 99, in start\n",
" r = self.task(self, **self.params)\n",
" File \"<ipython-input-1-c084194db610>\", line 19, in say\n",
" raise Exception(\"I can't say anything right now\")\n",
Expand Down
12 changes: 9 additions & 3 deletions nornir/core/task.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@


logger = logging.getLogger(__name__)
DEFAULT_SEVERITY_LEVEL = logging.INFO


class Task(object):
Expand Down Expand Up @@ -45,7 +46,7 @@ def __init__(
global_dry_run: bool,
processors: "Processors",
name: str = None,
severity_level: int = logging.INFO,
severity_level: int = DEFAULT_SEVERITY_LEVEL,
parent_task: Optional["Task"] = None,
**kwargs: str
):
Expand Down Expand Up @@ -120,7 +121,12 @@ def start(self, host: "Host") -> "MultiResult":
r = Result(host, exception=e, result=tb, failed=True)

r.name = self.name
r.severity_level = logging.ERROR if r.failed else self.severity_level

if r.severity_level == DEFAULT_SEVERITY_LEVEL:
if r.failed:
r.severity_level = logging.ERROR
else:
r.severity_level = self.severity_level

self.results.insert(0, r)

Expand Down Expand Up @@ -207,7 +213,7 @@ def __init__(
diff: str = "",
failed: bool = False,
exception: Optional[BaseException] = None,
severity_level: int = logging.INFO,
severity_level: int = DEFAULT_SEVERITY_LEVEL,
**kwargs: Any
):
self.result = result
Expand Down
31 changes: 31 additions & 0 deletions tests/core/test_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,19 @@ def a_task_for_testing(task, fail_on=None):
return Result(host=task.host, stdout=task.host.name)


def a_failed_task_for_testing(task):
return Result(host=task.host, stdout=task.host.name, failed=True)


def a_failed_task_for_testing_overrides_severity(task):
return Result(
host=task.host,
stdout=task.host.name,
failed=True,
severity_level=logging.CRITICAL,
)


def a_task_to_test_dry_run(task, expected_dry_run_value, dry_run=None):
assert task.is_dry_run(dry_run) is expected_dry_run_value

Expand Down Expand Up @@ -127,6 +140,24 @@ def test_severity(self, nornir):
assert result[0].severity_level == logging.WARN
assert result[1].severity_level == logging.DEBUG

r = nornir.run(a_failed_task_for_testing)
for host, result in r.items():
assert result[0].severity_level == logging.ERROR
# Reset all failed host for next test
nornir.data.reset_failed_hosts()

r = nornir.run(a_failed_task_for_testing, severity_level=logging.WARN)
for host, result in r.items():
assert result[0].severity_level == logging.ERROR
# Reset all failed host for next test
nornir.data.reset_failed_hosts()

r = nornir.run(a_failed_task_for_testing_overrides_severity)
for host, result in r.items():
assert result[0].severity_level == logging.CRITICAL
# Reset all failed host for next test
nornir.data.reset_failed_hosts()

def test_dry_run(self, nornir):
host = nornir.filter(name="dev3.group_2")
r = host.run(a_task_to_test_dry_run, expected_dry_run_value=True)
Expand Down

0 comments on commit 82b531c

Please sign in to comment.