Commit Graph

372 Commits

Author SHA1 Message Date
Mike Terzo
0e712da71f Closing html tags for links properly 2017-01-23 18:06:53 -05:00
Mike Terzo
ff409c5f6d Adding coverage for invalid log setting 2017-01-23 18:06:52 -05:00
Mike Terzo
7302dbecec Convert Unit tests to use py.test format 2017-01-23 18:06:49 -05:00
Robert Fletcher
333347d113 Radiator JSON output (#329)
Json output from radiator when Accept header is application/json
2017-01-23 16:15:18 -05:00
Joris Dedieu
9fe0f091f3 catch a division by zero in radiator while environment has no nodes (#325)
* catch a division by zero in radiator while environment has no nodes
2017-01-05 15:51:38 -05:00
Mike Terzo
4938644593 Merge pull request #327 from raphink/docker_puppetdb_default
Use puppetdb as PUPPETDB_HOST on Docker
2017-01-05 15:31:31 -05:00
Raphaël Pinson
df91efff33 Use puppetdb as PUPPETDB_HOST on Docker
This allows to plug and play a PuppetDB container (or use extra host)
2017-01-05 12:54:31 +01:00
sacres
fdc6b00525 Merge pull request #310 from mterzo/docker_env
Default settings use environment variables
2017-01-03 00:42:44 -05:00
Mike Terzo
803178053b Merge pull request #324 from mterzo/doc_update
Updating documentation for secret_key
2016-12-19 20:42:35 -05:00
Mike Terzo
65d9abc749 Updating documentation for secret_key 2016-12-19 16:28:28 -05:00
Mike Terzo
b96e76ff10 Use alpine python and gunicorn
Adding docker_settings.py which reads environment variables
to allows for environment variable to be passed to the
container
2016-12-19 15:54:32 -05:00
Mike Terzo
72a194c82e Update default_settings to use environment variables.
Easier environment configuration when using docker to
run puppetboard.
2016-12-19 13:48:34 -05:00
Mike Terzo
1966c1d31d Merge pull request #318 from ts-mini/fixing-width-radiator
radiator column width to percent
2016-12-19 00:18:09 -05:00
Mike Terzo
7c889d5b2e Merge pull request #311 from manuq/dailycharts
Dailycharts
2016-12-18 23:40:02 -05:00
Mike Terzo
0e3b4d230e Merge pull request #309 from alchemyx/patch-1
Update README.rst
2016-12-18 23:30:44 -05:00
Peter Souter
654af73914 Merge pull request #320 from roidelapluie/bandit
[Security] Implement bandit
2016-12-14 16:05:31 +00:00
Julien Pivotto
6fa0a4a796 [Security] Implement bandit
Bandit (https://github.com/openstack/bandit) is a python
security linter.

Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2016-12-07 10:05:34 +01:00
Tyler Horvath
4d744b902f radiator column width to percent
>1000 nodes causing clipping with 1.75em width
2016-12-02 13:57:34 -07:00
Manuel Quiñones
08e214ec15 Overview, Node pages: Add bar chart of daily runs
The Overview will display a bar chart of daily runs, categorized by
report status (changed, unchanged, failed).

The chart data is loaded asynchronously from JSON so it doesn't provoke
a delay in the page load. The data is JSON enconded.

This feature was in the original Puppet Dashboard.  The change was
proposed and discussed in issue #308 .

Application changes:

- app.py: New view daily_reports_chart to serve the chart data as JSON.

- dailychart.py: Submodule to query and format the chart data.

Template changes:

- layout.html: New block to add more elements to the HTML header.

- index.html, node.html: Add C3 CSS in header block, add DIV placeholder
  for the chart in content block, add dailychart.js (and dependencies)
  in script block.

Settings:

- DAILY_REPORTS_CHART_ENABLED: New setting to turn off the charts. By
  default is on.

- DAILY_REPORTS_CHART_DAYS: Changes the range of days to display in the
  charts.

Javascript changes:

- dailychart.js: New script that loads the JSON data for the chart and
  calls C3 to generate a bar chart.

CSS changes:

- puppetboard.css: Set fixed height to the chart container to avoid a
  page resize after the chart is loaded.
2016-10-26 16:39:03 -03:00
Manuel Quiñones
68ef8ac0da Upgrade c3.js to 0.4.11 and add corresponding CSS
The bar charts in next commit look wrong without CSS for c3.js .
2016-10-25 13:46:41 -03:00
Michał Margula
1897a4393f Update README.rst
There is no random in os module, changed to urandom (same as in default_setttings), also fixed path in example apache config.
2016-10-22 10:51:52 +02:00
Mike Terzo
3fbd182453 Adding unittests (#300)
* Create a custom class to handle aborting 204 properly.  If this isn't
covered the server will send a 500 due to a python exception

* Moved py.test configuration under tool:pytest, this was causing a
warning.  This is new to 3.0.1 which is now the pinned version

* Unittest for puppetboard.utils
2016-09-11 21:01:13 -04:00
Corey Hammerton
dffd42af1d puppetboard/templates/metrics.html: Added searchability to the Metrics list (#298)
This resolves #297

Adding a search bar to the Metrics page to allow the user to filter the list
items to only show what the user wants.
2016-09-03 17:11:40 -04:00
Corey Hammerton
df3d4a5eaa puppetboard/app.py: Adding an environment filter for displaying Fact names (#295)
This resolves #276

Current behaviour of the Facts page would query the fact_names endpoint
regardless of environment. This update would query the Facts endpoint,
extracting each unique fact name known to the environment.
2016-09-03 17:11:28 -04:00
Alejandro Figueroa
c585251862 Change hostname to certname where applicable (#294)
Certain column headers were referring to a node's certname as its
hostname. This commit corrects that by renaming the column headers.
2016-09-03 17:11:03 -04:00
Corey Hammerton
43526279e0 puppetboard/templates/layout.html: Displaying the current active environment as the dropdown label (#291)
This fixed #290

To help make it more obvious for users to see what the current environment
is replacing the original text of the Environments dropdown menu from
'Environments' to the current environment.

The other suggestion was to make the active item stand out more but that
would require custom CSS that may conflict with the Sementic UI.
2016-09-03 17:10:46 -04:00
Corey Hammerton
5048662861 puppetboard/app.py: Simplifying the Inventory Code (#289)
* puppetboard/app.py: Simplifying the code generating and rendering the Inventory

This resolves #275

This update eliminates one iteration over the resulting inventory facts
that generates a multidimensional dictionary keyed by the node's certname
to another dictionary of key-value pairs of the fact name and fact value.

* puppetboard/templates/inventory.html: Wrapping the fact values in links to the Node page

This comes as a request from #280
2016-09-03 17:10:33 -04:00
Corey Hammerton
0c0a15bdf2 puppetboard/app.py: Enhancing queries for Node and Report states (#271)
* puppetboard/app.py: Enhancing queries for Node and Report states

This resolves #264

On the Nodes and Reports tabs when the user adds a status query string
argument additional query clauses are generated based on its value.
Can be one of failed, changed, unchanged, noop or unreported (for Nodes
only)

No query clause is generated for noop on the Nodes tab. The query field
latest_report_noop was added in PuppetDB 4.1 and we do not want to break
compatability between minor or bug-fix versions.

* puppetboard/app.py: Simplifying the query logic in nodes()

The new logic starts with a blank `AndOperator()` object then proceeds
to build the query based on environment and status values. After all
after all checking if there are no operations declare the object as
None.

* puppetboard/app.py: Simplifying the query logic for reports()

Similar to the work done for nodes()

* puppetboard/app.py: Fixing pep8 formatting in nodes()

* Add pagination to reports/<node>
2016-08-18 20:39:31 -04:00
Nikolai Røed Kristiansen
feac4441c9 Travis: run tests under python 3.5 (#284) 2016-07-27 19:59:44 -04:00
Thomas Hager
294e2d6559 Fixed a typo in Puppetboard's catalog view (#282)
Replaced oder_by_str with order_by_str in get_or_abort() to fix app crash.
2016-07-27 19:59:20 -04:00
Tim Meusel
12b0d09f9b Merge pull request #278 from petems/fix_badges
Fix rst syntax for badges
2016-07-15 10:50:16 +02:00
Peter Souter
510bdccbb5 Fix rst syntax for badges
* Require links to be on newline
2016-07-15 09:39:03 +01:00
Peter Souter
ba7dd9f264 Merge pull request #274 from mterzo/add_coveralls_badge
Add coveralls.io badge
2016-07-15 09:16:53 +01:00
Mike Terzo
a8ca234a3b Add coveralls.io badge 2016-07-14 21:38:49 -04:00
Peter Souter
c1fb6fbdc2 Add Travis Badge (#273) 2016-07-14 19:43:09 -04:00
Mike Terzo
1afe120a12 Update radiator view (#272)
* Fixing 404 on jquery.js

* Remove symlink for jquery.min.map
2016-07-14 19:40:06 -04:00
Mike Terzo
faac5fa1bc Travis ci integration (#267)
* Initial travis-ci integration

* Format code base to PEP8
2016-07-13 20:59:07 -04:00
Corey Hammerton
0ac64530bf README.rst: Fixing code-block strings. (#265)
Github wasn't showing the new readme blocks because they were encoded
code_block instead of the correct code-block.
2016-06-29 20:44:25 -04:00
Corey Hammerton
59c79c7592 Puppetboard: Version Bump to 0.2.0 (#263) v0.2.0 2016-06-28 20:42:44 -04:00
Corey Hammerton
2a6e2380ad puppetboard/app.py: Using the plain-text metric name in metrics() (#259)
This fixes #258

URL quoting is now done in pypuppetdb >= 0.2.3 which contributed to the
metric URL being double-quoted by the time it reached PuppetDB, which
responds with a 404. Instead using the plain-text name to build the
link to metric()
2016-06-28 20:09:30 -04:00
Mike Terzo
bf6f446182 Fix whitespace (#261) 2016-06-28 20:09:09 -04:00
Corey Hammerton
831c8bfaae puppetboard/default_settings.py: Reverting PUPPETDB_HOST change from #187 (#260)
This change is only useful for Docker image building, but for officially
supported packages in PIP this change will cause unnecessary breakage to
existing users. We will have to implement a different approach for configuring
settings in Docker images.

Adding a note to README.rst indicating that an officially supported Docker
image is planned.
2016-06-23 21:00:34 -04:00
Raphaël Pinson
dfaf6daec1 Add wsgi.py and Dockerfile (#187)
* Add a sample wsgi.py

* Add a sample Dockerfile making use of wsgi.py

* Use 'puppetdb' as default location for PUPPETDB_HOST
2016-06-23 20:52:11 -04:00
Corey Hammerton
da044271ee PuppetBoard: Upgrading WTForms to latest version and restoring CSRF Protection (#250)
Upgrading the following packages to the respected versions:

WTForms==2.1
Flask-WTF==0.12
Werkzeug==0.11.0

Passing newly required metadata to the QueryForm constructor in puppetboard/app.py

Apache >= 2.4 with mod_wsgi experienced a major issue where it would re-generate
the app's secret key on each request. The fix for this turned out to be placing
a permanent statis 'secret_key' value in the wsgi.py. Adding a block in README.rst
on how to implement the user's own secret_key
2016-06-23 20:32:31 -04:00
Corey Hammerton
adac2a46bf Implementing new pypuppetdb.QueryBuilder (#251)
* puppetboard/app.py: Implementing and utilizing the new PyPuppetDB QueryBuilder

This fixes https://github.com/voxpupuli/puppetboard/issues/239

Replacing all the directly declared query strings with various objects
from the pypuppetdb.QueryBuilder sub-module. Using this Object-Oriented
functionality it is programmatically safer to construct large, complex
queries.

* puppetboard/app.py: Simplifying the environment logic in `node()`

The query in this function will now always be an `AndOperator()` object.
If a specific environment is queried then that constraint is added.

The resulting query difference will be:

env == 'production'

`["and",["=", "environment", "production"],["=", "certname", "puppet01.hammertime.local"]]`

env == '*'

`["and",["=", "certname", "puppet01.hammertime.local"]]`

* puppetboard/app.py: Minor code simplification for more accurate results.

In index() adding the configured OVERVIEW_FILTER query after adding the previous
constraints to num_nodes_query
In inventory() wrapping fact_query in an AndOperator() regardless of environment.
This update makes it more common with other endpoints that only add environment
constraints if an environment is selected.

* requirements.txt: Bumping the pypuppetdb version requirement

* requirements.txt: Bumping pypuppetdb version to new requirement.

* puppetboard/app.py: Fixing module load error.
2016-06-23 20:26:21 -04:00
Raphaël Pinson
39f48c185c Fix result table markup 2016-06-21 12:22:17 +02:00
Raphaël Pinson
6a072d1f1b Merge branch 'pql' 2016-06-21 09:46:02 +02:00
Raphaël Pinson
38986047a6 Add PQL endpoint to Query form
Requires https://github.com/voxpupuli/pypuppetdb/pull/97
2016-06-21 06:59:24 +02:00
Raphaël Pinson
4887588662 Pretty print data from Query tab (#257) 2016-06-20 21:26:15 -04:00
Benjamin Merot
fac55edc98 Removing redudant declaration of upstream in Nginx example (#252)
With the IP address of the gunicorn server set in proxy_pass, the configuration example doesn't need to declare an upstream server.
2016-06-07 21:09:17 -04:00