summaryrefslogtreecommitdiff
path: root/cloudinit/features.py
diff options
context:
space:
mode:
authorJames Falcon <TheRealFalcon@users.noreply.github.com>2020-06-04 08:50:20 -0500
committerGitHub <noreply@github.com>2020-06-04 09:50:20 -0400
commitd0b69e1815db131e893e64745a078780f33097af (patch)
tree92c66268bc45784418f441eea1fb6d592c81195d /cloudinit/features.py
parent56f1939061392c848268ae063908bf2188f07373 (diff)
downloadvyos-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.py33
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