Statistics
| Branch: | Tag: | Revision:

root / qa / qa_instance.py @ 5d640672

History | View | Annotate | Download (4.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 5d640672 Michael Hanselmann
from ganeti import constants
25 cec9845c Michael Hanselmann
26 cec9845c Michael Hanselmann
import qa_config
27 5d640672 Michael Hanselmann
import qa_utils
28 cec9845c Michael Hanselmann
29 cec9845c Michael Hanselmann
from qa_utils import AssertEqual, StartSSH
30 cec9845c Michael Hanselmann
31 cec9845c Michael Hanselmann
32 5d640672 Michael Hanselmann
def _GetGenericAddParameters():
33 5d640672 Michael Hanselmann
  return ['--os-size=%s' % qa_config.get('os-size'),
34 5d640672 Michael Hanselmann
          '--swap-size=%s' % qa_config.get('swap-size'),
35 5d640672 Michael Hanselmann
          '--memory=%s' % qa_config.get('mem')]
36 5d640672 Michael Hanselmann
37 5d640672 Michael Hanselmann
38 cec9845c Michael Hanselmann
def _DiskTest(node, args):
39 cec9845c Michael Hanselmann
  master = qa_config.GetMasterNode()
40 cec9845c Michael Hanselmann
41 cec9845c Michael Hanselmann
  instance = qa_config.AcquireInstance()
42 cec9845c Michael Hanselmann
  try:
43 5d640672 Michael Hanselmann
    cmd = (['gnt-instance', 'add',
44 5d640672 Michael Hanselmann
            '--os-type=%s' % qa_config.get('os'),
45 5d640672 Michael Hanselmann
            '--node=%s' % node['primary']] +
46 5d640672 Michael Hanselmann
           _GetGenericAddParameters())
47 cec9845c Michael Hanselmann
    if args:
48 cec9845c Michael Hanselmann
      cmd += args
49 cec9845c Michael Hanselmann
    cmd.append(instance['name'])
50 cec9845c Michael Hanselmann
51 cec9845c Michael Hanselmann
    AssertEqual(StartSSH(master['primary'],
52 cec9845c Michael Hanselmann
                         utils.ShellQuoteArgs(cmd)).wait(), 0)
53 cec9845c Michael Hanselmann
    return instance
54 cec9845c Michael Hanselmann
  except:
55 cec9845c Michael Hanselmann
    qa_config.ReleaseInstance(instance)
56 cec9845c Michael Hanselmann
    raise
57 cec9845c Michael Hanselmann
58 cec9845c Michael Hanselmann
59 cec9845c Michael Hanselmann
def TestInstanceAddWithPlainDisk(node):
60 cec9845c Michael Hanselmann
  """gnt-instance add -t plain"""
61 cec9845c Michael Hanselmann
  return _DiskTest(node, ['--disk-template=plain'])
62 cec9845c Michael Hanselmann
63 cec9845c Michael Hanselmann
64 cec9845c Michael Hanselmann
def TestInstanceAddWithLocalMirrorDisk(node):
65 cec9845c Michael Hanselmann
  """gnt-instance add -t local_raid1"""
66 cec9845c Michael Hanselmann
  return _DiskTest(node, ['--disk-template=local_raid1'])
67 cec9845c Michael Hanselmann
68 cec9845c Michael Hanselmann
69 cec9845c Michael Hanselmann
def TestInstanceAddWithRemoteRaidDisk(node, node2):
70 cec9845c Michael Hanselmann
  """gnt-instance add -t remote_raid1"""
71 cec9845c Michael Hanselmann
  return _DiskTest(node,
72 cec9845c Michael Hanselmann
                   ['--disk-template=remote_raid1',
73 cec9845c Michael Hanselmann
                    '--secondary-node=%s' % node2['primary']])
74 cec9845c Michael Hanselmann
75 cec9845c Michael Hanselmann
76 cec9845c Michael Hanselmann
def TestInstanceRemove(instance):
77 cec9845c Michael Hanselmann
  """gnt-instance remove"""
78 cec9845c Michael Hanselmann
  master = qa_config.GetMasterNode()
79 cec9845c Michael Hanselmann
80 cec9845c Michael Hanselmann
  cmd = ['gnt-instance', 'remove', '-f', instance['name']]
81 cec9845c Michael Hanselmann
  AssertEqual(StartSSH(master['primary'],
82 cec9845c Michael Hanselmann
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
83 cec9845c Michael Hanselmann
84 cec9845c Michael Hanselmann
  qa_config.ReleaseInstance(instance)
85 cec9845c Michael Hanselmann
86 cec9845c Michael Hanselmann
87 cec9845c Michael Hanselmann
def TestInstanceStartup(instance):
88 cec9845c Michael Hanselmann
  """gnt-instance startup"""
89 cec9845c Michael Hanselmann
  master = qa_config.GetMasterNode()
90 cec9845c Michael Hanselmann
91 cec9845c Michael Hanselmann
  cmd = ['gnt-instance', 'startup', instance['name']]
92 cec9845c Michael Hanselmann
  AssertEqual(StartSSH(master['primary'],
93 cec9845c Michael Hanselmann
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
94 cec9845c Michael Hanselmann
95 cec9845c Michael Hanselmann
96 cec9845c Michael Hanselmann
def TestInstanceShutdown(instance):
97 cec9845c Michael Hanselmann
  """gnt-instance shutdown"""
98 cec9845c Michael Hanselmann
  master = qa_config.GetMasterNode()
99 cec9845c Michael Hanselmann
100 cec9845c Michael Hanselmann
  cmd = ['gnt-instance', 'shutdown', instance['name']]
101 cec9845c Michael Hanselmann
  AssertEqual(StartSSH(master['primary'],
102 cec9845c Michael Hanselmann
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
103 cec9845c Michael Hanselmann
104 cec9845c Michael Hanselmann
105 cec9845c Michael Hanselmann
def TestInstanceFailover(instance):
106 cec9845c Michael Hanselmann
  """gnt-instance failover"""
107 cec9845c Michael Hanselmann
  master = qa_config.GetMasterNode()
108 cec9845c Michael Hanselmann
109 cec9845c Michael Hanselmann
  cmd = ['gnt-instance', 'failover', '--force', instance['name']]
110 cec9845c Michael Hanselmann
  AssertEqual(StartSSH(master['primary'],
111 cec9845c Michael Hanselmann
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
112 cec9845c Michael Hanselmann
113 cec9845c Michael Hanselmann
114 cec9845c Michael Hanselmann
def TestInstanceInfo(instance):
115 cec9845c Michael Hanselmann
  """gnt-instance info"""
116 cec9845c Michael Hanselmann
  master = qa_config.GetMasterNode()
117 cec9845c Michael Hanselmann
118 cec9845c Michael Hanselmann
  cmd = ['gnt-instance', 'info', instance['name']]
119 cec9845c Michael Hanselmann
  AssertEqual(StartSSH(master['primary'],
120 cec9845c Michael Hanselmann
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
121 5d640672 Michael Hanselmann
122 5d640672 Michael Hanselmann
123 5d640672 Michael Hanselmann
def TestInstanceExport(instance, node):
124 5d640672 Michael Hanselmann
  """gnt-backup export"""
125 5d640672 Michael Hanselmann
  master = qa_config.GetMasterNode()
126 5d640672 Michael Hanselmann
127 5d640672 Michael Hanselmann
  cmd = ['gnt-backup', 'export', '-n', node['primary'], instance['name']]
128 5d640672 Michael Hanselmann
  AssertEqual(StartSSH(master['primary'],
129 5d640672 Michael Hanselmann
                       utils.ShellQuoteArgs(cmd)).wait(), 0)
130 5d640672 Michael Hanselmann
131 5d640672 Michael Hanselmann
  return qa_utils.ResolveInstanceName(instance)
132 5d640672 Michael Hanselmann
133 5d640672 Michael Hanselmann
134 5d640672 Michael Hanselmann
def TestInstanceImport(node, newinst, expnode, name):
135 5d640672 Michael Hanselmann
  """gnt-backup import"""
136 5d640672 Michael Hanselmann
  master = qa_config.GetMasterNode()
137 5d640672 Michael Hanselmann
138 5d640672 Michael Hanselmann
  cmd = (['gnt-backup', 'import',
139 5d640672 Michael Hanselmann
          '--disk-template=plain',
140 5d640672 Michael Hanselmann
          '--no-ip-check',
141 5d640672 Michael Hanselmann
          '--src-node=%s' % expnode['primary'],
142 5d640672 Michael Hanselmann
          '--src-dir=%s/%s' % (constants.EXPORT_DIR, name),
143 5d640672 Michael Hanselmann
          '--node=%s' % node['primary']] +
144 5d640672 Michael Hanselmann
         _GetGenericAddParameters())
145 5d640672 Michael Hanselmann
  cmd.append(newinst['name'])
146 5d640672 Michael Hanselmann
  AssertEqual(StartSSH(master['primary'],
147 5d640672 Michael Hanselmann
                       utils.ShellQuoteArgs(cmd)).wait(), 0)