Changes in 0.4.9 (Apr 30 2013)

New Features:
    - pynag cli now has livestatus subcommand
    - pynag cli multiple changes to make it more friendly to bash scripts
    - --quiet option
    - --seperator option
    - pynag cli has acknowledge and downtime subcommands
    - pynag.Model.*.delete() now are more context aware and remove references
      from other objects
    - More features in pynag.Utils.GitRepo
    - Parser for retention.dat created
    - pynag.utils.grep_to_livestatus() to convert from pynag style filters to
      livestatus style filters
    - add_to_contactgroup() created for pynag.Model.Services, Hosts, and
      Contacts
    - New functions pynag.Utils.grep(). Model filter() will use this in the
      future.
    - pynag.Model - object definitions now implement sort()
    - pynag.Parsers.Logfiles added to parse nagios log files
    
Bugfixes:
    - Multiple doctest and unittest fixes and improvements to code quality
    - send_nsca - revert back to tabs instead of spaces
    - Fix unhandled traceback with pynag copy
    - Fix bug where directories with ending .cfg were parsed as files
    - PluginHelper fixed in accordance to 
      http://nagiosplugins.org/rfc/new_threshold_syntax


Changes in 0.4.8 (Dec 10 2012)

New Features:
    - MK Livestatus integration in pynag.Parsers.mk_livestatus
    - Testing framework for plugins in scripts/plugintest
    - Control.Command now uses livestatus if available.
    - pynag.Plugins.PluginHelper() prototype
    - Support for Nagios plugins new threshold format

Bugfixes:
    - New Service() objects with no host_name are not saved in None/service_description anymore.
    - GitEventHandler could not list files with spaces
    - pynag.Plugins.simple.check_range was very broken, fixed and added testing framework
      for pynag.Plugins
    - Fix for correctly returning exit codes in Control.daemon()
    - Static file parser now skips line not in format of key=value
    - pynag.Parsers.status.get_hoststatus() and pynag.Parsers.status.get_servicestatus() should raise a ValueError rather than return it.
    - timeperiod_name and alias were incorrectly saved 
    - Unhandled exception in contact.get_effective_services()

Changes in 0.4.7 (Oct 26 2012)

New Features:
    - pynag cli: new parameter --debug
    - pynag cli: new parameter --version
    - Parsers.config.get_cfg_value() implemented
    - Parsers.config.get_pid() implemented
    - New Module: pynag.Control.Command for interactions with command_pipe
    - Parsers.config.get_pid() implemented

Bugfixes:
    - Discrepancy in CLI where filters between list and delete
    - CLI now prints nice error message instead of stacktrace on errors
    - ObjectFetcher.filter(): parameters ending in __isnot were always treated as an OR condition.
    - "pynag execute" now works with services that define hostgroups instead of host_name
    - Fixed macro resolving issues for services with hostgroups defined instead of host_name
    - Fixed Default initilization of ObjectRelations.hostgroup_subgroups
    - Bugfix: Nagios needs_reload() always returns false
    - Bugfix: pynag.Parsers.config.needs_reload() always returns false
    - Bugfix: Inverted conditions on pynag.Plugins.simple.check_range()
    - Bugfix: Unhandled exception in pynag.Plugins.simple where must_thresholds=False


Changes in 0.4.6 (Sep 16 2012)

New Features:
    - CLI Improvements
    - manpage for pynag CLI updated
    - New module Utils created
    - Experimental new get_status() for ObjectDefinition
    - Reworked GitEventHandler
    - new function, Control.daemon.status()
    - Experimental Perfdata analysis support

Bugfixes:
    - Various bugfixes for get_effective_*groups()
    - Various bugfixes in Parsers.config._edit_static_file()
    - needs_reload() now compares timestamps with object_cache_file instead of lockfile
    - Removed unneeded error handling from Control.daemon class
    - Model filter, bugfix in __isnot= parameter

Changes in 0.4.5 (Aug 21 2012)

Bugfixes:
    - popen2 import moved to send_nsca() to hide deprecationwarning
    - pynag.Model no longer depends on defaultdict to work (for python 2.4)
    - Removed dependency on defaultdict (does not exist on python 2.4)
    - When permission problems occur for reading status.dat, exception is
      now thrown in parse() rather than init()
    - Version number is now correct
    - debian subdir moved to debian.upstream for packaging



Changes in 0.4.4 (Aug 20 2012)

New Features:
    - Host.copy(recursive=True) now recursively copies services
    - README moved to markdown format (palli@opensource.is)
    - Parsers.status class reworked. Now support get_servicestatus()
    - filter() now supports __exists suffix for as a search condition
    - Major rework og object relations and object cache (palli@opensource.is)
Bugfixes:
    - get_all_macros returns empty hash map on non-existant check_command
    - New get_effective_* functions i.e. Host.get_effective_contacts()
    - ObjectDefinition.get_id() changed from md5sum to built-in __hash__()
    - Fixes to get_effective_command_line() where macro within another macro was
      not properly solved. (palli@opensource.is)
    - GitEventHandler changed to use subprocess module instead of GitPython

    - Support for nagios's ambigious Timeperiod format.
    - check_thresholds() added (Issue 22) (palli@opensource.is)
    - check_range() conditions now inverted (Fixes issue 22)
    - /usr/local/nagios/etc/ added to paths where nagios.cfg might be found (Thanks
      Abhinav Upadhyay)
    - pycharm code inspection cleanup (palli@opensource.is)

Changes in 0.4.3 (Jul 13 2012)

Bugfixes:
    - Model: Objectdefinition.delete() cascade parameter renamed to recursive.
    Recursive implemented for host.

    - Various fixes where nagios.cfg is not located in /etc/nagios/
    
    - Improvements to build process 

    - Parsers: Exception handling loosened to not catch kill signals

    - Model: calling filter() with __has_field now works on items seperated by ", "      

Changes in 0.4.2

New features:
    - new command-line tool pynag introduced (deprecated pynag-maincfg, etc).
    pynag utility offers an easy way to create/update/delete configuration
    objects from the command line. (palli@opensource.is)

    - Model: ObjectDefinition.attributes are now defined according to
    documentation, no longer dynamically created in order to ensure consistency
    (palli@opensource.is)

    - Model: run_check_command() available for hosts and services
    (palli@opensource.is)

    - Parsers: Working with comma seperated attribute values now easier
    via new AttributeList class (palli@opensource.is)

    - Model: copy() feature added to ObjectDefinitions.
    (palli@opensource.is)

Bugs fixed:
    - Model, ObjectDefinition.copy() now returns a copy of the newly created object

    - Parsers, Appending cfg_dir to nagios maincfg and pathnames dont match
    exactly what is in config before (for example double slashes would cause a
    duplicate)

    - Parsers: Cache is no longer reloaded as often (improves performance)
    (palli@opensource.is)

    - Parsers: Properly raise ParserError if unexpected '}' is encountered
    while Parsing (palli@opensource.is)

    - Parsers: ParserError class now has cleaner more detailed output
    (palli@opensource.is)

    - Model: get_all_macros() now returns custom macros (palli@opensource.is)

    - Fixed key errors where data is not present (tommi@tommi.org)

    - Parsers: improvements to reload_cache() to fix memory leak in save()

    - Code cleanup ala Eclipse python analyser. Unused variables etc removed.

Changes in 0.4.1

    Plugins
    Fix to check_range which now support multiple status lines
    Modifications for python-2.3 support

    Scripts
    Added pynag-maincfg which allows for editing nagios.cfg
    Added pynag-addservice for easy addition of services

    Model
    Ability to set filename for new objects
    save() now works on when changing 'use'
    Modifications for python-2.3 support

    Parsers
    typo fixed in edit_service 
    Memory leak fix
    Added servicedependency and hostdependency support

    EventHandlers
    Added GitEventHandler which automaticly commits to git



Changes in 0.4.0

Features added:
        - Model, New module that turns configuration into python objects
        - Parsers, major refactoring


Changes in 0.3.1

Bugs Fixed:
        - Plugin, Fixed joinallstr, wasn't being added between severity levels.

Features added:
        - Plugin, Add must_threshold variable for programs that do not need classic -w or -c
        - Plugin, allow add_arg to be specified multiple times if multiple=True specified
        - Plugin, removed space character between severity and colon, "OK:" instead of "OK :"




Changes in 0.3

Bugs Fixed:


Features added:
        - Plugin add_messages() and check_messages()
        - new build system for easier RPM creation


Misc Changes:


New Contributors:

    Tomas Ewdardsson, Pall Sigurdsson
