nagios-charmers team mailing list archive
-
nagios-charmers team
-
Mailing list archive
-
Message #00947
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