from qa_utils import AssertEqual, StartSSH
+def _RemoveFileFromAllNodes(filename):
+ """Removes a file from all nodes.
+
+ """
+ for node in qa_config.get('nodes'):
+ cmd = ['rm', '-f', filename]
+ AssertEqual(StartSSH(node['primary'],
+ utils.ShellQuoteArgs(cmd)).wait(), 0)
+
+
+def _CheckFileOnAllNodes(filename, content):
+ """Verifies the content of the given file on all nodes.
+
+ """
+ cmd = utils.ShellQuoteArgs(["cat", filename])
+ for node in qa_config.get('nodes'):
+ AssertEqual(qa_utils.GetCommandOutput(node['primary'], cmd),
+ content)
+
+
+@qa_utils.DefineHook('cluster-init')
def TestClusterInit():
"""gnt-cluster init"""
master = qa_config.GetMasterNode()
cmd.append('--bridge=%s' % bridge)
cmd.append('--master-netdev=%s' % bridge)
+ htype = qa_config.get('hypervisor-type', None)
+ if htype:
+ cmd.append('--hypervisor-type=%s' % htype)
+
cmd.append(qa_config.get('name'))
AssertEqual(StartSSH(master['primary'],
utils.ShellQuoteArgs(cmd)).wait(), 0)
+@qa_utils.DefineHook('cluster-verify')
def TestClusterVerify():
"""gnt-cluster verify"""
master = qa_config.GetMasterNode()
utils.ShellQuoteArgs(cmd)).wait(), 0)
+@qa_utils.DefineHook('cluster-info')
def TestClusterInfo():
"""gnt-cluster info"""
master = qa_config.GetMasterNode()
utils.ShellQuoteArgs(cmd)).wait(), 0)
+@qa_utils.DefineHook('cluster-getmaster')
def TestClusterGetmaster():
"""gnt-cluster getmaster"""
master = qa_config.GetMasterNode()
utils.ShellQuoteArgs(cmd)).wait(), 0)
+@qa_utils.DefineHook('cluster-version')
def TestClusterVersion():
"""gnt-cluster version"""
master = qa_config.GetMasterNode()
utils.ShellQuoteArgs(cmd)).wait(), 0)
+@qa_utils.DefineHook('cluster-burnin')
def TestClusterBurnin():
"""Burnin"""
master = qa_config.GetMasterNode()
+ disk_template = (qa_config.get('options', {}).
+ get('burnin-disk-template', 'remote_raid1'))
+
# Get as many instances as we need
instances = []
try:
- num = qa_config.get('options', {}).get('burnin-instances', 1)
- for _ in xrange(0, num):
- instances.append(qa_config.AcquireInstance())
- except qa_error.OutOfInstancesError:
- print "Not enough instances, continuing anyway."
+ try:
+ num = qa_config.get('options', {}).get('burnin-instances', 1)
+ for _ in xrange(0, num):
+ instances.append(qa_config.AcquireInstance())
+ except qa_error.OutOfInstancesError:
+ print "Not enough instances, continuing anyway."
- if len(instances) < 1:
- raise qa_error.Error("Burnin needs at least one instance")
+ if len(instances) < 1:
+ raise qa_error.Error("Burnin needs at least one instance")
- # Run burnin
- try:
script = qa_utils.UploadFile(master['primary'], '../tools/burnin')
try:
+ # Run burnin
cmd = [script,
'--os=%s' % qa_config.get('os'),
'--os-size=%s' % qa_config.get('os-size'),
- '--swap-size=%s' % qa_config.get('swap-size')]
+ '--swap-size=%s' % qa_config.get('swap-size'),
+ '--disk-template=%s' % disk_template]
cmd += [inst['name'] for inst in instances]
AssertEqual(StartSSH(master['primary'],
utils.ShellQuoteArgs(cmd)).wait(), 0)
qa_config.ReleaseInstance(inst)
+@qa_utils.DefineHook('cluster-master-failover')
def TestClusterMasterFailover():
"""gnt-cluster masterfailover"""
master = qa_config.GetMasterNode()
qa_config.ReleaseNode(failovermaster)
+@qa_utils.DefineHook('cluster-copyfile')
def TestClusterCopyfile():
"""gnt-cluster copyfile"""
master = qa_config.GetMasterNode()
+ uniqueid = utils.NewUUID()
+
# Create temporary file
f = tempfile.NamedTemporaryFile()
- f.write("I'm a testfile.\n")
+ f.write(uniqueid)
f.flush()
f.seek(0)
cmd = ['gnt-cluster', 'copyfile', testname]
AssertEqual(StartSSH(master['primary'],
utils.ShellQuoteArgs(cmd)).wait(), 0)
+ _CheckFileOnAllNodes(testname, uniqueid)
finally:
- # Remove file from all nodes
- for node in qa_config.get('nodes'):
- cmd = ['rm', '-f', testname]
- AssertEqual(StartSSH(node['primary'],
- utils.ShellQuoteArgs(cmd)).wait(), 0)
+ _RemoveFileFromAllNodes(testname)
+
+
+@qa_utils.DefineHook('cluster-command')
+def TestClusterCommand():
+ """gnt-cluster command"""
+ master = qa_config.GetMasterNode()
+
+ uniqueid = utils.NewUUID()
+ rfile = "/tmp/gnt%s" % utils.NewUUID()
+ rcmd = utils.ShellQuoteArgs(['echo', '-n', uniqueid])
+ cmd = utils.ShellQuoteArgs(['gnt-cluster', 'command',
+ "%s >%s" % (rcmd, rfile)])
+
+ try:
+ AssertEqual(StartSSH(master['primary'], cmd).wait(), 0)
+ _CheckFileOnAllNodes(rfile, uniqueid)
+ finally:
+ _RemoveFileFromAllNodes(rfile)
+@qa_utils.DefineHook('cluster-destroy')
def TestClusterDestroy():
"""gnt-cluster destroy"""
master = qa_config.GetMasterNode()