OpenNMS is an open source Service Assurance platform which manages fault and performance on large communications networks. One of the benefits of being open source is that it is relatively easy to add features to OpenNMS and have them available for evaluation by a large community of users. We wanted to implement some of the TM Forum API's to help promote the work of the TM forum and also provide additional integration options for the OpenNMS community.
OpenNMS has an inbuilt trouble ticket API which allows a variety of ticketing plugins to be written which can integrate OpenNMS with a selection of Trouble Ticketing Systems. Interfaces already exist to integrate OpenNMS with Jira, RT, Remedy etc.
The TM Forum has proposed a standardised trouble ticket ReST interface and it makes sense for OpenNMS to support this. If the Trouble Ticket vendors choose to implement it, the TMF621 Trouble Ticket REST API Specification (https://www.tmforum.org/resources/standard/tmf621-trouble-ticket-rest-api-specification-r14-5-0/) would be an ideal target for integration and would provide a better solution than developing separate interfaces for multiple trouble ticket systems. In this exercise we have implemented the API and tested it against the Reference Implementation.
What it does
When a network event occurs which OpenNMS considers should be presented to network operators as an alarm, an option is provided to also raise a Trouble Ticket in a Trouble Ticket system and link the alarm with the ticket. This allows a team who are managing a network to track work being initiated to fix faults and confirm that the fault is fixed (i.e. the linked alarm is cleared) before closing the ticket.
How I built it
Information on the TM Forum API's is provide here http://projects.tmforum.org/wiki/display/API/API+Table The Trouble Ticket Reference implementation has been released under the Apache Licence on github here https://github.com/tmforum/DSMAPITT A running reference implementation is available for testing here http://repo-api.kermit.orange-labs.fr/swagger-ui/?url=http://repo-api.kermit.orange-labs.fr/apis/snapshot/tmf/troubleTicket/v2/swagger2.json
I reused some of the Apache Licensed Reference Implementation code to provide the basis for a trouble ticket client library. I then wrote an OSGi plugin for OpenNMS which uses this library to enable the interface. The Plugin can be dropped into a standard OpenNMS installation and configured to enable the interface
Challenges I ran into
There were some bugs in the RI which could only be discovered by looking at the interface traffic using Wireshark. There doesn't appear to be a mechanism to report these bugs and have the RI updated.
Accomplishments that I'm proud of
Managed to get a working interface from scratch in 3 days.
What I learned
I learnt how to use Swagger as a test client for Rest interfaces and also how to integrate to the OpenNMS Trouble Ticket API.
What's next for OpenNMS TMForum Trouble Ticketing plugin
Following a bit more testing and packaging, the plugin will be contributed to the OpenNMS project as an optional feature. Code wil be published at that time. It would be great if the interface could be tested against a Trouble Ticket Vendor's production TMF621 implementation