Happy Friday, everyone! This morning I had some semi-intelligible thoughts
about feature deprecation in Puppet, specifically because I got bit with an
upgrade issue last night. We do user stories a lot at work, so I'm going to
frame it that way. I was curious what other opinions people have on this
problem and how it can best be addressed. Thanks!

*Problem*

When a user updates puppet components (server, agent, puppetdb, etc.), a
number of new features and options are typically made available, in
addition to the default location of some files being changed. Older
features, options, and file locations (collectively 'features' for
simplicity) are considered deprecated, to be removed in some future
version. Alerting the user of this is challenging for a few reasons.

1. Deprecation messages in puppet runs are noisy and most users disable
them as quickly as possible, never to be seen again.
2. Moving the messages to the component's log results in a bunch of needles
being added to the needlestack.
3. At the time of deprecation, it is usually impossible to determine what
future version will have no longer support the deprecated feature, so users
cannot plan for a timely removal of the feature.
4. When upgrades occur, deprecated or changed features often result in
failure to start/run, failure to properly apply entire catalogs due to the
loss of some components of it, poor or confusing logging about what caused
the issue, etc.

*Solution*

Deprecated features can each be given an identifier (ID, String, etc). Use
of a deprecated feature can go to a specific log within the component or
general puppet logs that includes the timestamp, identifier, and relevant
identifying information such as catalog or configuration file name and
line. An additional tool can be provided for users to review this log and
provide the number of and last timestamp indicating usage of the deprecated
feature, along with the entirety of that log entry.

Each deprecated feature identifier can easily be searched for in Puppet
Labs documentation, Jira tickets, and search engines to help determine how
a user may address the issue prior to upgrades. After an upgrade where a
deprecated feature is removed, the identifier can be displayed directly to
a user in addition to the log, and any interactive upgrade can review the
recent logs (i.e. 24 or 48 hours) and highlight features removed in the the
last MAJOR or MINOR update.

It is understood that newer versions that do not support a feature will
also no longer be able to detect the deprecated feature and provide
accurate logging of the missing feature that is causing the fault. By
separating out the deprecated messages into a separate log and providing a
simple tool to search the logs, the user is empowered to easily find the
use of the deprecated features and can correlate the IDs with release notes
and such as well as the time of upgrades.

Rob Nelson
[email protected]

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-dev/CAC76iT90BqJTQHxga8nzTHTLoyV%3DjpLJ5BOOgDOjXHcN9dpiMw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to