Revision 2f4b4f78 qa/qa_instance.py

b/qa/qa_instance.py
33 33
import qa_utils
34 34
import qa_error
35 35

  
36
from qa_utils import AssertEqual, AssertNotEqual, AssertIn, StartSSH
36
from qa_utils import AssertIn, AssertCommand
37 37

  
38 38

  
39 39
def _GetDiskStatePath(disk):
......
48 48

  
49 49

  
50 50
def _DiskTest(node, disk_template):
51
  master = qa_config.GetMasterNode()
52

  
53 51
  instance = qa_config.AcquireInstance()
54 52
  try:
55 53
    cmd = (['gnt-instance', 'add',
......
59 57
           _GetGenericAddParameters())
60 58
    cmd.append(instance['name'])
61 59

  
62
    AssertEqual(StartSSH(master['primary'],
63
                         utils.ShellQuoteArgs(cmd)).wait(), 0)
60
    AssertCommand(cmd)
64 61

  
65 62
    _CheckSsconfInstanceList(instance["name"])
66 63

  
......
83 80

  
84 81
def TestInstanceRemove(instance):
85 82
  """gnt-instance remove"""
86
  master = qa_config.GetMasterNode()
87

  
88
  cmd = ['gnt-instance', 'remove', '-f', instance['name']]
89
  AssertEqual(StartSSH(master['primary'],
90
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
83
  AssertCommand(["gnt-instance", "remove", "-f", instance["name"]])
91 84

  
92 85
  qa_config.ReleaseInstance(instance)
93 86

  
94 87

  
95 88
def TestInstanceStartup(instance):
96 89
  """gnt-instance startup"""
97
  master = qa_config.GetMasterNode()
98

  
99
  cmd = ['gnt-instance', 'startup', instance['name']]
100
  AssertEqual(StartSSH(master['primary'],
101
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
90
  AssertCommand(["gnt-instance", "startup", instance["name"]])
102 91

  
103 92

  
104 93
def TestInstanceShutdown(instance):
105 94
  """gnt-instance shutdown"""
106
  master = qa_config.GetMasterNode()
107

  
108
  cmd = ['gnt-instance', 'shutdown', instance['name']]
109
  AssertEqual(StartSSH(master['primary'],
110
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
95
  AssertCommand(["gnt-instance", "shutdown", instance["name"]])
111 96

  
112 97

  
113 98
def TestInstanceReboot(instance):
114 99
  """gnt-instance reboot"""
115
  master = qa_config.GetMasterNode()
116

  
117 100
  options = qa_config.get('options', {})
118 101
  reboot_types = options.get("reboot-types", constants.REBOOT_TYPES)
119

  
102
  name = instance["name"]
120 103
  for rtype in reboot_types:
121
    cmd = ['gnt-instance', 'reboot', '--type=%s' % rtype, instance['name']]
122
    AssertEqual(StartSSH(master['primary'],
123
                         utils.ShellQuoteArgs(cmd)).wait(), 0)
104
    AssertCommand(["gnt-instance", "reboot", "--type=%s" % rtype, name])
124 105

  
125 106

  
126 107
def TestInstanceReinstall(instance):
127 108
  """gnt-instance reinstall"""
128
  master = qa_config.GetMasterNode()
129

  
130
  cmd = ['gnt-instance', 'reinstall', '-f', instance['name']]
131
  AssertEqual(StartSSH(master['primary'],
132
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
109
  AssertCommand(["gnt-instance", "reinstall", "-f", instance["name"]])
133 110

  
134 111

  
135 112
def _ReadSsconfInstanceList():
......
158 135

  
159 136
def TestInstanceRename(instance, rename_target):
160 137
  """gnt-instance rename"""
161
  master = qa_config.GetMasterNode()
162

  
163 138
  rename_source = instance['name']
164 139

  
165 140
  for name1, name2 in [(rename_source, rename_target),
166 141
                       (rename_target, rename_source)]:
167 142
    _CheckSsconfInstanceList(name1)
168
    cmd = ['gnt-instance', 'rename', name1, name2]
169
    AssertEqual(StartSSH(master['primary'],
170
                         utils.ShellQuoteArgs(cmd)).wait(), 0)
143
    AssertCommand(["gnt-instance", "rename", name1, name2])
171 144
    _CheckSsconfInstanceList(name2)
172 145

  
173 146

  
174 147
def TestInstanceFailover(instance):
175 148
  """gnt-instance failover"""
176
  master = qa_config.GetMasterNode()
177

  
178 149
  cmd = ['gnt-instance', 'failover', '--force', instance['name']]
179
  AssertEqual(StartSSH(master['primary'],
180
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
181

  
150
  # failover ...
151
  AssertCommand(cmd)
182 152
  # ... and back
183
  cmd = ['gnt-instance', 'failover', '--force', instance['name']]
184
  AssertEqual(StartSSH(master['primary'],
185
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
153
  AssertCommand(cmd)
186 154

  
187 155

  
188 156
def TestInstanceMigrate(instance):
189 157
  """gnt-instance migrate"""
190
  master = qa_config.GetMasterNode()
191

  
192 158
  cmd = ["gnt-instance", "migrate", "--force", instance["name"]]
193
  AssertEqual(StartSSH(master["primary"],
194
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
195

  
159
  # migrate ...
160
  AssertCommand(cmd)
196 161
  # ... and back
197
  cmd = ["gnt-instance", "migrate", "--force", instance["name"]]
198
  AssertEqual(StartSSH(master["primary"],
199
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
162
  AssertCommand(cmd)
200 163

  
201 164

  
202 165
def TestInstanceInfo(instance):
203 166
  """gnt-instance info"""
204
  master = qa_config.GetMasterNode()
205

  
206
  cmd = ['gnt-instance', 'info', instance['name']]
207
  AssertEqual(StartSSH(master['primary'],
208
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
167
  AssertCommand(["gnt-instance", "info", instance["name"]])
209 168

  
210 169

  
211 170
def TestInstanceModify(instance):
212 171
  """gnt-instance modify"""
213
  master = qa_config.GetMasterNode()
214

  
215 172
  # Assume /sbin/init exists on all systems
216 173
  test_kernel = "/sbin/init"
217 174
  test_initrd = test_kernel
218 175

  
219 176
  orig_memory = qa_config.get('mem')
220
  orig_bridge = qa_config.get('bridge', 'xen-br0')
177
  #orig_bridge = qa_config.get("bridge", "xen-br0")
221 178
  args = [
222 179
    ["-B", "%s=128" % constants.BE_MEMORY],
223 180
    ["-B", "%s=%s" % (constants.BE_MEMORY, orig_memory)],
......
240 197
    #["-H", "%s=%s" % (constants.HV_BOOT_ORDER, constants.VALUE_DEFAULT)],
241 198
    ]
242 199
  for alist in args:
243
    cmd = ['gnt-instance', 'modify'] + alist + [instance['name']]
244
    AssertEqual(StartSSH(master['primary'],
245
                         utils.ShellQuoteArgs(cmd)).wait(), 0)
200
    AssertCommand(["gnt-instance", "modify"] + alist + [instance["name"]])
246 201

  
247 202
  # check no-modify
248
  cmd = ['gnt-instance', 'modify', instance['name']]
249
  AssertNotEqual(StartSSH(master['primary'],
250
                          utils.ShellQuoteArgs(cmd)).wait(), 0)
203
  AssertCommand(["gnt-instance", "modify", instance["name"]], fail=True)
251 204

  
252 205

  
253 206
def TestInstanceConvertDisk(instance, snode):
254 207
  """gnt-instance modify -t"""
255
  master = qa_config.GetMasterNode()
256
  cmd = ['gnt-instance', 'modify', '-t', 'plain', instance['name']]
257
  AssertEqual(StartSSH(master['primary'],
258
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
259
  cmd = ['gnt-instance', 'modify', '-t', 'drbd', '-n', snode['primary'],
260
         instance['name']]
261
  AssertEqual(StartSSH(master['primary'],
262
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
208
  name = instance["name"]
209
  AssertCommand(["gnt-instance", "modify", "-t", "plain", name])
210
  AssertCommand(["gnt-instance", "modify", "-t", "drbd",
211
                 "-n", snode["primary"], name])
263 212

  
264 213

  
265 214
def TestInstanceList():
266 215
  """gnt-instance list"""
267
  master = qa_config.GetMasterNode()
268

  
269
  cmd = ['gnt-instance', 'list']
270
  AssertEqual(StartSSH(master['primary'],
271
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
216
  AssertCommand(["gnt-instance", "list"])
272 217

  
273 218

  
274 219
def TestInstanceConsole(instance):
275 220
  """gnt-instance console"""
276
  master = qa_config.GetMasterNode()
277

  
278
  cmd = ['gnt-instance', 'console', '--show-cmd', instance['name']]
279
  AssertEqual(StartSSH(master['primary'],
280
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
221
  AssertCommand(["gnt-instance", "console", "--show-cmd", instance["name"]])
281 222

  
282 223

  
283 224
def TestReplaceDisks(instance, pnode, snode, othernode):
284 225
  """gnt-instance replace-disks"""
285
  master = qa_config.GetMasterNode()
286

  
287 226
  def buildcmd(args):
288 227
    cmd = ['gnt-instance', 'replace-disks']
289 228
    cmd.extend(args)
290 229
    cmd.append(instance["name"])
291 230
    return cmd
292 231

  
293
  cmd = buildcmd(["-p"])
294
  AssertEqual(StartSSH(master['primary'],
295
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
296

  
297
  cmd = buildcmd(["-s"])
298
  AssertEqual(StartSSH(master['primary'],
299
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
300

  
301
  cmd = buildcmd(["--new-secondary=%s" % othernode["primary"]])
302
  AssertEqual(StartSSH(master['primary'],
303
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
304

  
305
  # Restore
306
  cmd = buildcmd(["--new-secondary=%s" % snode["primary"]])
307
  AssertEqual(StartSSH(master['primary'],
308
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
232
  for data in [
233
    ["-p"],
234
    ["-s"],
235
    ["--new-secondary=%s" % othernode["primary"]],
236
    # and restore
237
    ["--new-secondary=%s" % snode["primary"]],
238
    ]:
239
    AssertCommand(buildcmd(data))
309 240

  
310 241

  
311 242
def TestInstanceExport(instance, node):
312 243
  """gnt-backup export -n ..."""
313
  master = qa_config.GetMasterNode()
314

  
315
  cmd = ['gnt-backup', 'export', '-n', node['primary'], instance['name']]
316
  AssertEqual(StartSSH(master['primary'],
317
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
318

  
319
  return qa_utils.ResolveInstanceName(instance["name"])
244
  name = instance["name"]
245
  AssertCommand(["gnt-backup", "export", "-n", node["primary"], name])
246
  return qa_utils.ResolveInstanceName(name)
320 247

  
321 248

  
322 249
def TestInstanceExportWithRemove(instance, node):
323 250
  """gnt-backup export --remove-instance"""
324
  master = qa_config.GetMasterNode()
325

  
326
  cmd = ['gnt-backup', 'export', '-n', node['primary'], "--remove-instance",
327
         instance['name']]
328
  AssertEqual(StartSSH(master['primary'],
329
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
251
  AssertCommand(["gnt-backup", "export", "-n", node["primary"],
252
                 "--remove-instance", instance["name"]])
330 253

  
331 254

  
332 255
def TestInstanceExportNoTarget(instance):
333 256
  """gnt-backup export (without target node, should fail)"""
334
  master = qa_config.GetMasterNode()
335

  
336
  cmd = ["gnt-backup", "export", instance["name"]]
337
  AssertNotEqual(StartSSH(master['primary'],
338
                          utils.ShellQuoteArgs(cmd)).wait(), 0)
257
  AssertCommand(["gnt-backup", "export", instance["name"]], fail=True)
339 258

  
340 259

  
341 260
def TestInstanceImport(node, newinst, expnode, name):
342 261
  """gnt-backup import"""
343
  master = qa_config.GetMasterNode()
344

  
345 262
  cmd = (['gnt-backup', 'import',
346 263
          '--disk-template=plain',
347 264
          '--no-ip-check',
......
351 268
          '--node=%s' % node['primary']] +
352 269
         _GetGenericAddParameters())
353 270
  cmd.append(newinst['name'])
354
  AssertEqual(StartSSH(master['primary'],
355
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
271
  AssertCommand(cmd)
356 272

  
357 273

  
358 274
def TestBackupList(expnode):
359 275
  """gnt-backup list"""
360
  master = qa_config.GetMasterNode()
361

  
362
  cmd = ['gnt-backup', 'list', '--node=%s' % expnode['primary']]
363
  AssertEqual(StartSSH(master['primary'],
364
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
276
  AssertCommand(["gnt-backup", "list", "--node=%s" % expnode["primary"]])
365 277

  
366 278

  
367 279
def _TestInstanceDiskFailure(instance, node, node2, onmaster):
......
390 302

  
391 303
      m = re_disk.match(phys)
392 304
      if not m:
393
        raise qa_error.Error("Unknown disk name format: %s" % disk)
305
        raise qa_error.Error("Unknown disk name format: %s" % phys)
394 306

  
395 307
      name = m.group(1)
396 308
      if name not in node2disk[node_name]:
......
406 318
    cmds = []
407 319
    for disk in disks:
408 320
      cmds.append(sq(["test", "-f", _GetDiskStatePath(disk)]))
409
    AssertEqual(StartSSH(node_name, ' && '.join(cmds)).wait(), 0)
321
    AssertCommand(" && ".join(cmds), node=node_name)
410 322

  
411 323
  print qa_utils.FormatInfo("Getting device paths")
412 324
  cmd = ['gnt-instance', 'activate-disks', instance['name']]
......
432 344
    for name in node2disk[[node2_full, node_full][int(onmaster)]]:
433 345
      halted_disks.append(name)
434 346
      cmds.append(sq(["echo", "offline"]) + " >%s" % _GetDiskStatePath(name))
435
    AssertEqual(StartSSH([node2, node][int(onmaster)]['primary'],
436
                         ' && '.join(cmds)).wait(), 0)
347
    AssertCommand(" && ".join(cmds), node=[node2, node][int(onmaster)])
437 348

  
438 349
    print qa_utils.FormatInfo("Write to disks and give some time to notice"
439 350
                              " to notice the problem")
......
442 353
      cmds.append(sq(["dd", "count=1", "bs=512", "conv=notrunc",
443 354
                      "if=%s" % disk, "of=%s" % disk]))
444 355
    for _ in (0, 1, 2):
445
      AssertEqual(StartSSH(node['primary'], ' && '.join(cmds)).wait(), 0)
356
      AssertCommand(" && ".join(cmds), node=node)
446 357
      time.sleep(3)
447 358

  
448 359
    print qa_utils.FormatInfo("Debugging info")
449 360
    for name in drbddevs:
450
      cmd = ['drbdsetup', name, 'show']
451
      AssertEqual(StartSSH(node['primary'], sq(cmd)).wait(), 0)
361
      AssertCommand(["drbdsetup", name, "show"], node=node)
452 362

  
453
    cmd = ['gnt-instance', 'info', instance['name']]
454
    AssertEqual(StartSSH(master['primary'], sq(cmd)).wait(), 0)
363
    AssertCommand(["gnt-instance", "info", instance["name"]])
455 364

  
456 365
  finally:
457 366
    print qa_utils.FormatInfo("Activating disks again")
458 367
    cmds = []
459 368
    for name in halted_disks:
460 369
      cmds.append(sq(["echo", "running"]) + " >%s" % _GetDiskStatePath(name))
461
    AssertEqual(StartSSH([node2, node][int(onmaster)]['primary'],
462
                         '; '.join(cmds)).wait(), 0)
370
    AssertCommand("; ".join(cmds), node=[node2, node][int(onmaster)])
463 371

  
464 372
  if onmaster:
465 373
    for name in drbddevs:
466
      cmd = ['drbdsetup', name, 'detach']
467
      AssertEqual(StartSSH(node['primary'], sq(cmd)).wait(), 0)
374
      AssertCommand(["drbdsetup", name, "detach"], node=node)
468 375
  else:
469 376
    for name in drbddevs:
470
      cmd = ['drbdsetup', name, 'disconnect']
471
      AssertEqual(StartSSH(node2['primary'], sq(cmd)).wait(), 0)
377
      AssertCommand(["drbdsetup", name, "disconnect"], node=node2)
472 378

  
473 379
  # TODO
474
  #cmd = ['vgs']
475
  #AssertEqual(StartSSH([node2, node][int(onmaster)]['primary'],
476
  #                     sq(cmd)).wait(), 0)
380
  #AssertCommand(["vgs"], [node2, node][int(onmaster)])
477 381

  
478 382
  print qa_utils.FormatInfo("Making sure disks are up again")
479
  cmd = ['gnt-instance', 'replace-disks', instance['name']]
480
  AssertEqual(StartSSH(master['primary'], sq(cmd)).wait(), 0)
383
  AssertCommand(["gnt-instance", "replace-disks", instance["name"]])
481 384

  
482 385
  print qa_utils.FormatInfo("Restarting instance")
483
  cmd = ['gnt-instance', 'shutdown', instance['name']]
484
  AssertEqual(StartSSH(master['primary'], sq(cmd)).wait(), 0)
485

  
486
  cmd = ['gnt-instance', 'startup', instance['name']]
487
  AssertEqual(StartSSH(master['primary'], sq(cmd)).wait(), 0)
386
  AssertCommand(["gnt-instance", "shutdown", instance["name"]])
387
  AssertCommand(["gnt-instance", "startup", instance["name"]])
488 388

  
489
  cmd = ['gnt-cluster', 'verify']
490
  AssertEqual(StartSSH(master['primary'], sq(cmd)).wait(), 0)
389
  AssertCommand(["gnt-cluster", "verify"])
491 390

  
492 391

  
493 392
def TestInstanceMasterDiskFailure(instance, node, node2):

Also available in: Unified diff