Make Puppetboard work with the PuppetDB V4 api
This PR just enables the basic functionality of PuppetBoard with the new PyPuppetDB version. https://github.com/puppet-community/puppetboard/pull/176 includes this work as well as other work to make better utilization of the new library
Some excerpts from CHANGELOG.rst include:
- Increasing the pypuppetdb requirements from 0.1.x to 0.2.x
- The Reports page now lists reports from the reports endpoint instead of
a link to a PuppetDB issue with a feature request
- Adding a Catalogs page to view either individual node catalogs or compare
them against other nodes
- New environment awareness adds a new query parameter to all applicable
endpoints to filter results based on the current environment. If the
default environment 'production' is not available, or any other unavailable
environment, the user is redirected to the first known environment.
- Adding pagination functionality for reports (for now) based on the value of
the REPORTS_COUNT configuration option (used for the limit and the offset
calculation). Implementation also makes it possible for other UI enhancements.
- Removing the limit_reports function from puppetboard/utils.py since paging
parameters are now accepted by the pypuppetdb endpoint functions.
- Bumping the version to 0.1.0
"Skips" were highlighted with orange on one page and yellow on another. This change makes them consistent, and switches the color to "black" for accessibility reasons. (The contrast between the shades of orange and red used for skips and errors was *very* low. Indistinguishable on some screens.)
A new endpoint in the header, Catalogs, takes the user to a page with a node
table similar to that in the nodes page. This table shows the node with a
link to the node page, the catalog timestamp with a link to the catalog
page and a small form with a select field to be used to compare the
catalog of this row's node with that of another node.
Instead of querying PuppetDB for every fact that it knows about only
querying it for the fact names that it knows about. The result is a
much smaller result set that is more noticable on environments with
large numbers of nodes and/or facts.
On one environment with > 2500 fact-names and 35 nodes a curl test
to the facts endpoint without any query string returned in ~3.5 seconds.
Ran another curl test to the facts endpoint with the query string that
the code in this commit creates, the command finished in ~0.040 seconds.
This makes use of the available catalog endpoints in pypuppetdb and PuppetDB
and displays to administrators the last compiled catalog for a node,
if the variable ENABLE_CATALOG is True (defaults to False)
Added inventory page showing a table similar to the "Nodes" one,
but containing any customizable set of facts.
A setting INVENTORY_FACTS has been added. It controls the list
of facts to be displayed along with a description for the header
of the table.
When there are more than 15 unique fact values it groups the least
commonly used into an other label.
Co-authored-by: Sage Imel <sage@cat.pdx.edu>
Co-authored-by: Ryan Niebur <ryan@cat.pdx.edu>
chart.js is poorly maintained and has been disabled. c3.js
has active development and removes the need for two charts
on the facts page.
Co-authored-by: Sage Imel <sage@cat.pdx.edu>
Co-authored-by: Ryan Niebur <ryan@cat.pdx.edu>
To align with added offline resources:
* Semantic UI from 0.12.0 to 0.16.1
(0.18.0 is not yet available on cdnjs.cloudflare.com)
* jQuery TableSorter from 2.13.3 to 2.17.2
* moment.js from 2.5.1 to 2.7.0