0.5 (13-SEP-2010)
*****************

Migration
=========
Before performing any operation on NOC upgrade be sure:

* You have mercurial 1.3 or later
* python's system path contain no *protobuf* or *south*

With 0.5 release new application permission system introduced, leaving old
Django permissions obsolete. You need to reassing user permissions after upgrade.

General
=======
New site
--------
All NOC resources gathered together into single site:
http://redmine.nocproject.org/projects/noc

New Application Framework
-------------------------
0.5 release is a major step towards open telecom application platform. New
django-based application framework supports common development patterns
while containing a lot of telecom-related features. Web interface was completely
rewritten as a set of applications.

Four basic application classes are introduced:

* Applications - common application
* ModelApplication - wrapper for django's ModelAdmin, integrating django-based code in new framework
* Reports - common reporting engine
* SAApplication - Service Activation application wrapping map/reduce tasks

Each application define own set of permissions for granular access. Unittests included with every application,
helping to maintain code quality

Django 1.2 migration
--------------------
0.5 release based on Django 1.2, so all Django 1.2 enhancements immediately accessible from NOC applications.

New and updated third-party software in contrib/
------------------------------------------------
contrib/ directory of 0.5 contains new packages
and updated versions of following packages.

================ =======
WebOb            0.9.8
WebTest          1.2.1
South            0.7.1
docutils         0.7
Django           1.2
django-tagging   0.3.1
jquery-ui        1.8
Protocol Buffers 2.3.0
================ =======

Testig Suite
------------
0.5 release introduce new WebTest-based unittest suite with coverage reporting

Tagging
-------
0.5 release introduce tagging as universal method for additional classification
of database objects

Global CSV Export/Import
------------------------
0.5 release offers universal way to exchange data with scripts and third-party application
by importing/exporting CSV file.

Data exchange can be performed via CLI, using::

    manage.py csv-export
    manage.py csv-import
    
commands, or via Web interface (*Import* link and *Export selected objects* admin action)

Helper scripts
--------------
Two additional helper scripts to gather diagnostic information introduced in 0.5 release

* manage.py pythonpath - display python path
* scripts/about - dump software components and versions for bugreports

NOC Book
--------
Starting from 0.5 release all documentation gathered together into `NOC Book <http://redmine.nocproject.org/projects/noc/docs/en/nocbook/html/index.html>`_,
available online

Main
====
* New user and group permission setup widget
* "Test selected notification groups" admin action
* NOC's configuration files are stored in backups too
* "Pending Notifications" application

Address Space Management
========================
Bind to VC
----------
* Arbitrary VC can be bound to arbitrary block

Improved navigation
-------------------
* Block preview got new text field for quick jump to entered block
* User can set bookmarks on arbitrary page. Bookmarked blocks can easily be accessed via My Networks drop list

All Allocated Blocks Application
--------------------------------
* New "All Allocated Blocks" report introduced. All allocated blocks shown in collapsed tree for overall analysis

Improved Navigation
-------------------
* Quick jump in "Assigned Addresses"
* IPv4 Block Bookmarks

Service Activation
==================

New profiles
------------
0.5 release introduces support for 6 new platforms

* :ref:`HP.ProCurve`
* :ref:`Extreme.XOS`
* :ref:`Cisco.CatOS`
* :ref:`Brocade.FabricOS`
* :ref:`AlliedTelesis.AT8000S`
* :ref:`AlliedTelesis.AT8500`

In addition, :ref:`Generic.Host` offers a stub profile for managed objects
without any specific personality.

Topology discovery
------------------
Experimental L2 topology discovery application introduced in 0.5 release.
The distinctive features of NOC topology discovery are:

* Works on L2 with physical links
* Aggregated-Ethernet (LAG) - aware
* Vendor-independend
* Supports different discovery algorithms, some algorithms can be used to refine results of another
* Can support vendor-specific extensions
* MAC Address (common and per-vlan) and LLDP discovery algorithms bundled

New Applications
----------------
Version Inventory
^^^^^^^^^^^^^^^^^
Simple application generating version and platform report for selected objects

MAC Report
^^^^^^^^^^
Displays MAC Addresses, and all ports that learned them

Show switchports
^^^^^^^^^^^^^^^^
Display existing switchports and VLAN mappings

Run Commands
^^^^^^^^^^^^
Run a series of commands on all selected object and display result

Switchport Validation
^^^^^^^^^^^^^^^^^^^^^
Check all VLANs mapped to switchport has active mac address and display report

Check supported.csv
^^^^^^^^^^^^^^^^^^^
Generate diffs for supported.csv for selected objects

New interfaces
--------------
IReduceTask
^^^^^^^^^^^
Common interface for reduce tasks

IGetPortchannel
^^^^^^^^^^^^^^^
Interface for retrieving port-channel status and vlan mappings via *.*.get_portchannel scripts.
0.5 release includes support for :ref:`Force10.FTOS`, :ref:`Cisco.IOS` and :ref:`HP.ProCurve` profiles

IGetInterfaceStatus
^^^^^^^^^^^^^^^^^^^
Interface for retrieving operation status of interfaces via *.*.get_interface_status scripts.
0.5 release includes support for :ref:`Force10.FTOS` profiles.

IGetSwitchport
^^^^^^^^^^^^^^
Interface for retrieving switchport status and vlan mappings via *.*.get_switchport scripts.
0.5 release includes support for :ref:`Force10.FTOS` profiles.

IGetChassisID
^^^^^^^^^^^^^
Interface for retrieving chassis MAC address via *.*.get_chassis_id scripts.
0.5 release includes support for :ref:`Force10.FTOS`, :ref:`Cisco.IOS` and :ref:`HP.ProCurve` profiles.

IGetLLDPNeighbors
^^^^^^^^^^^^^^^^^
Interface for retrieving LLDP neighbors information via *.*.get_lldp_neighbors sscrips.
0.5 release includes support for :ref:`Force10.FTOS`, :ref:`Cisco.IOS` and :ref:`HP.ProCurve` profiles.

New scripts
-----------
O.5 release includes new scripts extending functionality of existing profiles:

* DLink.DES3xxx.get_mac_address_table
* DLink.DGS3xxx.get_mac_address_table
* DLink.DES3xxx.get_arp
* DLink.DGS3xxx.get_arp
* HP.ProCurve.get_mac_address_table
* HP.GbE2.get_mac_address_table
* Alcatel.OS62xx.get_mac_address_table

SNMP Bulk Operations
--------------------
0.5 intruduces support for SNMP BULK operations, greatly improving performance of SNMP code

API Enhancements
----------------
* Profile.pattern_more can accept a list of (pattern,command), leaving .pattern_more_start, .pattern_more_end, .command_more_start, .command_more_end obsolete
* Profile.cleaned_input method for profile-specific input cleanup
* Profile.rogue_chars can accept regular expressions
* InstanceOfParameter can accept string as class name
* self.snmp.gethext() can accept min_index and max_index optional parameters to narrow GET range
* HP-like mac addresses (*aabbcc-ddeeff*) are processed correctly
* Interfaces can perform separate cleaning of input and output arguments via Interfaces.script_clean_input() and Interfaces.script_clean_output() methods
* Profile.convert_interface_name() performs interface name normalization
* InterfaceNameParameter introduces to handle interface names
* All equipment output between authentication and first prompt collected and accessible via *self.motd* construction in scripts
* ReduceTask.create_task can accept a list in *map_script* to perform several different scripts at once
* self.script.has_script(...) construction for scripts
* pyRules can be used as reduce scripts
* xml_to_table() and list_to_ranges() helper methods
* self.hexstring_to_mac() helper method for scripts

User Interface Improvements
---------------------------
* Object groups deprecated and removed in favor of tags
* Search by selector's name in Managed Object Selectors
* Display selector description in index list
* Access to the Managed Object can be granted to group
* Display progressbar when executing map/reduce task
* Merge "is_managed" and "is_configuration_managed" into single "Status" column in Managed Objects list
* Sort object's scripts by name

Improved Compatibility and Reliability
--------------------------------------
* Intelligent echo stripping and adaptive prompt patterns in CLI engine
* TimeOutError raise when snmp.getnext left in stale state
* Improved compatibility with Cisco 3750/CBS31X0
* Correct handling of MapTask.retries_left parameter
* Do not count map task, completed with ERR_OVERLOAD as retry
* SAE terminates all activator's task when connection became lost
* Do not hang ssh session when remote host key changed
* Run objects scripts as map/reduce task
* manage.py debug-script can debug snmp code correctly
* Better error messages for DictParameter's InterfaceErrors
* Display failure details when script failed

Fault Management
================

New Event Classes
-----------------
* Authonegotiation Failed
* LBD Loop Detected
* LBD Loop Recovered

New MIBs
--------
* RMON-MIB
* TOKEN-RING-RMON-MIB
* RMON2-MIB
* P-BRIDGE-MIB
* Q-BRIDGE-MIB
* JUNIPER-JS-SMI
* JUNIPER-JS-SCREENING-MIB

New Rules
---------
* Zyxel.ZyNOS Authonegotiation Failed SYSLOG
* DLink.DES3xxx Login Success SYSLOG
* DLink.DES3xxx Logout SYSLOG
* DLink.DES3xxx Login Failed SYSLOG
* DLink.DES3xxx Session timed out SYSLOG
* DLink.DES3xxx LBD Loop Detected SYSLOG

"Ignore Event" rules
--------------------
0.5 release introduces "Ignore Event" rules as new method to strip unwanted events just at collector, protecting
database and classifier from overload

User Interface improvements
---------------------------
* Default names for classification rules, created from events, follow common convention
* "python code" admin action for event classes and classification rules
* Rule sheet preview replaced by "Classification Rules" report
* Object information added to subject and body of notifications, sent from post-processing rules

API Changes
-----------
* EventClass.trigger replaced by pyRule
* *event* variable accessible from event templates

Virtual Circuit Management
==========================
* VLAN import rewritten as map/reduce task

Peering Management
==================
* 32-bit ASN support

Knowledge Base
==============
User interface improvements
---------------------------
* Redirect to Article preview after saving
* Categories deprecated and removed in favor of tags

Extended rack macro
-------------------
*<slot>* tag introduced, allowing to specify modules and blade servers in *<allocation>*.
In addition, *<slot>* and allocation tags got new attributes: model, hostname, description, assetno, serial, href.

search macro supports tags
--------------------------
*<tags>* attribute allows to search tagged articles
