summaryrefslogtreecommitdiff
path: root/debian/patches/cpick-a9d41de-CloudSigma-Fix-bug-where-datasource-was-not-loaded-in
blob: b886853cdc109a3b33be62d8e20230a88bd26f45 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
From a9d41de47a58d967ae3fd6a7749f8143a14424d3 Mon Sep 17 00:00:00 2001
From: Scott Moser <smoser@ubuntu.com>
Date: Wed, 7 Dec 2016 19:17:03 +0100
Subject: [PATCH] CloudSigma: Fix bug where datasource was not loaded in local
 search.

CloudSigma would not get any datasources loaded during cloud-init local.
Thus, when the network datasource was removed, *no* CloudSigma
datasources would be loaded.

LP: #1648380
---
 cloudinit/sources/DataSourceCloudSigma.py          |  2 +-
 tests/unittests/test_datasource/test_cloudsigma.py | 15 +++++
 tests/unittests/test_datasource/test_common.py     | 73 ++++++++++++++++++++++
 3 files changed, 89 insertions(+), 1 deletion(-)
 create mode 100644 tests/unittests/test_datasource/test_common.py

--- a/cloudinit/sources/DataSourceCloudSigma.py
+++ b/cloudinit/sources/DataSourceCloudSigma.py
@@ -115,7 +115,7 @@ DataSourceCloudSigmaNet = DataSourceClou
 # Used to match classes to dependencies. Since this datasource uses the serial
 # port network is not really required, so it's okay to load without it, too.
 datasources = [
-    (DataSourceCloudSigma, (sources.DEP_FILESYSTEM)),
+    (DataSourceCloudSigma, (sources.DEP_FILESYSTEM, )),
 ]
 
 
--- a/tests/unittests/test_datasource/test_cloudsigma.py
+++ b/tests/unittests/test_datasource/test_cloudsigma.py
@@ -3,6 +3,7 @@
 import copy
 
 from cloudinit.cs_utils import Cepko
+from cloudinit import sources
 from cloudinit.sources import DataSourceCloudSigma
 
 from .. import helpers as test_helpers
@@ -97,3 +98,17 @@ class DataSourceCloudSigmaTest(test_help
         self.datasource.get_data()
 
         self.assertIsNone(self.datasource.vendordata_raw)
+
+
+class DsLoads(test_helpers.TestCase):
+    def test_get_datasource_list_returns_in_local(self):
+        deps = (sources.DEP_FILESYSTEM,)
+        ds_list = DataSourceCloudSigma.get_datasource_list(deps)
+        self.assertEqual(ds_list,
+                         [DataSourceCloudSigma.DataSourceCloudSigma])
+
+    def test_list_sources_finds_ds(self):
+        found = sources.list_sources(
+            ['CloudSigma'], (sources.DEP_FILESYSTEM,), ['cloudinit.sources'])
+        self.assertEqual([DataSourceCloudSigma.DataSourceCloudSigma],
+                         found)
--- /dev/null
+++ b/tests/unittests/test_datasource/test_common.py
@@ -0,0 +1,73 @@
+from cloudinit import settings
+from cloudinit import sources
+from cloudinit import type_utils
+from cloudinit.sources import (
+    DataSourceAliYun as AliYun,
+    DataSourceAltCloud as AltCloud,
+    DataSourceAzure as Azure,
+    DataSourceBigstep as Bigstep,
+    DataSourceCloudSigma as CloudSigma,
+    DataSourceCloudStack as CloudStack,
+    DataSourceConfigDrive as ConfigDrive,
+    DataSourceDigitalOcean as DigitalOcean,
+    DataSourceEc2 as Ec2,
+    DataSourceGCE as GCE,
+    DataSourceMAAS as MAAS,
+    DataSourceNoCloud as NoCloud,
+    DataSourceOpenNebula as OpenNebula,
+    DataSourceOpenStack as OpenStack,
+    DataSourceOVF as OVF,
+    DataSourceSmartOS as SmartOS,
+)
+from cloudinit.sources import DataSourceNone as DSNone
+
+from .. import helpers as test_helpers
+
+DEFAULT_LOCAL = [
+    CloudSigma.DataSourceCloudSigma,
+    ConfigDrive.DataSourceConfigDrive,
+    DigitalOcean.DataSourceDigitalOcean,
+    NoCloud.DataSourceNoCloud,
+    OpenNebula.DataSourceOpenNebula,
+    OVF.DataSourceOVF,
+    SmartOS.DataSourceSmartOS,
+]
+
+DEFAULT_NETWORK = [
+    AltCloud.DataSourceAltCloud,
+    Azure.DataSourceAzureNet,
+    Bigstep.DataSourceBigstep,
+    CloudStack.DataSourceCloudStack,
+    DSNone.DataSourceNone,
+    Ec2.DataSourceEc2,
+    GCE.DataSourceGCE,
+    MAAS.DataSourceMAAS,
+    NoCloud.DataSourceNoCloudNet,
+    OpenStack.DataSourceOpenStack,
+    OVF.DataSourceOVFNet,
+]
+
+
+class ExpectedDataSources(test_helpers.TestCase):
+    builtin_list = settings.CFG_BUILTIN['datasource_list']
+    deps_local = [sources.DEP_FILESYSTEM]
+    deps_network = [sources.DEP_FILESYSTEM, sources.DEP_NETWORK]
+    pkg_list = [type_utils.obj_name(sources)]
+
+    def test_expected_default_local_sources_found(self):
+        found = sources.list_sources(
+            self.builtin_list, self.deps_local, self.pkg_list)
+        self.assertEqual(set(DEFAULT_LOCAL), set(found))
+
+    def test_expected_default_network_sources_found(self):
+        found = sources.list_sources(
+            self.builtin_list, self.deps_network, self.pkg_list)
+        self.assertEqual(set(DEFAULT_NETWORK), set(found))
+
+    def test_expected_nondefault_network_sources_found(self):
+        found = sources.list_sources(
+            ['AliYun'], self.deps_network, self.pkg_list)
+        self.assertEqual(set([AliYun.DataSourceAliYun]), set(found))
+
+
+# vi: ts=4 expandtab