Statistics
| Branch: | Tag: | Revision:

root / test / ganeti.rapi.rlib2_unittest.py @ 6760e4ed

History | View | Annotate | Download (11.2 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 6395cebb Michael Hanselmann
                  self.assert_(isinstance(op, opcodes.OpCreateInstance))
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 ebeb600f Michael Hanselmann
    self.assert_(isinstance(op, opcodes.OpExportInstance))
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 ebeb600f Michael Hanselmann
    self.assert_(isinstance(op, opcodes.OpExportInstance))
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 5823e0d2 Michael Hanselmann
        self.assert_(isinstance(op, opcodes.OpMigrateInstance))
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 5823e0d2 Michael Hanselmann
    self.assert_(isinstance(op, opcodes.OpMigrateInstance))
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 d56e7dc7 Michael Hanselmann
          self.assert_(isinstance(op, opcodes.OpRenameInstance))
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 d56e7dc7 Michael Hanselmann
      self.assert_(isinstance(op, opcodes.OpRenameInstance))
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 3882937a Michael Hanselmann
                  self.assert_(isinstance(op, opcodes.OpSetInstanceParams))
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 3882937a Michael Hanselmann
    self.assert_(isinstance(op, opcodes.OpSetInstanceParams))
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 6395cebb Michael Hanselmann
if __name__ == '__main__':
362 6395cebb Michael Hanselmann
  testutils.GanetiTestProgram()