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
|
from unittest import TestCase
from tempfile import mkdtemp
from shutil import rmtree
import os
from copy import copy
from cloudinit.DataSourceMaaS import (
MaasSeedDirNone,
MaasSeedDirMalformed,
read_maas_seed_dir,
)
class TestMaasDataSource(TestCase):
def setUp(self):
super(TestMaasDataSource, self).setUp()
# Make a temp directoy for tests to use.
self.tmp = mkdtemp(prefix="unittest_")
def tearDown(self):
super(TestMaasDataSource, self).tearDown()
# Clean up temp directory
rmtree(self.tmp)
def test_seed_dir_valid(self):
"""Verify a valid seeddir is read as such"""
data = {'instance-id': 'i-valid01', 'hostname': 'valid01-hostname',
'userdata': 'valid01-userdata'}
my_d = os.path.join(self.tmp, "valid")
populate_dir(my_d, data)
(userdata, metadata) = read_maas_seed_dir(my_d)
self.assertEqual(userdata, data['userdata'])
for key in ('instance-id', 'hostname'):
self.assertEqual(data[key], metadata[key])
# verify that 'userdata' is not returned as part of the metadata
self.assertFalse(('userdata' in metadata))
def test_seed_dir_valid_extra(self):
"""Verify extra files do not affect seed_dir validity """
data = {'instance-id': 'i-valid-extra',
'hostname': 'valid-extra-hostname',
'userdata': 'valid-extra-userdata', 'foo': 'bar'}
my_d = os.path.join(self.tmp, "valid_extra")
populate_dir(my_d, data)
(userdata, metadata) = read_maas_seed_dir(my_d)
self.assertEqual(userdata, data['userdata'])
for key in ('instance-id', 'hostname'):
self.assertEqual(data[key], metadata[key])
# additional files should not just appear as keys in metadata atm
self.assertFalse(('foo' in metadata))
def test_seed_dir_invalid(self):
"""Verify that invalid seed_dir raises MaasSeedDirMalformed"""
valid = {'instance-id': 'i-instanceid',
'hostname': 'test-hostname', 'userdata': ''}
my_based = os.path.join(self.tmp, "valid_extra")
# missing 'userdata' file
my_d = "%s-01" % my_based
invalid_data = copy(valid)
del invalid_data['userdata']
populate_dir(my_d, invalid_data)
self.assertRaises(MaasSeedDirMalformed, read_maas_seed_dir, my_d)
# missing 'instance-id'
my_d = "%s-02" % my_based
invalid_data = copy(valid)
del invalid_data['instance-id']
populate_dir(my_d, invalid_data)
self.assertRaises(MaasSeedDirMalformed, read_maas_seed_dir, my_d)
def test_seed_dir_none(self):
"""Verify that empty seed_dir raises MaasSeedDirNone"""
my_d = os.path.join(self.tmp, "valid_empty")
self.assertRaises(MaasSeedDirNone, read_maas_seed_dir, my_d)
def test_seed_dir_missing(self):
"""Verify that missing seed_dir raises MaasSeedDirNone"""
self.assertRaises(MaasSeedDirNone, read_maas_seed_dir,
os.path.join(self.tmp, "nonexistantdirectory"))
def test_seed_url_valid(self):
"""Verify that valid seed_url is read as such"""
pass
def test_seed_url_invalid(self):
"""Verify that invalid seed_url raises MaasSeedDirMalformed"""
pass
def test_seed_url_missing(self):
"""Verify seed_url with no found entries raises MaasSeedDirNone"""
pass
def populate_dir(seed_dir, files):
os.mkdir(seed_dir)
for (name, content) in files.iteritems():
with open(os.path.join(seed_dir, name), "w") as fp:
fp.write(content)
fp.close()
# vi: ts=4 expandtab
|