voxpupuli/puppetboard

Plan for Puppetboard v5

gdubicki opened this issue · 4 comments

We need to uptick the major version of the Puppetboard for at least 2 reasons:

  • more and more dependencies are dropping Python 3.7 support, which has EOL on 27 Jun 2023,
  • #721

...but perhaps we could use this opportunity to add more breaking changes?

Maybe we could do something for performance but f.e. it would cost us dropping Puppet 5 support? 🤔

@bastelfreak , @mterzo , @corey-hammerton and a recent big contributor, @lcharreau?

But of course, if anyone else wants to chip in, feel free! I just ping some people to get them notified. ☺️

Puppet 6 is dead now. I am fine with dropping Puppet 5/6 (do we eben have puppet 6 specific code?) and also dropping EoL python versions.

I noticed that we currently have a few features disabled by default which may hinder discoverability of them.

I think we should enable all features by default in v5. The features in question:

If the latter would be enabled we should also think about how to configure cache and scheduler for it with reasonable defaults for typical Puppet deployments. Because I think that caching in the app memory (SimpleCache) and having the scheduler disabled by default is good mostly for development... Feel free to chip in regarding this, @lcharreau!

I like the idea to enable both. I'm not sure if any form of cache needs to be implemented. The setup from @lcharreau sounds quite nice. We could just enable the views and document the setup from #799 in the README.md. If that's not sufficient we can still think about another option or people can disable the view.

Hello.
the Class view has been deactivated by default because it is potentially (depending on the number of servers) very resource-intensive (fetching events for each report) and we have several hundred servers managed by Puppet.
We've added a cache and a scheduler to be able to pre-compute the results at regular intervals (every 5 minutes).

The SimpleCache cache is very suitable if you only have one worker. If you have several workers, it is advisable to use a common backend such as Memcached.

The scheduler allows you to request Puppetdb only for new reports, so you need to configure the interval between 2 jobs according to the time between 2 Puppet agent executions.

So to summarise, if you have few servers (I couldn't give a threshold), I think you could consider disabling the scheduler and using the "SimpleCache" cache. At each client request, we'll parse all the events from each report.