Inventory status – May 2016

The Inventory project was effectively stalled for January to March, to release effort to work on the SL7 Server base project. In an attempt to improve focus on this project, a deadline of end of 2016 has been set for introduction into service.

Service in parallel – incrementally adding features

The aim is to run the new inventory system (Tartarus) in parallel with the existing system and incrementally add features over the coming year. Order files are now sync’d across (currently nightly) to Tartarus and updating appropriately.  The new system has been ported to SL7 and upgraded to PostgreSQL 9.5 (on host ‘bandama’). Thanks to Toby for building perl-DBIX-Class, and deps, to SL7.

Inbound supplier reports (via email) – used to populate mac address tables

Information on the kit purchased off the Select PC/Laptop scheme is available, via periodic reports, from the suppliers. This includes information on purchase order, serial number, primary mac address. The intention is to master mac address information in Tartarus, and not LCFG profiles – feeding these supplier reports into Tartarus will assist in automating this process.

A generic kerberised curl script (krbcurl) has been written which can be run as part of a mail server alias rule –  this submits the incoming email to a CGI script (running on the Tartarus server) over https using GSSAPI authentication. The CGI script feeds the incoming mail report, based on the From address, to a manufacturer specific module which decodes (ie takes apart the MIME structure) the report and updates the Tartarus supplierreport table appropriately. This is now running live, with scheduled weekly reports from HP and manually invoked reports from Dell.


A simple centralised logging library has been written so that all code running on  the Tartarus server (including CGIs) logs into one SQL event log – much like syslog (log facility, log level, message, time) . This has proven invaluable in debugging problems and should assist in debugging problems when in service.

Clientreport – more work

Chris has written some more clientreport modules – reporting on firmware, PSUs, BMC info.

The upgrade to PostgreSQL 9.5 introduces the JSONB data type. Storing the clientreport JSON in a JSONB column means that we can combine queries on data in SQL tables with data held within the JSON data structure.

Next work

An important element of the new system will be the RESTful API. Currently, the invquery and invedit commands use SQL directly to perform queries and updates. This has integrity “issues”, means that changing behaviour can be laggy (code needs updated on clients), and means that other code that wants to do queries or updates must duplicate the code. A RESTful API will overcome these problems. The next significant task is to define an API and circulate for comment.

This entry was posted in Inventory project. Bookmark the permalink.