Merge branch 'stable-2.8' into stable-2.9
[ganeti-local] / qa / qa_monitoring.py
1 #
2 #
3
4 # Copyright (C) 2007, 2011, 2012, 2013 Google Inc.
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 # General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 # 02110-1301, USA.
20
21
22 """Monitoring related QA tests.
23
24 """
25
26 from ganeti import _autoconf
27 from ganeti import constants
28
29 import qa_config
30
31 from qa_utils import AssertCommand
32 from qa_instance_utils import CreateInstanceByDiskTemplate, \
33                               RemoveInstance
34
35 MON_COLLECTOR = _autoconf.PKGLIBDIR + "/mon-collector"
36
37
38 def TestInstStatusCollector():
39   """Test the Xen instance status collector.
40
41   """
42   enabled_hypervisors = qa_config.GetEnabledHypervisors()
43
44   is_xen = (constants.HT_XEN_PVM in enabled_hypervisors or
45             constants.HT_XEN_HVM in enabled_hypervisors)
46   if not is_xen:
47     return
48
49   # Execute on master on an empty cluster
50   AssertCommand([MON_COLLECTOR, "inst-status-xen"])
51
52   #Execute on cluster with instances
53   node1 = qa_config.AcquireNode()
54   node2 = qa_config.AcquireNode()
55   template = qa_config.GetDefaultDiskTemplate()
56
57   instance = CreateInstanceByDiskTemplate([node1, node2], template)
58   AssertCommand([MON_COLLECTOR, "inst-status-xen"], node=node1)
59   AssertCommand([MON_COLLECTOR, "inst-status-xen"], node=node2)
60   RemoveInstance(instance)
61
62   node1.Release()
63   node2.Release()