Statistics
| Branch: | Tag: | Revision:

root / qa / qa_instance.py @ cec9845c

History | View | Annotate | Download (3.3 kB)

1 cec9845c Michael Hanselmann
# Copyright (C) 2007 Google Inc.
2 cec9845c Michael Hanselmann
#
3 cec9845c Michael Hanselmann
# This program is free software; you can redistribute it and/or modify
4 cec9845c Michael Hanselmann
# it under the terms of the GNU General Public License as published by
5 cec9845c Michael Hanselmann
# the Free Software Foundation; either version 2 of the License, or
6 cec9845c Michael Hanselmann
# (at your option) any later version.
7 cec9845c Michael Hanselmann
#
8 cec9845c Michael Hanselmann
# This program is distributed in the hope that it will be useful, but
9 cec9845c Michael Hanselmann
# WITHOUT ANY WARRANTY; without even the implied warranty of
10 cec9845c Michael Hanselmann
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 cec9845c Michael Hanselmann
# General Public License for more details.
12 cec9845c Michael Hanselmann
#
13 cec9845c Michael Hanselmann
# You should have received a copy of the GNU General Public License
14 cec9845c Michael Hanselmann
# along with this program; if not, write to the Free Software
15 cec9845c Michael Hanselmann
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
16 cec9845c Michael Hanselmann
# 02110-1301, USA.
17 cec9845c Michael Hanselmann
18 cec9845c Michael Hanselmann
19 cec9845c Michael Hanselmann
"""Instance related QA tests.
20 cec9845c Michael Hanselmann

21 cec9845c Michael Hanselmann
"""
22 cec9845c Michael Hanselmann
23 cec9845c Michael Hanselmann
from ganeti import utils
24 cec9845c Michael Hanselmann
25 cec9845c Michael Hanselmann
import qa_config
26 cec9845c Michael Hanselmann
27 cec9845c Michael Hanselmann
from qa_utils import AssertEqual, StartSSH
28 cec9845c Michael Hanselmann
29 cec9845c Michael Hanselmann
30 cec9845c Michael Hanselmann
def _DiskTest(node, args):
31 cec9845c Michael Hanselmann
  master = qa_config.GetMasterNode()
32 cec9845c Michael Hanselmann
33 cec9845c Michael Hanselmann
  instance = qa_config.AcquireInstance()
34 cec9845c Michael Hanselmann
  try:
35 cec9845c Michael Hanselmann
    cmd = ['gnt-instance', 'add',
36 cec9845c Michael Hanselmann
           '--os-type=%s' % qa_config.get('os'),
37 cec9845c Michael Hanselmann
           '--os-size=%s' % qa_config.get('os-size'),
38 cec9845c Michael Hanselmann
           '--swap-size=%s' % qa_config.get('swap-size'),
39 cec9845c Michael Hanselmann
           '--memory=%s' % qa_config.get('mem'),
40 cec9845c Michael Hanselmann
           '--node=%s' % node['primary']]
41 cec9845c Michael Hanselmann
    if args:
42 cec9845c Michael Hanselmann
      cmd += args
43 cec9845c Michael Hanselmann
    cmd.append(instance['name'])
44 cec9845c Michael Hanselmann
45 cec9845c Michael Hanselmann
    AssertEqual(StartSSH(master['primary'],
46 cec9845c Michael Hanselmann
                         utils.ShellQuoteArgs(cmd)).wait(), 0)
47 cec9845c Michael Hanselmann
    return instance
48 cec9845c Michael Hanselmann
  except:
49 cec9845c Michael Hanselmann
    qa_config.ReleaseInstance(instance)
50 cec9845c Michael Hanselmann
    raise
51 cec9845c Michael Hanselmann
52 cec9845c Michael Hanselmann
53 cec9845c Michael Hanselmann
def TestInstanceAddWithPlainDisk(node):
54 cec9845c Michael Hanselmann
  """gnt-instance add -t plain"""
55 cec9845c Michael Hanselmann
  return _DiskTest(node, ['--disk-template=plain'])
56 cec9845c Michael Hanselmann
57 cec9845c Michael Hanselmann
58 cec9845c Michael Hanselmann
def TestInstanceAddWithLocalMirrorDisk(node):
59 cec9845c Michael Hanselmann
  """gnt-instance add -t local_raid1"""
60 cec9845c Michael Hanselmann
  return _DiskTest(node, ['--disk-template=local_raid1'])
61 cec9845c Michael Hanselmann
62 cec9845c Michael Hanselmann
63 cec9845c Michael Hanselmann
def TestInstanceAddWithRemoteRaidDisk(node, node2):
64 cec9845c Michael Hanselmann
  """gnt-instance add -t remote_raid1"""
65 cec9845c Michael Hanselmann
  return _DiskTest(node,
66 cec9845c Michael Hanselmann
                   ['--disk-template=remote_raid1',
67 cec9845c Michael Hanselmann
                    '--secondary-node=%s' % node2['primary']])
68 cec9845c Michael Hanselmann
69 cec9845c Michael Hanselmann
70 cec9845c Michael Hanselmann
def TestInstanceRemove(instance):
71 cec9845c Michael Hanselmann
  """gnt-instance remove"""
72 cec9845c Michael Hanselmann
  master = qa_config.GetMasterNode()
73 cec9845c Michael Hanselmann
74 cec9845c Michael Hanselmann
  cmd = ['gnt-instance', 'remove', '-f', instance['name']]
75 cec9845c Michael Hanselmann
  AssertEqual(StartSSH(master['primary'],
76 cec9845c Michael Hanselmann
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
77 cec9845c Michael Hanselmann
78 cec9845c Michael Hanselmann
  qa_config.ReleaseInstance(instance)
79 cec9845c Michael Hanselmann
80 cec9845c Michael Hanselmann
81 cec9845c Michael Hanselmann
def TestInstanceStartup(instance):
82 cec9845c Michael Hanselmann
  """gnt-instance startup"""
83 cec9845c Michael Hanselmann
  master = qa_config.GetMasterNode()
84 cec9845c Michael Hanselmann
85 cec9845c Michael Hanselmann
  cmd = ['gnt-instance', 'startup', instance['name']]
86 cec9845c Michael Hanselmann
  AssertEqual(StartSSH(master['primary'],
87 cec9845c Michael Hanselmann
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
88 cec9845c Michael Hanselmann
89 cec9845c Michael Hanselmann
90 cec9845c Michael Hanselmann
def TestInstanceShutdown(instance):
91 cec9845c Michael Hanselmann
  """gnt-instance shutdown"""
92 cec9845c Michael Hanselmann
  master = qa_config.GetMasterNode()
93 cec9845c Michael Hanselmann
94 cec9845c Michael Hanselmann
  cmd = ['gnt-instance', 'shutdown', instance['name']]
95 cec9845c Michael Hanselmann
  AssertEqual(StartSSH(master['primary'],
96 cec9845c Michael Hanselmann
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
97 cec9845c Michael Hanselmann
98 cec9845c Michael Hanselmann
99 cec9845c Michael Hanselmann
def TestInstanceFailover(instance):
100 cec9845c Michael Hanselmann
  """gnt-instance failover"""
101 cec9845c Michael Hanselmann
  master = qa_config.GetMasterNode()
102 cec9845c Michael Hanselmann
103 cec9845c Michael Hanselmann
  cmd = ['gnt-instance', 'failover', '--force', instance['name']]
104 cec9845c Michael Hanselmann
  AssertEqual(StartSSH(master['primary'],
105 cec9845c Michael Hanselmann
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
106 cec9845c Michael Hanselmann
107 cec9845c Michael Hanselmann
108 cec9845c Michael Hanselmann
def TestInstanceInfo(instance):
109 cec9845c Michael Hanselmann
  """gnt-instance info"""
110 cec9845c Michael Hanselmann
  master = qa_config.GetMasterNode()
111 cec9845c Michael Hanselmann
112 cec9845c Michael Hanselmann
  cmd = ['gnt-instance', 'info', instance['name']]
113 cec9845c Michael Hanselmann
  AssertEqual(StartSSH(master['primary'],
114 cec9845c Michael Hanselmann
                       utils.ShellQuoteArgs(cmd)).wait(), 0)