← Back to team overview

nagios-charmers team mailing list archive

Re: [Merge] ~andre-ruiz/charm-nagios/+git/charm-nagios-implement-traps:master into charm-nagios:master

 

Review: Needs Fixing

I think this looks fairly reasonable.  There's a few things I'd like changed if possible, although they're generally rather small.

Diff comments:

> diff --git a/files/NAGIOS-NOTIFY-MIB b/files/NAGIOS-NOTIFY-MIB
> new file mode 100644
> index 0000000..03b4c07
> --- /dev/null
> +++ b/files/NAGIOS-NOTIFY-MIB
> @@ -0,0 +1,620 @@
> +NAGIOS-NOTIFY-MIB DEFINITIONS ::= BEGIN

Minor suggestion: can we move the MIB files into a subdir, files/mibs/?  Just to be a little cleaner.

> +  IMPORTS
> +    MODULE-IDENTITY, OBJECT-TYPE,  NOTIFICATION-TYPE,
> +    Integer32, Gauge32
> +      FROM SNMPv2-SMI
> +    nagios,NotifyType,HostStateID,HostStateType,ServiceStateID
> +      FROM NAGIOS-ROOT-MIB;
> +
> +nagiosNotify MODULE-IDENTITY
> +  LAST-UPDATED "200503090000Z" -- March 9, 2005
> +  ORGANIZATION "Nagios"
> +  CONTACT-INFO
> +      " Subhendu Ghosh
> +      
> +      Telephone: +1 201 232 2851
> +      Email: sghosh@xxxxxxxxxxxxxxxxxxxxx
> +
> +      Nagios Information:
> +        http://www.nagios.org
> +      "
> +  DESCRIPTION
> +      "Objects for Nagios(tm) events.  There are 2 primary tables
> +      reflecting the division in Nagios for Host events and
> +      Service events.
> +
> +      The event tables are extended by the HostNotifyTable and the 
> +      ServiceNotifyTable to keep track of the notifications based on events.
> +      
> +      The tables entries themselves are not accessible but are used for OID
> +      entries for TRAP/INFORM notifications.
> +
> +      These objects are based on the macros defined in Nagios v2.0
> +      "
> +  REVISION "200503090000Z" -- March 9, 2005
> +  DESCRIPTION
> +       "Spell check"
> +  REVISION "200501200000Z" --January 20, 2005
> +  DESCRIPTION
> +      "Initial Version"
> +	::= { nagios 1 }
> +
> +
> +nagiosHostEventTable OBJECT-TYPE 
> +  SYNTAX      SEQUENCE OF HostEventEntry
> +  MAX-ACCESS  not-accessible
> +  STATUS      current
> +  DESCRIPTION
> +    "Table of Nagios host events"
> +  ::= { nagiosNotify 1 }
> +
> +HostEventEntry ::= SEQUENCE {
> +  nHostEventIndex    Integer32,
> +  nHostname          OCTET STRING,
> +  nHostAlias         OCTET STRING,
> +  nHostStateID       HostStateID,
> +  nHostStateType     HostStateType,
> +  nHostAttempt       Integer32,
> +  nHostDurationSec   Integer32,
> +  nHostGroupName     OCTET STRING,
> +  nHostLastCheck     INTEGER,
> +  nHostLastChange    INTEGER,
> +  nHostLastUp        INTEGER,
> +  nHostLastDown      INTEGER,
> +  nHostLastUnreachable INTEGER,
> +  nHostOutput        OCTET STRING,
> +  nHostPerfData      OCTET STRING
> +  }
> +  
> +nagiosHostEventEntry  OBJECT-TYPE
> +  SYNTAX      HostEventEntry
> +  MAX-ACCESS  not-accessible
> +  STATUS      current
> +  DESCRIPTION
> +    "Each notification event"
> +  INDEX { nHostEventIndex }
> +  ::= { nagiosHostEventTable 1 }
> +  
> +nHostEventIndex OBJECT-TYPE
> +  SYNTAX     Integer32 (1..65535)
> +  MAX-ACCESS not-accessible
> +  STATUS     current
> +  DESCRIPTION 
> +    "This object uniquely identifies this host event entry.  It is generated
> +		by the SNMP application and is not related to any Nagios data."
> +  ::= { nagiosHostEventEntry 1 }
> +
> +nHostname    OBJECT-TYPE
> +  SYNTAX     OCTET STRING
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION 
> +    "Hostname as specified in the Nagios configuration file."
> +  ::= { nagiosHostEventEntry 2 }
> +
> +nHostAlias   OBJECT-TYPE
> +  SYNTAX     OCTET STRING
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +    "The host alias as specified in the Nagios configuration file"
> +  ::= { nagiosHostEventEntry 3 }
> +  
> +nHostStateID OBJECT-TYPE
> +  SYNTAX     HostStateID
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +    "The host state as defined by the HOSTSTATEID macro"
> +  ::= { nagiosHostEventEntry 4 }
> +
> +nHostStateType  OBJECT-TYPE
> +  SYNTAX     HostStateType
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +    "The host state as defined by the HOSTSTATETYPE macro"
> +  ::= { nagiosHostEventEntry 5 }
> +  
> +nHostAttempt  OBJECT-TYPE
> +  SYNTAX     Integer32
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +    "The number of the current host check retry. For instance, if this is the 
> +    second time that the host is being rechecked, this will be the number two. 
> +    Current attempt number is really only useful when writing host event 
> +    handlers for soft states that take a specific action based on the host retry 
> +    number. The host state as defined by the HOSTSTATEID macro"
> +  ::= { nagiosHostEventEntry 6 }
> +
> +nHostDurationSec   OBJECT-TYPE
> +  SYNTAX     Integer32
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +   "A number indicating the number of seconds that the host has spent in its 
> +   current state"
> +  ::= { nagiosHostEventEntry 7 }
> +  
> +nHostGroupName   OBJECT-TYPE
> +  SYNTAX     OCTET STRING
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +    "The short name of the hostgroup that this host belongs to. This value is 
> +    taken from the hostgroup_name directive in the hostgroup definition. If the 
> +    host belongs to more than one hostgroup this macro will contain the name of
> +    just one of them."
> +  ::= { nagiosHostEventEntry 8 }
> +  
> +nHostLastCheck  OBJECT-TYPE
> +  SYNTAX     INTEGER
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +   "This is a timestamp in time_t format (seconds since the UNIX epoch) 
> +   indicating the time at which a check of the host was last performed."
> +  ::= { nagiosHostEventEntry 9 }
> +
> +nHostLastChange  OBJECT-TYPE
> +  SYNTAX     INTEGER
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +   "This is a timestamp in time_t format (seconds since the UNIX epoch)
> +   indicating the time the host last changed state."
> +  ::= { nagiosHostEventEntry 10 }
> +
> +nHostLastUp  OBJECT-TYPE
> +  SYNTAX     INTEGER
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +    "This is a timestamp in time_t format (seconds since the UNIX epoch)
> +    indicating the time at which the host was last detected as being in an UP
> +    state."
> +  ::= { nagiosHostEventEntry 11 }
> +  
> +nHostLastDown OBJECT-TYPE
> +  SYNTAX     INTEGER
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +    "This is a timestamp in time_t format (seconds since the UNIX epoch)
> +    indicating the time at which the host was last detected as being in an
> +    DOWN state."
> +  ::= { nagiosHostEventEntry 12 }
> +
> +nHostLastUnreachable OBJECT-TYPE
> +  SYNTAX     INTEGER
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +    "This is a timestamp in time_t format (seconds since the UNIX epoch)
> +    indicating the time at which the host was last detected as being in an
> +    UNREACHABLE state."
> +  ::= { nagiosHostEventEntry 13 }
> +  
> +nHostOutput  OBJECT-TYPE
> +  SYNTAX     OCTET STRING
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +    "The text output from the last host check (i.e. Ping OK)."
> +  ::= { nagiosHostEventEntry 14 }
> +
> +nHostPerfData OBJECT-TYPE
> +  SYNTAX     OCTET STRING
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +    "This object contains any performance data that may have been returned 
> +    by the last host check."
> +  ::= { nagiosHostEventEntry 15 }
> +
> +
> +
> +--
> +-- Host Notifications
> +
> +nagiosHostNotifyTable OBJECT-TYPE
> +  SYNTAX     SEQUENCE OF HostNotifyEntry
> +  MAX-ACCESS  not-accessible
> +  STATUS      current
> +  DESCRIPTION
> +    "Table of Nagios host notifications"
> +  ::= {nagiosNotify 2}
> +
> +HostNotifyEntry ::= SEQUENCE {
> +  nHostNotifyType    NotifyType,
> +  nHostNotifyNum     Gauge32,    -- was Integer32,
> +  nHostAckAuthor     OCTET STRING,
> +  nHostAckComment    OCTET STRING
> +  }
> +
> +nagiosHostNotifyEntry  OBJECT-TYPE
> +  SYNTAX      HostNotifyEntry
> +  MAX-ACCESS  not-accessible
> +  STATUS      current
> +  DESCRIPTION
> +   "Nagios host notifications extends the nagiosHostEventTable when a
> +   notification is generated for an event."
> +  INDEX { nHostEventIndex }
> +  ::= { nagiosHostNotifyTable 1 }
> +
> +nHostNotifyType  OBJECT-TYPE
> +  SYNTAX     NotifyType
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION 
> +    "This identifies the type of notification that is being sent
> +    (PROBLEM, RECOVERY, ACKNOWLEDGEMENT, FLAPPINGSTART or FLAPPINGSTOP)"
> +  ::= { nagiosHostNotifyEntry 1 }
> +  
> +nHostNotifyNum OBJECT-TYPE
> +  SYNTAX     Gauge32    -- was NotifyType
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION 
> +    "This identifies the current notification number for the service or host.
> +		The notification number increases by one (1) each time a new notification
> +		is sent out for a host or service (except for acknowledgements). The 
> +		notification number is reset to 0 when the host or service recovers 
> +		(after the recovery notification has gone out). Acknowledgements do not
> +		cause the notification number to increase."
> +		::= { nagiosHostNotifyEntry 2 }
> +
> +nHostAckAuthor  OBJECT-TYPE
> +  SYNTAX     OCTET STRING
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +    "A string containing the name of the user who acknowledged the host 
> +    problem. This macro is only valid in notifications where the 
> +    $NOTIFICATIONTYPE$ macro is set to ACKNOWLEDGEMENT."
> +  ::= { nagiosHostNotifyEntry 3 } 
> +  
> +nHostAckComment   OBJECT-TYPE
> +  SYNTAX     OCTET STRING
> +  MAX-ACCESS read-only
> +  STATUS     current
> +  DESCRIPTION
> +    "A string containing the acknowledgement comment that was entered by 
> +    the user who acknowledged the host problem. This macro is only valid 
> +    in notifications where the $NOTIFICATIONTYPE$ macro is set to ACKNOWLEDGEMENT"  
> +  ::= { nagiosHostNotifyEntry 4 } 
> +
> +
> +-- 
> +-- Service Events 
> +-- 
> +
> +
> +nagiosSvcEventTable OBJECT-TYPE
> +  SYNTAX      SEQUENCE OF SvcEventEntry
> +  MAX-ACCESS  not-accessible
> +  STATUS      current
> +  DESCRIPTION
> +    "Table of Nagios service notifications"
> +  ::= { nagiosNotify 3 }
> +
> +SvcEventEntry ::= SEQUENCE {
> +  nSvcEventIndex    Integer32,
> +  nSvcHostname      OCTET STRING,
> +  nSvcHostAlias     OCTET STRING,
> +  nSvcHostStateID   HostStateID,
> +  nSvcHostStateType HostStateType,
> +  nSvcDesc          OCTET STRING,
> +  nSvcStateID       ServiceStateID,
> +  nSvcAttempt       Integer32,
> +  nSvcDurationSec   Integer32,
> +  nSvcGroupName     OCTET STRING,
> +  nSvcLastCheck     INTEGER,
> +  nSvcLastChange    INTEGER,
> +  nSvcLastOK        INTEGER,
> +  nSvcLastWarn      INTEGER,
> +  nSvcLastCrit      INTEGER,
> +  nSvcLastUnkn      INTEGER,
> +  nSvcOutput        OCTET STRING,
> +  nSvcPerfData      OCTET STRING
> +  }
> +
> +nagiosSvcEventEntry OBJECT-TYPE
> +  SYNTAX        SvcEventEntry
> +  MAX-ACCESS    not-accessible
> +  STATUS        current
> +  DESCRIPTION
> +    "Table of Nagios service events."
> +  INDEX { nSvcEventIndex }
> +  ::= { nagiosSvcEventTable 1 }
> +
> +nSvcEventIndex OBJECT-TYPE
> +  SYNTAX       Integer32 (1..65535)
> +  MAX-ACCESS   not-accessible
> +  STATUS       current
> +  DESCRIPTION
> +   "This object uniquely identifies this service event entry"
> +  ::= { nagiosSvcEventEntry 1 }
> +  
> +nSvcHostname      OBJECT-TYPE
> +  SYNTAX          OCTET STRING
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "Hostname as specified in the Nagios configuration file."
> +  ::= { nagiosSvcEventEntry 2 }
> +
> +nSvcHostAlias     OBJECT-TYPE
> +  SYNTAX          OCTET STRING
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "The host alias as specified in the Nagios configuration file"
> +  ::= { nagiosSvcEventEntry 3 }
> +  
> +nSvcHostStateID   OBJECT-TYPE
> +  SYNTAX          HostStateID
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "A number that corresponds to the current state of the service: 0=OK,
> +    1=WARNING, 2=CRITICAL, 3=UNKNOWN."
> +  ::= { nagiosSvcEventEntry 4 }
> +  
> +nSvcHostStateType OBJECT-TYPE 
> +  SYNTAX          HostStateType
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "Whether the host is in a hard or soft state."
> +  ::= { nagiosSvcEventEntry 5 }
> +  
> +nSvcDesc          OBJECT-TYPE
> +  SYNTAX          OCTET STRING
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "This value is taken from the description directive of the service
> +    definition."
> +  ::= { nagiosSvcEventEntry 6 }
> +
> +nSvcStateID       OBJECT-TYPE
> +  SYNTAX          ServiceStateID
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    " A number that corresponds to the current state of the service: 0=OK,
> +    1=WARNING, 2=CRITICAL, 3=UNKNOWN"
> +  ::= {  nagiosSvcEventEntry 7 }
> +  
> +nSvcAttempt       OBJECT-TYPE
> +  SYNTAX          Integer32
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "The number of the current service check retry. For instance, if this is
> +    the second time that the service is being rechecked, this will be the
> +    number two. Current attempt number is really only useful when writing
> +    service event handlers for soft states that take a specific action based
> +    on the service retry number."
> +  ::= { nagiosSvcEventEntry 8 }
> +
> +nSvcDurationSec   OBJECT-TYPE
> +  SYNTAX          Integer32
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "A number indicating the number of seconds that the service has spent in
> +    its current state."
> +  ::= { nagiosSvcEventEntry 9 }
> +
> +nSvcGroupName     OBJECT-TYPE
> +  SYNTAX          OCTET STRING
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "The short name of the servicegroup that this service belongs to. This
> +    value is taken from the servicegroup_name directive in the servicegroup
> +    definition. If the service belongs to more than one servicegroup this
> +    object will contain the name of just one of them."
> +  ::= { nagiosSvcEventEntry 10 }
> +
> +nSvcLastCheck     OBJECT-TYPE
> +  SYNTAX          INTEGER
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "This is a timestamp in time_t format (seconds since the UNIX epoch)
> +    indicating the time at which a check of the service was last performed."
> +  ::= { nagiosSvcEventEntry 11 }
> +
> +nSvcLastChange    OBJECT-TYPE
> +  SYNTAX          INTEGER
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "This is a timestamp in time_t format (seconds since the UNIX epoch)
> +    indicating the time the service last changed state."
> +  ::= { nagiosSvcEventEntry 12 }
> +
> +nSvcLastOK        OBJECT-TYPE
> +  SYNTAX          INTEGER
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "This is a timestamp in time_t format (seconds since the UNIX epoch)
> +    indicating the time at which the service was last detected as being in an
> +    OK state."
> +  ::= { nagiosSvcEventEntry 13 }
> +
> +nSvcLastWarn      OBJECT-TYPE
> +  SYNTAX          INTEGER
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "This is a timestamp in time_t format (seconds since the UNIX epoch)
> +    indicating the time at which the service was last detected as being in a
> +    WARNING state."
> +  ::= { nagiosSvcEventEntry 14 }
> +
> +nSvcLastCrit      OBJECT-TYPE
> +  SYNTAX          INTEGER
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "This is a timestamp in time_t format (seconds since the UNIX epoch)
> +    indicating the time at which the service was last detected as being in a
> +    CRITICAL state."
> +  ::= { nagiosSvcEventEntry 15 }
> +
> +nSvcLastUnkn      OBJECT-TYPE
> +  SYNTAX          INTEGER
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "This is a timestamp in time_t format (seconds since the UNIX epoch)
> +    indicating the time at which the service was last detected as being in an
> +    UNKNOWN state."
> +  ::= { nagiosSvcEventEntry 16 }
> +  
> +nSvcOutput        OBJECT-TYPE
> +  SYNTAX          OCTET STRING
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "The text output from the last service check (i.e. Ping OK)."
> +  ::= { nagiosSvcEventEntry 17 }
> +
> +nSvcPerfData      OBJECT-TYPE
> +  SYNTAX          OCTET STRING
> +  MAX-ACCESS      read-only
> +  STATUS          current
> +  DESCRIPTION
> +    "This object contains any performance data that may have been returned by
> +    the last service check."
> +  ::= { nagiosSvcEventEntry 18 }
> +
> +
> +-- 
> +-- Service Notifications
> +-- 
> +
> +nagiosSvcNotifyTable OBJECT-TYPE
> +  SYNTAX       SEQUENCE OF SvcNotifyEntry
> +  MAX-ACCESS   not-accessible
> +  STATUS       current
> +  DESCRIPTION
> +    "Table of Nagios service notifications."
> +  ::= { nagiosNotify 4 }
> +  
> +SvcNotifyEntry ::= SEQUENCE {
> +  nSvcNotifyType    NotifyType,
> +  nSvcNotifyNum     Gauge32,    -- Integer32,
> +  nSvcAckAuthor     OCTET STRING,
> +  nSvcAckComment    OCTET STRING
> +  }
> +
> +nagiosSvcNotifyEntry OBJECT-TYPE
> +  SYNTAX       SvcNotifyEntry
> +  MAX-ACCESS   not-accessible
> +  STATUS       current
> +  DESCRIPTION
> +    "Nagios service notifications extends the nagiosSvcEnevtsTable when
> +    a notification is generated for an event."
> +  INDEX { nSvcEventIndex }
> +  ::= { nagiosSvcNotifyTable 1}
> +  
> +  
> +nSvcNotifyType OBJECT-TYPE
> +  SYNTAX       NotifyType
> +  MAX-ACCESS   read-only
> +  STATUS       current
> +  DESCRIPTION
> +    "A string identifying the type of notification that is being sent
> +    (PROBLEM, RECOVERY, ACKNOWLEDGEMENT, FLAPPINGSTART or FLAPPINGSTOP)."
> +  ::= { nagiosSvcNotifyEntry 1 }
> +
> +nSvcNotifyNum  OBJECT-TYPE
> +  SYNTAX       Gauge32  -- Integer32
> +  MAX-ACCESS   read-only
> +  STATUS       current
> +  DESCRIPTION
> +    "The current notification number for the service or host. The notification
> +    number increases by one (1) each time a new notification is sent out for a
> +    host or service (except for acknowledgements). The notification number is
> +    reset to 0 when the host or service recovers (after the recovery
> +    notification has gone out). Acknowledgements do not cause the notification
> +    number to increase."
> +  ::= { nagiosSvcNotifyEntry 2 }
> +
> +nSvcAckAuthor  OBJECT-TYPE
> +  SYNTAX       OCTET STRING
> +  MAX-ACCESS   read-only
> +  STATUS       current
> +  DESCRIPTION
> +    "A string containing the name of the user who acknowledged the service
> +    problem. This object is only valid in notifications where the
> +    nSvcNotifyType object is set to ACKNOWLEDGEMENT."
> +  ::= { nagiosSvcNotifyEntry 3 }
> +
> +nSvcAckComment OBJECT-TYPE
> +  SYNTAX       OCTET STRING
> +  MAX-ACCESS   read-only
> +  STATUS       current
> +  DESCRIPTION
> +    "A string containing the acknowledgement comment that was entered by the
> +    user who acknowledged the service problem.  This object is only valid in
> +    notifications where the nSvcNotifyType object is set to ACKNOWLEDGEMENT."
> +  ::= { nagiosSvcNotifyEntry 4 }
> +    
> +
> +--
> +-- Events and Notifications
> +--
> +
> +nHostEvent  NOTIFICATION-TYPE
> +  OBJECTS { nHostname, nHostStateID, nHostStateType, nHostAttempt,
> +            nHostDurationSec, nHostGroupName, nHostLastCheck, nHostLastChange, 
> +            nHostOutput }
> +  STATUS  current
> +  DESCRIPTION
> +    "The SNMP trap that is generated as a result of an event with the host
> +    in Nagios."
> +
> +  ::= { nagiosNotify 5 }
> +
> +nHostNotify NOTIFICATION-TYPE
> +  OBJECTS { nHostNotifyType, nHostNotifyNum, nHostAckAuthor, nHostAckComment,
> +            nHostname, nHostStateID, nHostStateType, nHostAttempt,
> +            nHostDurationSec, nHostGroupName, nHostLastCheck, nHostLastChange,
> +            nHostOutput  }
> +  STATUS  current
> +  DESCRIPTION
> +    "The SNMP trap that is generated as a result of an event requiring
> +    notification for a host in Nagios."
> +  ::= { nagiosNotify 6 }
> +
> +nSvcEvent  NOTIFICATION-TYPE
> +  OBJECTS { nHostname, nHostStateID, nSvcDesc, nSvcStateID, nSvcAttempt,
> +            nSvcDurationSec, nSvcGroupName, nSvcLastCheck, nSvcLastChange,
> +            nSvcOutput }
> +  STATUS  current
> +  DESCRIPTION
> +    "The SNMP trap that is generated as a result of an event with the service
> +    in Nagios."
> +  ::= { nagiosNotify 7 }
> +
> +nSvcNotify NOTIFICATION-TYPE
> +  OBJECTS { nSvcNotifyType, nSvcNotifyNum, nSvcAckAuthor, nSvcAckComment,
> +            nHostname, nHostStateID, nSvcDesc, nSvcStateID, nSvcAttempt,
> +            nSvcDurationSec, nSvcGroupName, nSvcLastCheck, nSvcLastChange,
> +            nSvcOutput }
> +  STATUS  current
> +  DESCRIPTION
> +    "The SNMP trap that is generated as a result of an event requiring
> +    notification for a service in Nagios."
> +  ::= { nagiosNotify 8 }
> +
> +
> +END
> diff --git a/hooks/install b/hooks/install
> index f002e46..522448e 100755
> --- a/hooks/install
> +++ b/hooks/install
> @@ -67,6 +67,15 @@ dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw || :
>  dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3 || :
>  service nagios3 start
>  
> +# install files needed for sending snmp traps functionality
> +cp -v $CHARM_DIR/files/NAGIOS-NOTIFY-MIB /usr/share/snmp/mibs/
> +cp -v $CHARM_DIR/files/NAGIOS-ROOT-MIB /usr/share/snmp/mibs/
> +cp -v $CHARM_DIR/files/SNMPv2-MIB.txt /usr/share/snmp/mibs/
> +cp -v $CHARM_DIR/files/SNMPv2-SMI.txt /usr/share/snmp/mibs/
> +cp -v $CHARM_DIR/files/SNMPv2-TC.txt /usr/share/snmp/mibs/

If you move the mib files as requested above, don't forget to update this code to copy from $CHARM_DIR/files/mibs/.

> +cp -v $CHARM_DIR/files/send-host-trap /usr/local/bin/
> +cp -v $CHARM_DIR/files/send-service-trap /usr/local/bin/
> +
>  # For the admin interface
>  open-port 80
>  
> diff --git a/hooks/upgrade-charm b/hooks/upgrade-charm
> index a80743b..457cafe 100755
> --- a/hooks/upgrade-charm
> +++ b/hooks/upgrade-charm
> @@ -161,12 +165,38 @@ def enable_pagerduty_config():
>              os.remove(pagerduty_cron)
>  
>      # Update contacts for admin
> -    contactgroup_members = hookenv.config("contactgroup-members")
>      if enable_pagerduty:
>          # avoid duplicates
>          if "pagerduty" not in contactgroup_members:
>              contactgroup_members += ", pagerduty"

Here I have some concern.

I do know that this script heavily uses globals already, so I'm not complaining about adding one more - however, I think we should avoid modifying those globals at runtime, and treat them more like constants.  If someone edited this later, expecting to get the contactgroup-members config value out of the contactgroup_members global, they might be in for a surprise if they don't understand that it's being modified at runtime, which may not be obvious without reading the whole script.

While modifying the global like this is _not_ technically incorrect, can we instead construct a value based off of the config value and pass it into the update_contacts() method where it's finally used?  Just to be a little more on the safe side.

>  
> +def enable_traps_config():
> +    global contactgroup_members
> +
> +    send_traps_to = hookenv.config('send_traps_to')
> +
> +    if not send_traps_to:
> +        if os.path.isfile(traps_cfg):
> +            os.remove(traps_cfg)
> +        hookenv.log("Send traps feature is disabled")
> +        return
> +
> +    hookenv.log("Send traps feature is enabled, target address is %s" % send_traps_to)
> +
> +    if "managementstation" not in contactgroup_members:
> +        contactgroup_members += ", managementstation"
> +
> +    template_values = { 'send_traps_to': send_traps_to }
> +
> +    with open('hooks/templates/traps.tmpl','r') as f:
> +        templateDef = f.read()
> +
> +    t = Template(templateDef)
> +    with open(traps_cfg, 'w') as f:
> +        f.write(t.render(template_values))
> +
> +
> +def update_contacts():
>      template_values = {'admin_service_notification_period': hookenv.config('admin_service_notification_period'),
>                         'admin_host_notification_period': hookenv.config('admin_host_notification_period'),
>                         'admin_service_notification_options': hookenv.config('admin_service_notification_options'),


-- 
https://code.launchpad.net/~andre-ruiz/charm-nagios/+git/charm-nagios-implement-traps/+merge/385246
Your team Nagios Charm developers is subscribed to branch charm-nagios:master.


References