Skip to content

Consider reimplementing nagiosplugin.state as nagiosplugin.enums.State #70

@mpounsett

Description

@mpounsett

The current Warn class should be Warning or WARNING to conform to the Nagios Development Guidelines on return codes. However, simply renaming the class would occlude the Python Warning exception class.

A better approach would be if the return code/state values were an enum.

import enum

class State(enum.IntEnum):
   Ok = enum.auto()
   Warning = enum.auto()
   Critical = enum.auto()
   Unknown = enum.auto()

The nagiosplugin.states.worst() helper also becomes a lot simpler, if it's even necessary anymore.

def worst(states):
   if not states:
      return State.Ok
   return sorted(states)[-1]

Usage for this would fix the issue raised by #26, and would look something like this:

>>> from nagiosplugin.enums import State, worst
>>> State.Ok
<State.Ok: 1>
>>> State.Ok.value
1
>>> State.Ok.name
'Ok'
>>> State.Ok.name.lower()
'ok'
>>> State.Ok > State.Critical
False
>>> State.Critical > State.Ok
True
>>> worst([State.Critical, State.Ok, State.Unknown])
<State.Unknown: 4>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions