Dashboard piechart stats don't match expectations.
So currently there are two main sections where stats are reported. The
text table and the pie chart. I recently discovered that some of the
drill-down searches from the text table weren't matching the stats
reported on the dashboard. In addition some of the stats were
reporting incorrectly in certain edge cases, where there were failed
runs that had successfully applied some resources. I figured out why
and have since fixed both issues.
One additional behavior still remains for this edge case.
In the pie chart, active nodes will include nodes that have failures
but also made changes in the last run. The edge case where this
becomes apparent is you have a manifest that is repeatedly applying
the same resource on each run.
So now in the pie chart now the various "slices" are:
- No report: This is all hosts that have no reports in the system.
(Perhaps because they aren't running puppet).
- Out of sync: No reports in the current puppet interval. e.g. 30 mins
- Pending changes: Only reported for hosts that are in no-op mode but
have a change they would apply if they weren't running in no-op mode.
- Notification disabled: Hosts that have been flagged to be excluded
from foreman reporting
- OK: Has checked in and no changes were required
- Error: Puppet reported an error on the most recent run
- Active: Changes were made in the last run. The caveat is errored
hosts that meet this criteria, also fall into this slice.
So I guess the discrepancy is for those hosts, which meet multiple
conditions and show up in more than one slice. A host in the error
state, can show up both in the active and Notification disabled
I propose we implement a solution that give statuses the following order of precedence, and have hosts only show up in one section of the pie:
1) Notifications Disabled
2) Out Of Sync
4) Active / Pending (it shouldn't be possible to be in both states)