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
|
from cloudinit.sources import DataSourceNoCloud
from mocker import MockerTestCase
class TestNoCloudDataSource(MockerTestCase):
def setUp(self):
super(TestNoCloudDataSource, self).setUp()
def test_parse_cmdline_data_valid(self):
parse = DataSourceNoCloud.parse_cmdline_data
ds_id = "ds=nocloud"
pairs = (
("root=/dev/sda1 %(ds_id)s", {}),
("%(ds_id)s; root=/dev/foo", {}),
("%(ds_id)s", {}),
("%(ds_id)s;", {}),
("%(ds_id)s;s=SEED", {'seedfrom': 'SEED'}),
("%(ds_id)s;seedfrom=SEED;local-hostname=xhost",
{'seedfrom': 'SEED', 'local-hostname': 'xhost'}),
("%(ds_id)s;h=xhost",
{'local-hostname': 'xhost'}),
("%(ds_id)s;h=xhost;i=IID",
{'local-hostname': 'xhost', 'instance-id': 'IID'}),
)
for (fmt, expected) in pairs:
fill = {}
cmdline = fmt % {'ds_id': ds_id}
ret = parse(ds_id=ds_id, fill=fill, cmdline=cmdline)
self.assertEqual(expected, fill)
self.assertTrue(ret)
def test_parse_cmdline_data_none(self):
parse = DataSourceNoCloud.parse_cmdline_data
ds_id = "ds=foo"
cmdlines = (
"root=/dev/sda1 ro",
"console=/dev/ttyS0 root=/dev/foo",
"",
"ds=foocloud",
"ds=foo-net",
"ds=nocloud;s=SEED",
)
for cmdline in cmdlines:
fill = {}
ret = parse(ds_id=ds_id, fill=fill, cmdline=cmdline)
self.assertEqual(fill, {})
self.assertFalse(ret)
# vi: ts=4 expandtab
|