summaryrefslogtreecommitdiff
path: root/cloudinit/sources
diff options
context:
space:
mode:
authorDaniel Watkins <daniel.watkins@canonical.com>2019-04-10 20:21:37 +0000
committerServer Team CI Bot <josh.powers+server-team-bot@canonical.com>2019-04-10 20:21:37 +0000
commit6322c2ddf4b68a8e7cc467a07fb20a1d151a2ef3 (patch)
tree7d4dbf157acc58df6bc8e4050c80afe5d72655a8 /cloudinit/sources
parentb76714c355a87416f9f07156b0f025aceaca7296 (diff)
downloadvyos-cloud-init-6322c2ddf4b68a8e7cc467a07fb20a1d151a2ef3.tar.gz
vyos-cloud-init-6322c2ddf4b68a8e7cc467a07fb20a1d151a2ef3.zip
Revert "DataSource: move update_events from a class to an instance..."
Moving update_events from a class attribute to an instance attribute means that it doesn't exist on DataSource objects that are unpickled, causing tracebacks on cloud-init upgrade. As this change is only required for cloud-init installations which don't utilise ds-identify, we're backing it out to be reintroduced once the upgrade path bug has been addressed. This reverts commit f2fd6eac4407e60d0e98826ab03847dda4cde138.
Diffstat (limited to 'cloudinit/sources')
-rw-r--r--cloudinit/sources/DataSourceScaleway.py3
-rw-r--r--cloudinit/sources/__init__.py6
-rw-r--r--cloudinit/sources/tests/test_init.py15
3 files changed, 4 insertions, 20 deletions
diff --git a/cloudinit/sources/DataSourceScaleway.py b/cloudinit/sources/DataSourceScaleway.py
index 54bfc1fe..b573b382 100644
--- a/cloudinit/sources/DataSourceScaleway.py
+++ b/cloudinit/sources/DataSourceScaleway.py
@@ -171,11 +171,10 @@ def query_data_api(api_type, api_address, retries, timeout):
class DataSourceScaleway(sources.DataSource):
dsname = "Scaleway"
+ update_events = {'network': [EventType.BOOT_NEW_INSTANCE, EventType.BOOT]}
def __init__(self, sys_cfg, distro, paths):
super(DataSourceScaleway, self).__init__(sys_cfg, distro, paths)
- self.update_events = {
- 'network': {EventType.BOOT_NEW_INSTANCE, EventType.BOOT}}
self.ds_cfg = util.mergemanydict([
util.get_cfg_by_path(sys_cfg, ["datasource", "Scaleway"], {}),
diff --git a/cloudinit/sources/__init__.py b/cloudinit/sources/__init__.py
index 1604932d..e6966b31 100644
--- a/cloudinit/sources/__init__.py
+++ b/cloudinit/sources/__init__.py
@@ -164,6 +164,9 @@ class DataSource(object):
# A datasource which supports writing network config on each system boot
# would call update_events['network'].add(EventType.BOOT).
+ # Default: generate network config on new instance id (first boot).
+ update_events = {'network': set([EventType.BOOT_NEW_INSTANCE])}
+
# N-tuple listing default values for any metadata-related class
# attributes cached on an instance by a process_data runs. These attribute
# values are reset via clear_cached_attrs during any update_metadata call.
@@ -188,9 +191,6 @@ class DataSource(object):
self.vendordata = None
self.vendordata_raw = None
- # Default: generate network config on new instance id (first boot).
- self.update_events = {'network': {EventType.BOOT_NEW_INSTANCE}}
-
self.ds_cfg = util.get_cfg_by_path(
self.sys_cfg, ("datasource", self.dsname), {})
if not self.ds_cfg:
diff --git a/cloudinit/sources/tests/test_init.py b/cloudinit/sources/tests/test_init.py
index cb1912be..6378e98b 100644
--- a/cloudinit/sources/tests/test_init.py
+++ b/cloudinit/sources/tests/test_init.py
@@ -575,21 +575,6 @@ class TestDataSource(CiTestCase):
" events: New instance first boot",
self.logs.getvalue())
- def test_data_sources_cant_mutate_update_events_for_others(self):
- """update_events shouldn't be changed for other DSes (LP: #1819913)"""
-
- class ModifyingDS(DataSource):
-
- def __init__(self, sys_cfg, distro, paths):
- # This mirrors what DataSourceAzure does which causes LP:
- # #1819913
- DataSource.__init__(self, sys_cfg, distro, paths)
- self.update_events['network'].add(EventType.BOOT)
-
- before_update_events = copy.deepcopy(self.datasource.update_events)
- ModifyingDS(self.sys_cfg, self.distro, self.paths)
- self.assertEqual(before_update_events, self.datasource.update_events)
-
class TestRedactSensitiveData(CiTestCase):