diff options
author | James Falcon <TheRealFalcon@users.noreply.github.com> | 2020-06-04 08:50:20 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-04 09:50:20 -0400 |
commit | d0b69e1815db131e893e64745a078780f33097af (patch) | |
tree | 92c66268bc45784418f441eea1fb6d592c81195d /cloudinit/features.py | |
parent | 56f1939061392c848268ae063908bf2188f07373 (diff) | |
download | vyos-cloud-init-d0b69e1815db131e893e64745a078780f33097af.tar.gz vyos-cloud-init-d0b69e1815db131e893e64745a078780f33097af.zip |
New feature flag functionality and fix includes failing silently (#367)
Build time feature flags are now defined in cloudinit/features.py.
Feature flags can be added to toggle configuration options or
deprecated features. Feature flag overrides can be placed in
cloudinit/feature_overrides.py. Further documentation can be found in
HACKING.rst.
Additionally, updated default behavior to exit with an exception
if #include can't retrieve resources as expected. This behavior
can be toggled with a feature flag.
LP: #1734939
Diffstat (limited to 'cloudinit/features.py')
-rw-r--r-- | cloudinit/features.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/cloudinit/features.py b/cloudinit/features.py new file mode 100644 index 00000000..e455213d --- /dev/null +++ b/cloudinit/features.py @@ -0,0 +1,33 @@ +# This file is part of cloud-init. See LICENSE file for license information. +""" +Feature flags are used as a way to easily toggle configuration +**at build time**. They are provided to accommodate feature deprecation and +downstream configuration changes. + +Currently used upstream values for feature flags are set in +``cloudinit/features.py``. Overrides to these values (typically via quilt +patch) can be placed +in a file called ``feature_overrides.py`` in the same directory. Any value +set in ``feature_overrides.py`` will override the original value set +in ``features.py``. + +Each flag should include a short comment regarding the reason for +the flag and intended lifetime. + +Tests are required for new feature flags, and tests must verify +all valid states of a flag, not just the default state. +""" + +ERROR_ON_USER_DATA_FAILURE = True +""" +If there is a failure in obtaining user data (i.e., #include or +decompress fails), old behavior is to log a warning and proceed. +After the 20.2 release, we instead raise an exception. +This flag can be removed after Focal is no longer supported +""" + +try: + # pylint: disable=wildcard-import + from cloudinit.feature_overrides import * # noqa +except ImportError: + pass |