Statistics
| Branch: | Tag: | Revision:

root / snf-tools / synnefo_tools / burnin / stale_tests.py @ 9355a604

History | View | Annotate | Download (5.5 kB)

1 8c67f82e Ilias Tsitsimpis
# Copyright 2013 GRNET S.A. All rights reserved.
2 8c67f82e Ilias Tsitsimpis
#
3 8c67f82e Ilias Tsitsimpis
# Redistribution and use in source and binary forms, with or
4 8c67f82e Ilias Tsitsimpis
# without modification, are permitted provided that the following
5 8c67f82e Ilias Tsitsimpis
# conditions are met:
6 8c67f82e Ilias Tsitsimpis
#
7 8c67f82e Ilias Tsitsimpis
#   1. Redistributions of source code must retain the above
8 8c67f82e Ilias Tsitsimpis
#      copyright notice, this list of conditions and the following
9 8c67f82e Ilias Tsitsimpis
#      disclaimer.
10 8c67f82e Ilias Tsitsimpis
#
11 8c67f82e Ilias Tsitsimpis
#   2. Redistributions in binary form must reproduce the above
12 8c67f82e Ilias Tsitsimpis
#      copyright notice, this list of conditions and the following
13 8c67f82e Ilias Tsitsimpis
#      disclaimer in the documentation and/or other materials
14 8c67f82e Ilias Tsitsimpis
#      provided with the distribution.
15 8c67f82e Ilias Tsitsimpis
#
16 8c67f82e Ilias Tsitsimpis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 8c67f82e Ilias Tsitsimpis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 8c67f82e Ilias Tsitsimpis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 8c67f82e Ilias Tsitsimpis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 8c67f82e Ilias Tsitsimpis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 8c67f82e Ilias Tsitsimpis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 8c67f82e Ilias Tsitsimpis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 8c67f82e Ilias Tsitsimpis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 8c67f82e Ilias Tsitsimpis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 8c67f82e Ilias Tsitsimpis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 8c67f82e Ilias Tsitsimpis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 8c67f82e Ilias Tsitsimpis
# POSSIBILITY OF SUCH DAMAGE.
28 8c67f82e Ilias Tsitsimpis
#
29 8c67f82e Ilias Tsitsimpis
# The views and conclusions contained in the software and
30 8c67f82e Ilias Tsitsimpis
# documentation are those of the authors and should not be
31 8c67f82e Ilias Tsitsimpis
# interpreted as representing official policies, either expressed
32 8c67f82e Ilias Tsitsimpis
# or implied, of GRNET S.A.
33 8c67f82e Ilias Tsitsimpis
34 8c67f82e Ilias Tsitsimpis
"""
35 8c67f82e Ilias Tsitsimpis
This is the burnin class that handles stale resources (Servers/Networks)
36 8c67f82e Ilias Tsitsimpis

37 8c67f82e Ilias Tsitsimpis
"""
38 8c67f82e Ilias Tsitsimpis
39 8c67f82e Ilias Tsitsimpis
from synnefo_tools.burnin.common import Proper, SNF_TEST_PREFIX
40 8c67f82e Ilias Tsitsimpis
from synnefo_tools.burnin.cyclades_common import CycladesTests
41 8c67f82e Ilias Tsitsimpis
42 8c67f82e Ilias Tsitsimpis
43 9355a604 Ilias Tsitsimpis
# pylint: disable=too-many-public-methods
44 8c67f82e Ilias Tsitsimpis
class StaleServersTestSuite(CycladesTests):
45 8c67f82e Ilias Tsitsimpis
    """Handle stale Servers"""
46 8c67f82e Ilias Tsitsimpis
    stale_servers = Proper(value=None)
47 8c67f82e Ilias Tsitsimpis
48 8c67f82e Ilias Tsitsimpis
    def test_001_show_stale_servers(self):
49 8c67f82e Ilias Tsitsimpis
        """Show staled servers (servers left from previous runs)"""
50 60a80953 Ilias Tsitsimpis
        servers = self._get_list_of_servers(detail=True)
51 8c67f82e Ilias Tsitsimpis
        self.stale_servers = [s for s in servers
52 8c67f82e Ilias Tsitsimpis
                              if s['name'].startswith(SNF_TEST_PREFIX)]
53 8c67f82e Ilias Tsitsimpis
54 8c67f82e Ilias Tsitsimpis
        len_stale = len(self.stale_servers)
55 8c67f82e Ilias Tsitsimpis
        if len_stale == 0:
56 8c67f82e Ilias Tsitsimpis
            self.info("No stale servers found")
57 8c67f82e Ilias Tsitsimpis
            return
58 8c67f82e Ilias Tsitsimpis
59 8c67f82e Ilias Tsitsimpis
        self.info("Found %s stale servers:", len_stale)
60 8c67f82e Ilias Tsitsimpis
        for stl in self.stale_servers:
61 8c67f82e Ilias Tsitsimpis
            self.info("  Server \"%s\" with id %s", stl['name'], stl['id'])
62 8c67f82e Ilias Tsitsimpis
63 8c67f82e Ilias Tsitsimpis
    def test_002_delete_stale_servers(self):
64 8c67f82e Ilias Tsitsimpis
        """Delete staled servers (servers left from previous runs)"""
65 8c67f82e Ilias Tsitsimpis
        len_stale = len(self.stale_servers)
66 8c67f82e Ilias Tsitsimpis
        if not self.delete_stale and len_stale != 0:
67 60a80953 Ilias Tsitsimpis
            self.fail("Use --delete-stale flag to delete stale servers")
68 8c67f82e Ilias Tsitsimpis
        elif len_stale == 0:
69 8c67f82e Ilias Tsitsimpis
            self.info("No stale servers found")
70 8c67f82e Ilias Tsitsimpis
        else:
71 60a80953 Ilias Tsitsimpis
            self.info("Deleting %s stale servers", len_stale)
72 60a80953 Ilias Tsitsimpis
            self._delete_servers(self.stale_servers, error=True)
73 8c67f82e Ilias Tsitsimpis
74 60a80953 Ilias Tsitsimpis
75 9355a604 Ilias Tsitsimpis
# pylint: disable=too-many-public-methods
76 60a80953 Ilias Tsitsimpis
class StaleFloatingIPsTestSuite(CycladesTests):
77 60a80953 Ilias Tsitsimpis
    """Handle stale Floating IPs"""
78 60a80953 Ilias Tsitsimpis
    stale_ips = Proper(value=None)
79 60a80953 Ilias Tsitsimpis
80 60a80953 Ilias Tsitsimpis
    def test_001_show_stale_ips(self):
81 60a80953 Ilias Tsitsimpis
        """Show staled floating IPs"""
82 60a80953 Ilias Tsitsimpis
        floating_ips = self.clients.network.list_floatingips()
83 60a80953 Ilias Tsitsimpis
        # We consider all the floating ips that are not attached
84 60a80953 Ilias Tsitsimpis
        # anywhere as stale ips.
85 60a80953 Ilias Tsitsimpis
        self.stale_ips = [ip for ip in floating_ips
86 60a80953 Ilias Tsitsimpis
                          if ip['instance_id'] is None]
87 60a80953 Ilias Tsitsimpis
88 60a80953 Ilias Tsitsimpis
        len_stale = len(self.stale_ips)
89 60a80953 Ilias Tsitsimpis
        if len_stale == 0:
90 60a80953 Ilias Tsitsimpis
            self.info("No stale floating IPs found")
91 60a80953 Ilias Tsitsimpis
            return
92 60a80953 Ilias Tsitsimpis
93 60a80953 Ilias Tsitsimpis
        self.info("Found %s stale floating IPs:", len_stale)
94 60a80953 Ilias Tsitsimpis
        for stl in self.stale_ips:
95 60a80953 Ilias Tsitsimpis
            self.info("  Floating IP %s with id %s",
96 60a80953 Ilias Tsitsimpis
                      stl['floating_ip_address'], stl['id'])
97 60a80953 Ilias Tsitsimpis
98 60a80953 Ilias Tsitsimpis
    def test_002_delete_stale_ips(self):
99 60a80953 Ilias Tsitsimpis
        """Delete staled floating IPs"""
100 60a80953 Ilias Tsitsimpis
        len_stale = len(self.stale_ips)
101 60a80953 Ilias Tsitsimpis
        if not self.delete_stale and len_stale != 0:
102 60a80953 Ilias Tsitsimpis
            self.fail("Use --delete-stale flag to delete stale floating IPs")
103 60a80953 Ilias Tsitsimpis
        elif len_stale == 0:
104 60a80953 Ilias Tsitsimpis
            self.info("No stale floating IPs found")
105 60a80953 Ilias Tsitsimpis
        else:
106 3966cea9 Ilias Tsitsimpis
            self.info("Deleting %s stale floating IPs", len_stale)
107 3966cea9 Ilias Tsitsimpis
            self._delete_floating_ips(self.stale_ips)
108 8c67f82e Ilias Tsitsimpis
109 8c67f82e Ilias Tsitsimpis
110 9355a604 Ilias Tsitsimpis
# pylint: disable=too-many-public-methods
111 8c67f82e Ilias Tsitsimpis
class StaleNetworksTestSuite(CycladesTests):
112 8c67f82e Ilias Tsitsimpis
    """Handle stale Networks"""
113 3eaf0ec5 Ilias Tsitsimpis
    stale_networks = Proper(value=None)
114 3eaf0ec5 Ilias Tsitsimpis
115 8c67f82e Ilias Tsitsimpis
    def test_001_show_stale_networks(self):
116 8c67f82e Ilias Tsitsimpis
        """Show staled networks (networks left from previous runs)"""
117 3eaf0ec5 Ilias Tsitsimpis
        networks = self._get_list_of_networks()
118 3eaf0ec5 Ilias Tsitsimpis
        self.stale_networks = [n for n in networks
119 3eaf0ec5 Ilias Tsitsimpis
                               if n['name'].startswith(SNF_TEST_PREFIX)]
120 3eaf0ec5 Ilias Tsitsimpis
121 3eaf0ec5 Ilias Tsitsimpis
        len_stale = len(self.stale_networks)
122 3eaf0ec5 Ilias Tsitsimpis
        if len_stale == 0:
123 3eaf0ec5 Ilias Tsitsimpis
            self.info("No stale networks found")
124 3eaf0ec5 Ilias Tsitsimpis
            return
125 3eaf0ec5 Ilias Tsitsimpis
126 3eaf0ec5 Ilias Tsitsimpis
        self.info("Found %s stale networks:", len_stale)
127 3eaf0ec5 Ilias Tsitsimpis
        for stl in self.stale_networks:
128 3eaf0ec5 Ilias Tsitsimpis
            self.info("  Network \"%s\" with id %s", stl['name'], stl['id'])
129 3eaf0ec5 Ilias Tsitsimpis
130 3eaf0ec5 Ilias Tsitsimpis
    def test_002_delete_stale_networks(self):
131 3eaf0ec5 Ilias Tsitsimpis
        """Delete staled networks (networks left from previous runs)"""
132 3eaf0ec5 Ilias Tsitsimpis
        len_stale = len(self.stale_networks)
133 3eaf0ec5 Ilias Tsitsimpis
        if not self.delete_stale and len_stale != 0:
134 60a80953 Ilias Tsitsimpis
            self.fail("Use --delete-stale flag to delete stale networks")
135 3eaf0ec5 Ilias Tsitsimpis
        elif len_stale == 0:
136 3eaf0ec5 Ilias Tsitsimpis
            self.info("No stale networks found")
137 3eaf0ec5 Ilias Tsitsimpis
        else:
138 60a80953 Ilias Tsitsimpis
            self.info("Deleting %s stale networks", len_stale)
139 60a80953 Ilias Tsitsimpis
            self._delete_networks(self.stale_networks)