root / test / ganeti.rapi.rlib2_unittest.py @ 9a3cc7ae
History | View | Annotate | Download (13.4 kB)
1 | 6395cebb | Michael Hanselmann | #!/usr/bin/python
|
---|---|---|---|
2 | 6395cebb | Michael Hanselmann | #
|
3 | 6395cebb | Michael Hanselmann | |
4 | 6395cebb | Michael Hanselmann | # Copyright (C) 2010 Google Inc.
|
5 | 6395cebb | Michael Hanselmann | #
|
6 | 6395cebb | Michael Hanselmann | # This program is free software; you can redistribute it and/or modify
|
7 | 6395cebb | Michael Hanselmann | # it under the terms of the GNU General Public License as published by
|
8 | 6395cebb | Michael Hanselmann | # the Free Software Foundation; either version 2 of the License, or
|
9 | 6395cebb | Michael Hanselmann | # (at your option) any later version.
|
10 | 6395cebb | Michael Hanselmann | #
|
11 | 6395cebb | Michael Hanselmann | # This program is distributed in the hope that it will be useful, but
|
12 | 6395cebb | Michael Hanselmann | # WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 | 6395cebb | Michael Hanselmann | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14 | 6395cebb | Michael Hanselmann | # General Public License for more details.
|
15 | 6395cebb | Michael Hanselmann | #
|
16 | 6395cebb | Michael Hanselmann | # You should have received a copy of the GNU General Public License
|
17 | 6395cebb | Michael Hanselmann | # along with this program; if not, write to the Free Software
|
18 | 6395cebb | Michael Hanselmann | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
19 | 6395cebb | Michael Hanselmann | # 02110-1301, USA.
|
20 | 6395cebb | Michael Hanselmann | |
21 | 6395cebb | Michael Hanselmann | |
22 | 6395cebb | Michael Hanselmann | """Script for unittesting the RAPI rlib2 module
|
23 | 6395cebb | Michael Hanselmann |
|
24 | 6395cebb | Michael Hanselmann | """
|
25 | 6395cebb | Michael Hanselmann | |
26 | 6395cebb | Michael Hanselmann | |
27 | 6395cebb | Michael Hanselmann | import unittest |
28 | 6395cebb | Michael Hanselmann | import tempfile |
29 | 6395cebb | Michael Hanselmann | |
30 | 6395cebb | Michael Hanselmann | from ganeti import constants |
31 | 6395cebb | Michael Hanselmann | from ganeti import opcodes |
32 | 6395cebb | Michael Hanselmann | from ganeti import compat |
33 | 6395cebb | Michael Hanselmann | from ganeti import http |
34 | 6395cebb | Michael Hanselmann | |
35 | 6395cebb | Michael Hanselmann | from ganeti.rapi import rlib2 |
36 | 6395cebb | Michael Hanselmann | |
37 | 6395cebb | Michael Hanselmann | import testutils |
38 | 6395cebb | Michael Hanselmann | |
39 | 6395cebb | Michael Hanselmann | |
40 | 6395cebb | Michael Hanselmann | class TestParseInstanceCreateRequestVersion1(testutils.GanetiTestCase): |
41 | 6395cebb | Michael Hanselmann | def setUp(self): |
42 | 6395cebb | Michael Hanselmann | testutils.GanetiTestCase.setUp(self)
|
43 | 6395cebb | Michael Hanselmann | |
44 | 6395cebb | Michael Hanselmann | self.Parse = rlib2._ParseInstanceCreateRequestVersion1
|
45 | 6395cebb | Michael Hanselmann | |
46 | 6395cebb | Michael Hanselmann | def test(self): |
47 | 6395cebb | Michael Hanselmann | disk_variants = [ |
48 | 6395cebb | Michael Hanselmann | # No disks
|
49 | 6395cebb | Michael Hanselmann | [], |
50 | 6395cebb | Michael Hanselmann | |
51 | 6395cebb | Michael Hanselmann | # Two disks
|
52 | 6395cebb | Michael Hanselmann | [{"size": 5, }, {"size": 100, }], |
53 | 6395cebb | Michael Hanselmann | |
54 | 6395cebb | Michael Hanselmann | # Disk with mode
|
55 | 6395cebb | Michael Hanselmann | [{"size": 123, "mode": constants.DISK_RDWR, }], |
56 | 6395cebb | Michael Hanselmann | |
57 | 6395cebb | Michael Hanselmann | # With unknown setting
|
58 | 6395cebb | Michael Hanselmann | [{"size": 123, "unknown": 999 }], |
59 | 6395cebb | Michael Hanselmann | ] |
60 | 6395cebb | Michael Hanselmann | |
61 | 6395cebb | Michael Hanselmann | nic_variants = [ |
62 | 6395cebb | Michael Hanselmann | # No NIC
|
63 | 6395cebb | Michael Hanselmann | [], |
64 | 6395cebb | Michael Hanselmann | |
65 | 6395cebb | Michael Hanselmann | # Three NICs
|
66 | 6395cebb | Michael Hanselmann | [{}, {}, {}], |
67 | 6395cebb | Michael Hanselmann | |
68 | 6395cebb | Michael Hanselmann | # Two NICs
|
69 | 6395cebb | Michael Hanselmann | [ |
70 | 54dc4fdb | Michael Hanselmann | { "ip": "192.0.2.6", "mode": constants.NIC_MODE_ROUTED, |
71 | 7be048f0 | Michael Hanselmann | "mac": "01:23:45:67:68:9A", |
72 | 7be048f0 | Michael Hanselmann | }, |
73 | 6395cebb | Michael Hanselmann | { "mode": constants.NIC_MODE_BRIDGED, "link": "n0", "bridge": "br1", }, |
74 | 6395cebb | Michael Hanselmann | ], |
75 | 6395cebb | Michael Hanselmann | |
76 | 6395cebb | Michael Hanselmann | # Unknown settings
|
77 | 6395cebb | Michael Hanselmann | [{ "unknown": 999, }, { "foobar": "Hello World", }], |
78 | 6395cebb | Michael Hanselmann | ] |
79 | 6395cebb | Michael Hanselmann | |
80 | 6395cebb | Michael Hanselmann | beparam_variants = [ |
81 | 6395cebb | Michael Hanselmann | None,
|
82 | 6395cebb | Michael Hanselmann | {}, |
83 | 6395cebb | Michael Hanselmann | { constants.BE_VCPUS: 2, },
|
84 | 6395cebb | Michael Hanselmann | { constants.BE_MEMORY: 123, },
|
85 | 6395cebb | Michael Hanselmann | { constants.BE_VCPUS: 2,
|
86 | 6395cebb | Michael Hanselmann | constants.BE_MEMORY: 1024,
|
87 | 6395cebb | Michael Hanselmann | constants.BE_AUTO_BALANCE: True, }
|
88 | 6395cebb | Michael Hanselmann | ] |
89 | 6395cebb | Michael Hanselmann | |
90 | 6395cebb | Michael Hanselmann | hvparam_variants = [ |
91 | 6395cebb | Michael Hanselmann | None,
|
92 | 6395cebb | Michael Hanselmann | { constants.HV_BOOT_ORDER: "anc", },
|
93 | 6395cebb | Michael Hanselmann | { constants.HV_KERNEL_PATH: "/boot/fookernel",
|
94 | 6395cebb | Michael Hanselmann | constants.HV_ROOT_PATH: "/dev/hda1", },
|
95 | 6395cebb | Michael Hanselmann | ] |
96 | 6395cebb | Michael Hanselmann | |
97 | 6395cebb | Michael Hanselmann | for mode in [constants.INSTANCE_CREATE, constants.INSTANCE_IMPORT]: |
98 | 6395cebb | Michael Hanselmann | for nics in nic_variants: |
99 | 6395cebb | Michael Hanselmann | for disk_template in constants.DISK_TEMPLATES: |
100 | 6395cebb | Michael Hanselmann | for disks in disk_variants: |
101 | 6395cebb | Michael Hanselmann | for beparams in beparam_variants: |
102 | 6395cebb | Michael Hanselmann | for hvparams in hvparam_variants: |
103 | 6395cebb | Michael Hanselmann | data = { |
104 | 6395cebb | Michael Hanselmann | "name": "inst1.example.com", |
105 | 6395cebb | Michael Hanselmann | "hypervisor": constants.HT_FAKE,
|
106 | 6395cebb | Michael Hanselmann | "disks": disks,
|
107 | 6395cebb | Michael Hanselmann | "nics": nics,
|
108 | 6395cebb | Michael Hanselmann | "mode": mode,
|
109 | 6395cebb | Michael Hanselmann | "disk_template": disk_template,
|
110 | 130f0966 | Iustin Pop | "os": "debootstrap", |
111 | 6395cebb | Michael Hanselmann | } |
112 | 6395cebb | Michael Hanselmann | |
113 | 6395cebb | Michael Hanselmann | if beparams is not None: |
114 | 6395cebb | Michael Hanselmann | data["beparams"] = beparams
|
115 | 6395cebb | Michael Hanselmann | |
116 | 6395cebb | Michael Hanselmann | if hvparams is not None: |
117 | 6395cebb | Michael Hanselmann | data["hvparams"] = hvparams
|
118 | 6395cebb | Michael Hanselmann | |
119 | 6395cebb | Michael Hanselmann | for dry_run in [False, True]: |
120 | 6395cebb | Michael Hanselmann | op = self.Parse(data, dry_run)
|
121 | e1530b10 | Iustin Pop | self.assert_(isinstance(op, opcodes.OpInstanceCreate)) |
122 | 6395cebb | Michael Hanselmann | self.assertEqual(op.mode, mode)
|
123 | 6395cebb | Michael Hanselmann | self.assertEqual(op.disk_template, disk_template)
|
124 | 6395cebb | Michael Hanselmann | self.assertEqual(op.dry_run, dry_run)
|
125 | 6395cebb | Michael Hanselmann | self.assertEqual(len(op.disks), len(disks)) |
126 | 6395cebb | Michael Hanselmann | self.assertEqual(len(op.nics), len(nics)) |
127 | 6395cebb | Michael Hanselmann | |
128 | 7be048f0 | Michael Hanselmann | for opdisk, disk in zip(op.disks, disks): |
129 | 7be048f0 | Michael Hanselmann | for key in constants.IDISK_PARAMS: |
130 | 7be048f0 | Michael Hanselmann | self.assertEqual(opdisk.get(key), disk.get(key))
|
131 | 7be048f0 | Michael Hanselmann | self.assertFalse("unknown" in opdisk) |
132 | 7be048f0 | Michael Hanselmann | |
133 | 7be048f0 | Michael Hanselmann | for opnic, nic in zip(op.nics, nics): |
134 | 7be048f0 | Michael Hanselmann | for key in constants.INIC_PARAMS: |
135 | 7be048f0 | Michael Hanselmann | self.assertEqual(opnic.get(key), nic.get(key))
|
136 | 7be048f0 | Michael Hanselmann | self.assertFalse("unknown" in opnic) |
137 | 7be048f0 | Michael Hanselmann | self.assertFalse("foobar" in opnic) |
138 | 6395cebb | Michael Hanselmann | |
139 | 6395cebb | Michael Hanselmann | if beparams is None: |
140 | 6395cebb | Michael Hanselmann | self.assertEqualValues(op.beparams, {})
|
141 | 6395cebb | Michael Hanselmann | else:
|
142 | 6395cebb | Michael Hanselmann | self.assertEqualValues(op.beparams, beparams)
|
143 | 6395cebb | Michael Hanselmann | |
144 | 6395cebb | Michael Hanselmann | if hvparams is None: |
145 | 6395cebb | Michael Hanselmann | self.assertEqualValues(op.hvparams, {})
|
146 | 6395cebb | Michael Hanselmann | else:
|
147 | 6395cebb | Michael Hanselmann | self.assertEqualValues(op.hvparams, hvparams)
|
148 | 6395cebb | Michael Hanselmann | |
149 | 6395cebb | Michael Hanselmann | def testErrors(self): |
150 | 6395cebb | Michael Hanselmann | # Test all required fields
|
151 | 6395cebb | Michael Hanselmann | reqfields = { |
152 | 6395cebb | Michael Hanselmann | "name": "inst1.example.com", |
153 | 6395cebb | Michael Hanselmann | "disks": [],
|
154 | 6395cebb | Michael Hanselmann | "nics": [],
|
155 | 6395cebb | Michael Hanselmann | "mode": constants.INSTANCE_CREATE,
|
156 | 130f0966 | Iustin Pop | "disk_template": constants.DT_PLAIN,
|
157 | 130f0966 | Iustin Pop | "os": "debootstrap", |
158 | 6395cebb | Michael Hanselmann | } |
159 | 6395cebb | Michael Hanselmann | |
160 | 6395cebb | Michael Hanselmann | for name in reqfields.keys(): |
161 | 6395cebb | Michael Hanselmann | self.assertRaises(http.HttpBadRequest, self.Parse, |
162 | 6395cebb | Michael Hanselmann | dict(i for i in reqfields.iteritems() if i[0] != name), |
163 | 6395cebb | Michael Hanselmann | False)
|
164 | 6395cebb | Michael Hanselmann | |
165 | 6395cebb | Michael Hanselmann | # Invalid disks and nics
|
166 | 6395cebb | Michael Hanselmann | for field in ["disks", "nics"]: |
167 | 6395cebb | Michael Hanselmann | invalid_values = [None, 1, "", {}, [1, 2, 3], ["hda1", "hda2"]] |
168 | 6395cebb | Michael Hanselmann | |
169 | 6395cebb | Michael Hanselmann | if field == "disks": |
170 | 6395cebb | Michael Hanselmann | invalid_values.append([ |
171 | 6395cebb | Michael Hanselmann | # Disks without size
|
172 | 6395cebb | Michael Hanselmann | {}, |
173 | 6395cebb | Michael Hanselmann | { "mode": constants.DISK_RDWR, },
|
174 | 6395cebb | Michael Hanselmann | ]) |
175 | 6395cebb | Michael Hanselmann | |
176 | 6395cebb | Michael Hanselmann | for invvalue in invalid_values: |
177 | 6395cebb | Michael Hanselmann | data = reqfields.copy() |
178 | 6395cebb | Michael Hanselmann | data[field] = invvalue |
179 | 6395cebb | Michael Hanselmann | self.assertRaises(http.HttpBadRequest, self.Parse, data, False) |
180 | 6395cebb | Michael Hanselmann | |
181 | 6395cebb | Michael Hanselmann | |
182 | ebeb600f | Michael Hanselmann | class TestParseExportInstanceRequest(testutils.GanetiTestCase): |
183 | ebeb600f | Michael Hanselmann | def setUp(self): |
184 | ebeb600f | Michael Hanselmann | testutils.GanetiTestCase.setUp(self)
|
185 | ebeb600f | Michael Hanselmann | |
186 | ebeb600f | Michael Hanselmann | self.Parse = rlib2._ParseExportInstanceRequest
|
187 | ebeb600f | Michael Hanselmann | |
188 | ebeb600f | Michael Hanselmann | def test(self): |
189 | ebeb600f | Michael Hanselmann | name = "instmoo"
|
190 | ebeb600f | Michael Hanselmann | data = { |
191 | ebeb600f | Michael Hanselmann | "mode": constants.EXPORT_MODE_REMOTE,
|
192 | ebeb600f | Michael Hanselmann | "destination": [(1, 2, 3), (99, 99, 99)], |
193 | ebeb600f | Michael Hanselmann | "shutdown": True, |
194 | ebeb600f | Michael Hanselmann | "remove_instance": True, |
195 | ebeb600f | Michael Hanselmann | "x509_key_name": ("name", "hash"), |
196 | ebeb600f | Michael Hanselmann | "destination_x509_ca": ("x", "y", "z"), |
197 | ebeb600f | Michael Hanselmann | } |
198 | ebeb600f | Michael Hanselmann | op = self.Parse(name, data)
|
199 | 4ff922a2 | Iustin Pop | self.assert_(isinstance(op, opcodes.OpBackupExport)) |
200 | ebeb600f | Michael Hanselmann | self.assertEqual(op.instance_name, name)
|
201 | ebeb600f | Michael Hanselmann | self.assertEqual(op.mode, constants.EXPORT_MODE_REMOTE)
|
202 | ebeb600f | Michael Hanselmann | self.assertEqual(op.shutdown, True) |
203 | ebeb600f | Michael Hanselmann | self.assertEqual(op.remove_instance, True) |
204 | ebeb600f | Michael Hanselmann | self.assertEqualValues(op.x509_key_name, ("name", "hash")) |
205 | ebeb600f | Michael Hanselmann | self.assertEqualValues(op.destination_x509_ca, ("x", "y", "z")) |
206 | ebeb600f | Michael Hanselmann | |
207 | ebeb600f | Michael Hanselmann | def testDefaults(self): |
208 | ebeb600f | Michael Hanselmann | name = "inst1"
|
209 | ebeb600f | Michael Hanselmann | data = { |
210 | ebeb600f | Michael Hanselmann | "destination": "node2", |
211 | ebeb600f | Michael Hanselmann | "shutdown": False, |
212 | ebeb600f | Michael Hanselmann | } |
213 | ebeb600f | Michael Hanselmann | op = self.Parse(name, data)
|
214 | 4ff922a2 | Iustin Pop | self.assert_(isinstance(op, opcodes.OpBackupExport)) |
215 | ebeb600f | Michael Hanselmann | self.assertEqual(op.instance_name, name)
|
216 | ebeb600f | Michael Hanselmann | self.assertEqual(op.mode, constants.EXPORT_MODE_LOCAL)
|
217 | ebeb600f | Michael Hanselmann | self.assertEqual(op.remove_instance, False) |
218 | ebeb600f | Michael Hanselmann | |
219 | ebeb600f | Michael Hanselmann | def testErrors(self): |
220 | ebeb600f | Michael Hanselmann | self.assertRaises(http.HttpBadRequest, self.Parse, "err1", |
221 | ebeb600f | Michael Hanselmann | { "remove_instance": "True", }) |
222 | ebeb600f | Michael Hanselmann | self.assertRaises(http.HttpBadRequest, self.Parse, "err1", |
223 | ebeb600f | Michael Hanselmann | { "remove_instance": "False", }) |
224 | ebeb600f | Michael Hanselmann | |
225 | ebeb600f | Michael Hanselmann | |
226 | 5823e0d2 | Michael Hanselmann | class TestParseMigrateInstanceRequest(testutils.GanetiTestCase): |
227 | 5823e0d2 | Michael Hanselmann | def setUp(self): |
228 | 5823e0d2 | Michael Hanselmann | testutils.GanetiTestCase.setUp(self)
|
229 | 5823e0d2 | Michael Hanselmann | |
230 | 5823e0d2 | Michael Hanselmann | self.Parse = rlib2._ParseMigrateInstanceRequest
|
231 | 5823e0d2 | Michael Hanselmann | |
232 | 5823e0d2 | Michael Hanselmann | def test(self): |
233 | 5823e0d2 | Michael Hanselmann | name = "instYooho6ek"
|
234 | 5823e0d2 | Michael Hanselmann | |
235 | 5823e0d2 | Michael Hanselmann | for cleanup in [False, True]: |
236 | 5823e0d2 | Michael Hanselmann | for mode in constants.HT_MIGRATION_MODES: |
237 | 5823e0d2 | Michael Hanselmann | data = { |
238 | 5823e0d2 | Michael Hanselmann | "cleanup": cleanup,
|
239 | 5823e0d2 | Michael Hanselmann | "mode": mode,
|
240 | 5823e0d2 | Michael Hanselmann | } |
241 | 5823e0d2 | Michael Hanselmann | op = self.Parse(name, data)
|
242 | 75c866c2 | Iustin Pop | self.assert_(isinstance(op, opcodes.OpInstanceMigrate)) |
243 | 5823e0d2 | Michael Hanselmann | self.assertEqual(op.instance_name, name)
|
244 | 5823e0d2 | Michael Hanselmann | self.assertEqual(op.mode, mode)
|
245 | 5823e0d2 | Michael Hanselmann | self.assertEqual(op.cleanup, cleanup)
|
246 | 5823e0d2 | Michael Hanselmann | |
247 | 5823e0d2 | Michael Hanselmann | def testDefaults(self): |
248 | 5823e0d2 | Michael Hanselmann | name = "instnohZeex0"
|
249 | 5823e0d2 | Michael Hanselmann | |
250 | 5823e0d2 | Michael Hanselmann | op = self.Parse(name, {})
|
251 | 75c866c2 | Iustin Pop | self.assert_(isinstance(op, opcodes.OpInstanceMigrate)) |
252 | 5823e0d2 | Michael Hanselmann | self.assertEqual(op.instance_name, name)
|
253 | 5823e0d2 | Michael Hanselmann | self.assertEqual(op.mode, None) |
254 | 5823e0d2 | Michael Hanselmann | self.assertFalse(op.cleanup)
|
255 | 5823e0d2 | Michael Hanselmann | |
256 | 5823e0d2 | Michael Hanselmann | |
257 | d56e7dc7 | Michael Hanselmann | class TestParseRenameInstanceRequest(testutils.GanetiTestCase): |
258 | d56e7dc7 | Michael Hanselmann | def setUp(self): |
259 | d56e7dc7 | Michael Hanselmann | testutils.GanetiTestCase.setUp(self)
|
260 | d56e7dc7 | Michael Hanselmann | |
261 | d56e7dc7 | Michael Hanselmann | self.Parse = rlib2._ParseRenameInstanceRequest
|
262 | d56e7dc7 | Michael Hanselmann | |
263 | d56e7dc7 | Michael Hanselmann | def test(self): |
264 | d56e7dc7 | Michael Hanselmann | name = "instij0eeph7"
|
265 | d56e7dc7 | Michael Hanselmann | |
266 | d56e7dc7 | Michael Hanselmann | for new_name in ["ua0aiyoo", "fai3ongi"]: |
267 | d56e7dc7 | Michael Hanselmann | for ip_check in [False, True]: |
268 | d56e7dc7 | Michael Hanselmann | for name_check in [False, True]: |
269 | d56e7dc7 | Michael Hanselmann | data = { |
270 | d56e7dc7 | Michael Hanselmann | "new_name": new_name,
|
271 | d56e7dc7 | Michael Hanselmann | "ip_check": ip_check,
|
272 | d56e7dc7 | Michael Hanselmann | "name_check": name_check,
|
273 | d56e7dc7 | Michael Hanselmann | } |
274 | d56e7dc7 | Michael Hanselmann | |
275 | d56e7dc7 | Michael Hanselmann | op = self.Parse(name, data)
|
276 | 5659e2e2 | Iustin Pop | self.assert_(isinstance(op, opcodes.OpInstanceRename)) |
277 | d56e7dc7 | Michael Hanselmann | self.assertEqual(op.instance_name, name)
|
278 | d56e7dc7 | Michael Hanselmann | self.assertEqual(op.new_name, new_name)
|
279 | d56e7dc7 | Michael Hanselmann | self.assertEqual(op.ip_check, ip_check)
|
280 | d56e7dc7 | Michael Hanselmann | self.assertEqual(op.name_check, name_check)
|
281 | d56e7dc7 | Michael Hanselmann | |
282 | d56e7dc7 | Michael Hanselmann | def testDefaults(self): |
283 | d56e7dc7 | Michael Hanselmann | name = "instahchie3t"
|
284 | d56e7dc7 | Michael Hanselmann | |
285 | d56e7dc7 | Michael Hanselmann | for new_name in ["thag9mek", "quees7oh"]: |
286 | d56e7dc7 | Michael Hanselmann | data = { |
287 | d56e7dc7 | Michael Hanselmann | "new_name": new_name,
|
288 | d56e7dc7 | Michael Hanselmann | } |
289 | d56e7dc7 | Michael Hanselmann | |
290 | d56e7dc7 | Michael Hanselmann | op = self.Parse(name, data)
|
291 | 5659e2e2 | Iustin Pop | self.assert_(isinstance(op, opcodes.OpInstanceRename)) |
292 | d56e7dc7 | Michael Hanselmann | self.assertEqual(op.instance_name, name)
|
293 | d56e7dc7 | Michael Hanselmann | self.assertEqual(op.new_name, new_name)
|
294 | d56e7dc7 | Michael Hanselmann | self.assert_(op.ip_check)
|
295 | d56e7dc7 | Michael Hanselmann | self.assert_(op.name_check)
|
296 | d56e7dc7 | Michael Hanselmann | |
297 | d56e7dc7 | Michael Hanselmann | |
298 | 3882937a | Michael Hanselmann | class TestParseModifyInstanceRequest(testutils.GanetiTestCase): |
299 | 3882937a | Michael Hanselmann | def setUp(self): |
300 | 3882937a | Michael Hanselmann | testutils.GanetiTestCase.setUp(self)
|
301 | 3882937a | Michael Hanselmann | |
302 | 3882937a | Michael Hanselmann | self.Parse = rlib2._ParseModifyInstanceRequest
|
303 | 3882937a | Michael Hanselmann | |
304 | 3882937a | Michael Hanselmann | def test(self): |
305 | 3882937a | Michael Hanselmann | name = "instush8gah"
|
306 | 3882937a | Michael Hanselmann | |
307 | 3882937a | Michael Hanselmann | test_disks = [ |
308 | 3882937a | Michael Hanselmann | [], |
309 | 3882937a | Michael Hanselmann | [(1, { constants.IDISK_MODE: constants.DISK_RDWR, })],
|
310 | 3882937a | Michael Hanselmann | ] |
311 | 3882937a | Michael Hanselmann | |
312 | 3882937a | Michael Hanselmann | for osparams in [{}, { "some": "value", "other": "Hello World", }]: |
313 | 3882937a | Michael Hanselmann | for hvparams in [{}, { constants.HV_KERNEL_PATH: "/some/kernel", }]: |
314 | 3882937a | Michael Hanselmann | for beparams in [{}, { constants.BE_MEMORY: 128, }]: |
315 | 3882937a | Michael Hanselmann | for force in [False, True]: |
316 | 3882937a | Michael Hanselmann | for nics in [[], [(0, { constants.INIC_IP: "192.0.2.1", })]]: |
317 | 3882937a | Michael Hanselmann | for disks in test_disks: |
318 | 3882937a | Michael Hanselmann | for disk_template in constants.DISK_TEMPLATES: |
319 | 3882937a | Michael Hanselmann | data = { |
320 | 3882937a | Michael Hanselmann | "osparams": osparams,
|
321 | 3882937a | Michael Hanselmann | "hvparams": hvparams,
|
322 | 3882937a | Michael Hanselmann | "beparams": beparams,
|
323 | 3882937a | Michael Hanselmann | "nics": nics,
|
324 | 3882937a | Michael Hanselmann | "disks": disks,
|
325 | 3882937a | Michael Hanselmann | "force": force,
|
326 | 3882937a | Michael Hanselmann | "disk_template": disk_template,
|
327 | 3882937a | Michael Hanselmann | } |
328 | 3882937a | Michael Hanselmann | |
329 | 3882937a | Michael Hanselmann | op = self.Parse(name, data)
|
330 | 9a3cc7ae | Iustin Pop | self.assert_(isinstance(op, opcodes.OpInstanceSetParams)) |
331 | 3882937a | Michael Hanselmann | self.assertEqual(op.instance_name, name)
|
332 | 3882937a | Michael Hanselmann | self.assertEqual(op.hvparams, hvparams)
|
333 | 3882937a | Michael Hanselmann | self.assertEqual(op.beparams, beparams)
|
334 | 3882937a | Michael Hanselmann | self.assertEqual(op.osparams, osparams)
|
335 | 3882937a | Michael Hanselmann | self.assertEqual(op.force, force)
|
336 | 3882937a | Michael Hanselmann | self.assertEqual(op.nics, nics)
|
337 | 3882937a | Michael Hanselmann | self.assertEqual(op.disks, disks)
|
338 | 3882937a | Michael Hanselmann | self.assertEqual(op.disk_template, disk_template)
|
339 | 3882937a | Michael Hanselmann | self.assert_(op.remote_node is None) |
340 | 3882937a | Michael Hanselmann | self.assert_(op.os_name is None) |
341 | 3882937a | Michael Hanselmann | self.assertFalse(op.force_variant)
|
342 | 3882937a | Michael Hanselmann | |
343 | 3882937a | Michael Hanselmann | def testDefaults(self): |
344 | 3882937a | Michael Hanselmann | name = "instir8aish31"
|
345 | 3882937a | Michael Hanselmann | |
346 | 3882937a | Michael Hanselmann | op = self.Parse(name, {})
|
347 | 9a3cc7ae | Iustin Pop | self.assert_(isinstance(op, opcodes.OpInstanceSetParams)) |
348 | 3882937a | Michael Hanselmann | self.assertEqual(op.instance_name, name)
|
349 | 3882937a | Michael Hanselmann | self.assertEqual(op.hvparams, {})
|
350 | 3882937a | Michael Hanselmann | self.assertEqual(op.beparams, {})
|
351 | 3882937a | Michael Hanselmann | self.assertEqual(op.osparams, {})
|
352 | 3882937a | Michael Hanselmann | self.assertFalse(op.force)
|
353 | 3882937a | Michael Hanselmann | self.assertEqual(op.nics, [])
|
354 | 3882937a | Michael Hanselmann | self.assertEqual(op.disks, [])
|
355 | 3882937a | Michael Hanselmann | self.assert_(op.disk_template is None) |
356 | 3882937a | Michael Hanselmann | self.assert_(op.remote_node is None) |
357 | 3882937a | Michael Hanselmann | self.assert_(op.os_name is None) |
358 | 3882937a | Michael Hanselmann | self.assertFalse(op.force_variant)
|
359 | 3882937a | Michael Hanselmann | |
360 | 3882937a | Michael Hanselmann | |
361 | c744425f | Michael Hanselmann | class TestParseInstanceReinstallRequest(testutils.GanetiTestCase): |
362 | c744425f | Michael Hanselmann | def setUp(self): |
363 | c744425f | Michael Hanselmann | testutils.GanetiTestCase.setUp(self)
|
364 | c744425f | Michael Hanselmann | |
365 | c744425f | Michael Hanselmann | self.Parse = rlib2._ParseInstanceReinstallRequest
|
366 | c744425f | Michael Hanselmann | |
367 | c744425f | Michael Hanselmann | def _Check(self, ops, name): |
368 | c744425f | Michael Hanselmann | expcls = [ |
369 | c744425f | Michael Hanselmann | opcodes.OpShutdownInstance, |
370 | 5073fd8f | Iustin Pop | opcodes.OpInstanceReinstall, |
371 | c744425f | Michael Hanselmann | opcodes.OpStartupInstance, |
372 | c744425f | Michael Hanselmann | ] |
373 | c744425f | Michael Hanselmann | |
374 | c744425f | Michael Hanselmann | self.assert_(compat.all(isinstance(op, exp) |
375 | c744425f | Michael Hanselmann | for op, exp in zip(ops, expcls))) |
376 | c744425f | Michael Hanselmann | self.assert_(compat.all(op.instance_name == name for op in ops)) |
377 | c744425f | Michael Hanselmann | |
378 | c744425f | Michael Hanselmann | def test(self): |
379 | c744425f | Michael Hanselmann | name = "shoo0tihohma"
|
380 | c744425f | Michael Hanselmann | |
381 | c744425f | Michael Hanselmann | ops = self.Parse(name, {"os": "sys1", "start": True,}) |
382 | c744425f | Michael Hanselmann | self.assertEqual(len(ops), 3) |
383 | c744425f | Michael Hanselmann | self._Check(ops, name)
|
384 | c744425f | Michael Hanselmann | self.assertEqual(ops[1].os_type, "sys1") |
385 | c744425f | Michael Hanselmann | self.assertFalse(ops[1].osparams) |
386 | c744425f | Michael Hanselmann | |
387 | c744425f | Michael Hanselmann | ops = self.Parse(name, {"os": "sys2", "start": False,}) |
388 | c744425f | Michael Hanselmann | self.assertEqual(len(ops), 2) |
389 | c744425f | Michael Hanselmann | self._Check(ops, name)
|
390 | c744425f | Michael Hanselmann | self.assertEqual(ops[1].os_type, "sys2") |
391 | c744425f | Michael Hanselmann | |
392 | c744425f | Michael Hanselmann | osparams = { |
393 | c744425f | Michael Hanselmann | "reformat": "1", |
394 | c744425f | Michael Hanselmann | } |
395 | c744425f | Michael Hanselmann | ops = self.Parse(name, {"os": "sys4035", "start": True, |
396 | c744425f | Michael Hanselmann | "osparams": osparams,})
|
397 | c744425f | Michael Hanselmann | self.assertEqual(len(ops), 3) |
398 | c744425f | Michael Hanselmann | self._Check(ops, name)
|
399 | c744425f | Michael Hanselmann | self.assertEqual(ops[1].os_type, "sys4035") |
400 | c744425f | Michael Hanselmann | self.assertEqual(ops[1].osparams, osparams) |
401 | c744425f | Michael Hanselmann | |
402 | c744425f | Michael Hanselmann | def testDefaults(self): |
403 | c744425f | Michael Hanselmann | name = "noolee0g"
|
404 | c744425f | Michael Hanselmann | |
405 | c744425f | Michael Hanselmann | ops = self.Parse(name, {"os": "linux1"}) |
406 | c744425f | Michael Hanselmann | self.assertEqual(len(ops), 3) |
407 | c744425f | Michael Hanselmann | self._Check(ops, name)
|
408 | c744425f | Michael Hanselmann | self.assertEqual(ops[1].os_type, "linux1") |
409 | c744425f | Michael Hanselmann | self.assertFalse(ops[1].osparams) |
410 | c744425f | Michael Hanselmann | |
411 | c744425f | Michael Hanselmann | |
412 | 0dbaa9ca | Adeodato Simo | class TestParseRenameGroupRequest(testutils.GanetiTestCase): |
413 | 0dbaa9ca | Adeodato Simo | def setUp(self): |
414 | 0dbaa9ca | Adeodato Simo | testutils.GanetiTestCase.setUp(self)
|
415 | 0dbaa9ca | Adeodato Simo | |
416 | 0dbaa9ca | Adeodato Simo | self.Parse = rlib2._ParseRenameGroupRequest
|
417 | 0dbaa9ca | Adeodato Simo | |
418 | 0dbaa9ca | Adeodato Simo | def test(self): |
419 | 0dbaa9ca | Adeodato Simo | name = "instij0eeph7"
|
420 | 0dbaa9ca | Adeodato Simo | data = { |
421 | 0dbaa9ca | Adeodato Simo | "new_name": "ua0aiyoo", |
422 | 0dbaa9ca | Adeodato Simo | } |
423 | 0dbaa9ca | Adeodato Simo | |
424 | 0dbaa9ca | Adeodato Simo | op = self.Parse(name, data, False) |
425 | 0dbaa9ca | Adeodato Simo | |
426 | a8173e82 | Iustin Pop | self.assert_(isinstance(op, opcodes.OpGroupRename)) |
427 | 0dbaa9ca | Adeodato Simo | self.assertEqual(op.old_name, name)
|
428 | 0dbaa9ca | Adeodato Simo | self.assertEqual(op.new_name, "ua0aiyoo") |
429 | 0dbaa9ca | Adeodato Simo | self.assertFalse(op.dry_run)
|
430 | 0dbaa9ca | Adeodato Simo | |
431 | 0dbaa9ca | Adeodato Simo | def testDryRun(self): |
432 | 0dbaa9ca | Adeodato Simo | name = "instij0eeph7"
|
433 | 0dbaa9ca | Adeodato Simo | data = { |
434 | 0dbaa9ca | Adeodato Simo | "new_name": "ua0aiyoo", |
435 | 0dbaa9ca | Adeodato Simo | } |
436 | 0dbaa9ca | Adeodato Simo | |
437 | 0dbaa9ca | Adeodato Simo | op = self.Parse(name, data, True) |
438 | 0dbaa9ca | Adeodato Simo | |
439 | a8173e82 | Iustin Pop | self.assert_(isinstance(op, opcodes.OpGroupRename)) |
440 | 0dbaa9ca | Adeodato Simo | self.assertEqual(op.old_name, name)
|
441 | 0dbaa9ca | Adeodato Simo | self.assertEqual(op.new_name, "ua0aiyoo") |
442 | 0dbaa9ca | Adeodato Simo | self.assert_(op.dry_run)
|
443 | 0dbaa9ca | Adeodato Simo | |
444 | 0dbaa9ca | Adeodato Simo | |
445 | 6395cebb | Michael Hanselmann | if __name__ == '__main__': |
446 | 6395cebb | Michael Hanselmann | testutils.GanetiTestProgram() |