Statistics
| Branch: | Tag: | Revision:

root / kamaki / clients / tests / cyclades.py @ 2005b18e

History | View | Annotate | Download (26.6 kB)

1 b482315a Stavros Sachtouris
# Copyright 2012-2013 GRNET S.A. All rights reserved.
2 b482315a Stavros Sachtouris
#
3 b482315a Stavros Sachtouris
# Redistribution and use in source and binary forms, with or
4 b482315a Stavros Sachtouris
# without modification, are permitted provided that the following
5 b482315a Stavros Sachtouris
# conditions are met:
6 b482315a Stavros Sachtouris
#
7 b482315a Stavros Sachtouris
#   1. Redistributions of source code must retain the above
8 b482315a Stavros Sachtouris
#      copyright notice, this list of conditions and the following
9 b482315a Stavros Sachtouris
#      disclaimer.
10 b482315a Stavros Sachtouris
#
11 b482315a Stavros Sachtouris
#   2. Redistributions in binary form must reproduce the above
12 b482315a Stavros Sachtouris
#      copyright notice, this list of conditions and the following
13 b482315a Stavros Sachtouris
#      disclaimer in the documentation and/or other materials
14 b482315a Stavros Sachtouris
#      provided with the distribution.
15 b482315a Stavros Sachtouris
#
16 b482315a Stavros Sachtouris
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 b482315a Stavros Sachtouris
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 b482315a Stavros Sachtouris
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 b482315a Stavros Sachtouris
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 b482315a Stavros Sachtouris
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 b482315a Stavros Sachtouris
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 b482315a Stavros Sachtouris
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 b482315a Stavros Sachtouris
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 b482315a Stavros Sachtouris
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 b482315a Stavros Sachtouris
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 b482315a Stavros Sachtouris
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 b482315a Stavros Sachtouris
# POSSIBILITY OF SUCH DAMAGE.
28 b482315a Stavros Sachtouris
#
29 b482315a Stavros Sachtouris
# The views and conclusions contained in the software and
30 b482315a Stavros Sachtouris
# documentation are those of the authors and should not be
31 b482315a Stavros Sachtouris
# interpreted as representing official policies, either expressed
32 b482315a Stavros Sachtouris
# or implied, of GRNET S.A.
33 b482315a Stavros Sachtouris
34 b482315a Stavros Sachtouris
import time
35 b482315a Stavros Sachtouris
36 02846a75 Stavros Sachtouris
from kamaki.clients import tests, ClientError
37 b482315a Stavros Sachtouris
from kamaki.clients.cyclades import CycladesClient
38 b482315a Stavros Sachtouris
39 b482315a Stavros Sachtouris
40 b482315a Stavros Sachtouris
class Cyclades(tests.Generic):
41 b482315a Stavros Sachtouris
    """Set up a Cyclades thorough test"""
42 b482315a Stavros Sachtouris
    def setUp(self):
43 db77d79e Stavros Sachtouris
        print
44 db77d79e Stavros Sachtouris
        with open(self['image', 'details']) as f:
45 db77d79e Stavros Sachtouris
            self.img_details = eval(f.read())
46 db77d79e Stavros Sachtouris
        self.img = self.img_details['id']
47 db77d79e Stavros Sachtouris
        with open(self['flavor', 'details']) as f:
48 db77d79e Stavros Sachtouris
            self._flavor_details = eval(f.read())
49 b482315a Stavros Sachtouris
        self.PROFILES = ('ENABLED', 'DISABLED', 'PROTECTED')
50 b482315a Stavros Sachtouris
51 b482315a Stavros Sachtouris
        self.servers = {}
52 b482315a Stavros Sachtouris
        self.now = time.mktime(time.gmtime())
53 b482315a Stavros Sachtouris
        self.servname1 = 'serv' + unicode(self.now)
54 b482315a Stavros Sachtouris
        self.servname2 = self.servname1 + '_v2'
55 b482315a Stavros Sachtouris
        self.servname1 += '_v1'
56 b482315a Stavros Sachtouris
        self.flavorid = 1
57 b482315a Stavros Sachtouris
        #servers have to be created at the begining...
58 b482315a Stavros Sachtouris
        self.networks = {}
59 b482315a Stavros Sachtouris
        self.netname1 = 'net' + unicode(self.now)
60 b482315a Stavros Sachtouris
        self.netname2 = 'net' + unicode(self.now) + '_v2'
61 b482315a Stavros Sachtouris
62 b482315a Stavros Sachtouris
        self.client = CycladesClient(self['compute', 'url'], self['token'])
63 b482315a Stavros Sachtouris
64 b482315a Stavros Sachtouris
    def tearDown(self):
65 b482315a Stavros Sachtouris
        """Destoy servers used in testing"""
66 d1f78278 Stavros Sachtouris
        for net in self.networks.keys():
67 d1f78278 Stavros Sachtouris
            self._delete_network(net)
68 db77d79e Stavros Sachtouris
        for server in self.servers.values():
69 db77d79e Stavros Sachtouris
            self._delete_server(server['id'])
70 db77d79e Stavros Sachtouris
            print('DEL VM %s (%s)' % (server['id'], server['name']))
71 db77d79e Stavros Sachtouris
72 db77d79e Stavros Sachtouris
    def test_000(self):
73 db77d79e Stavros Sachtouris
        "Prepare a full Cyclades test scenario"
74 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
75 24ff0a35 Stavros Sachtouris
            self.servname1,
76 db77d79e Stavros Sachtouris
            self.flavorid,
77 db77d79e Stavros Sachtouris
            self.img)
78 24ff0a35 Stavros Sachtouris
        self.server2 = self._create_server(
79 24ff0a35 Stavros Sachtouris
            self.servname2,
80 db77d79e Stavros Sachtouris
            self.flavorid + 2,
81 db77d79e Stavros Sachtouris
            self.img)
82 db77d79e Stavros Sachtouris
        super(self.__class__, self).test_000()
83 b482315a Stavros Sachtouris
84 b482315a Stavros Sachtouris
    def _create_server(self, servername, flavorid, imageid, personality=None):
85 24ff0a35 Stavros Sachtouris
        server = self.client.create_server(
86 24ff0a35 Stavros Sachtouris
            servername,
87 b482315a Stavros Sachtouris
            flavorid,
88 b482315a Stavros Sachtouris
            imageid,
89 b482315a Stavros Sachtouris
            personality)
90 db77d79e Stavros Sachtouris
        print('CREATE VM %s (%s)' % (server['id'], server['name']))
91 b482315a Stavros Sachtouris
        self.servers[servername] = server
92 b482315a Stavros Sachtouris
        return server
93 b482315a Stavros Sachtouris
94 b482315a Stavros Sachtouris
    def _delete_server(self, servid):
95 b482315a Stavros Sachtouris
        try:
96 b482315a Stavros Sachtouris
            current_state = self.client.get_server_details(servid)
97 b482315a Stavros Sachtouris
            current_state = current_state['status']
98 b482315a Stavros Sachtouris
            if current_state == 'DELETED':
99 b482315a Stavros Sachtouris
                return
100 db77d79e Stavros Sachtouris
            self.client.delete_server(servid)
101 db77d79e Stavros Sachtouris
            self._wait_for_status(servid, current_state)
102 db77d79e Stavros Sachtouris
            self.client.delete_server(servid)
103 b482315a Stavros Sachtouris
        except:
104 b482315a Stavros Sachtouris
            return
105 b482315a Stavros Sachtouris
106 b482315a Stavros Sachtouris
    def _create_network(self, netname, **kwargs):
107 b482315a Stavros Sachtouris
        net = self.client.create_network(netname, **kwargs)
108 b482315a Stavros Sachtouris
        self.networks[net['id']] = net
109 b482315a Stavros Sachtouris
        return net
110 b482315a Stavros Sachtouris
111 b482315a Stavros Sachtouris
    def _delete_network(self, netid):
112 02846a75 Stavros Sachtouris
        print('Disconnect nics of network %s' % netid)
113 b482315a Stavros Sachtouris
        self.client.disconnect_network_nics(netid)
114 02846a75 Stavros Sachtouris
115 d1f78278 Stavros Sachtouris
        def netwait(wait):
116 b482315a Stavros Sachtouris
            try:
117 b482315a Stavros Sachtouris
                self.client.delete_network(netid)
118 02846a75 Stavros Sachtouris
            except ClientError:
119 b482315a Stavros Sachtouris
                time.sleep(wait)
120 02846a75 Stavros Sachtouris
        self.do_with_progress_bar(
121 02846a75 Stavros Sachtouris
            netwait,
122 02846a75 Stavros Sachtouris
            'Delete network %s' % netid,
123 d1f78278 Stavros Sachtouris
            self._waits[:7])
124 02846a75 Stavros Sachtouris
125 02846a75 Stavros Sachtouris
    def _wait_for_network(self, netid, status):
126 02846a75 Stavros Sachtouris
127 d1f78278 Stavros Sachtouris
        def netwait(wait):
128 02846a75 Stavros Sachtouris
            r = self.client.get_network_details(netid)
129 02846a75 Stavros Sachtouris
            if r['status'] == status:
130 02846a75 Stavros Sachtouris
                return
131 02846a75 Stavros Sachtouris
            time.sleep(wait)
132 02846a75 Stavros Sachtouris
        self.do_with_progress_bar(
133 02846a75 Stavros Sachtouris
            netwait,
134 02846a75 Stavros Sachtouris
            'Wait network %s to reach status %s' % (netid, status),
135 02846a75 Stavros Sachtouris
            self._waits[:5])
136 02846a75 Stavros Sachtouris
137 02846a75 Stavros Sachtouris
    def _wait_for_nic(self, netid, servid, in_creation=True):
138 02846a75 Stavros Sachtouris
        self._wait_for_network(netid, 'ACTIVE')
139 02846a75 Stavros Sachtouris
140 d1f78278 Stavros Sachtouris
        def nicwait(wait):
141 02846a75 Stavros Sachtouris
            nics = self.client.list_server_nics(servid)
142 02846a75 Stavros Sachtouris
            for net in nics:
143 02846a75 Stavros Sachtouris
                found_nic = net['network_id'] == netid
144 24ff0a35 Stavros Sachtouris
                if (in_creation and found_nic) or not (
145 2005b18e Stavros Sachtouris
                        in_creation or found_nic):
146 2005b18e Stavros Sachtouris
                    return
147 02846a75 Stavros Sachtouris
            time.sleep(wait)
148 02846a75 Stavros Sachtouris
        self.do_with_progress_bar(
149 02846a75 Stavros Sachtouris
            nicwait,
150 02846a75 Stavros Sachtouris
            'Wait nic-%s-%s to %sconnect' % (
151 02846a75 Stavros Sachtouris
                netid,
152 02846a75 Stavros Sachtouris
                servid,
153 02846a75 Stavros Sachtouris
                '' if in_creation else 'dis'),
154 02846a75 Stavros Sachtouris
            self._waits[:5])
155 2005b18e Stavros Sachtouris
        for net in self.client.list_server_nics(servid):
156 2005b18e Stavros Sachtouris
            if netid == net['network_id']:
157 2005b18e Stavros Sachtouris
                return True
158 2005b18e Stavros Sachtouris
        return False
159 02846a75 Stavros Sachtouris
160 02846a75 Stavros Sachtouris
    def _has_status(self, servid, status):
161 02846a75 Stavros Sachtouris
        r = self.client.get_server_details(servid)
162 02846a75 Stavros Sachtouris
        return r['status'] == status
163 02846a75 Stavros Sachtouris
164 02846a75 Stavros Sachtouris
    def _wait_for_status(self, servid, status):
165 02846a75 Stavros Sachtouris
        (wait_bar, wait_cb) = self._safe_progress_bar(
166 02846a75 Stavros Sachtouris
            'Server %s in %s' % (servid, status))
167 02846a75 Stavros Sachtouris
        self.client.wait_server(servid, status, wait_cb=wait_cb)
168 02846a75 Stavros Sachtouris
        self._safe_progress_bar_finish(wait_bar)
169 02846a75 Stavros Sachtouris
170 db77d79e Stavros Sachtouris
    def test_parallel_creation(self):
171 db77d79e Stavros Sachtouris
        """test create with multiple threads
172 db77d79e Stavros Sachtouris
        Do not use this in regular tests
173 db77d79e Stavros Sachtouris
        """
174 db77d79e Stavros Sachtouris
        from kamaki.clients import SilentEvent
175 24ff0a35 Stavros Sachtouris
        c1 = SilentEvent(
176 24ff0a35 Stavros Sachtouris
            self._create_server,
177 db77d79e Stavros Sachtouris
            self.servname1,
178 db77d79e Stavros Sachtouris
            self.flavorid,
179 db77d79e Stavros Sachtouris
            self.img)
180 24ff0a35 Stavros Sachtouris
        c2 = SilentEvent(
181 24ff0a35 Stavros Sachtouris
            self._create_server,
182 db77d79e Stavros Sachtouris
            self.servname2,
183 db77d79e Stavros Sachtouris
            self.flavorid + 2,
184 db77d79e Stavros Sachtouris
            self.img)
185 24ff0a35 Stavros Sachtouris
        c3 = SilentEvent(
186 24ff0a35 Stavros Sachtouris
            self._create_server,
187 db77d79e Stavros Sachtouris
            self.servname1,
188 db77d79e Stavros Sachtouris
            self.flavorid,
189 db77d79e Stavros Sachtouris
            self.img)
190 24ff0a35 Stavros Sachtouris
        c4 = SilentEvent(
191 24ff0a35 Stavros Sachtouris
            self._create_server,
192 db77d79e Stavros Sachtouris
            self.servname2,
193 db77d79e Stavros Sachtouris
            self.flavorid + 2,
194 db77d79e Stavros Sachtouris
            self.img)
195 24ff0a35 Stavros Sachtouris
        c5 = SilentEvent(
196 24ff0a35 Stavros Sachtouris
            self._create_server,
197 db77d79e Stavros Sachtouris
            self.servname1,
198 db77d79e Stavros Sachtouris
            self.flavorid,
199 db77d79e Stavros Sachtouris
            self.img)
200 24ff0a35 Stavros Sachtouris
        c6 = SilentEvent(
201 24ff0a35 Stavros Sachtouris
            self._create_server,
202 db77d79e Stavros Sachtouris
            self.servname2,
203 db77d79e Stavros Sachtouris
            self.flavorid + 2,
204 db77d79e Stavros Sachtouris
            self.img)
205 24ff0a35 Stavros Sachtouris
        c7 = SilentEvent(
206 24ff0a35 Stavros Sachtouris
            self._create_server,
207 db77d79e Stavros Sachtouris
            self.servname1,
208 db77d79e Stavros Sachtouris
            self.flavorid,
209 db77d79e Stavros Sachtouris
            self.img)
210 24ff0a35 Stavros Sachtouris
        c8 = SilentEvent(
211 24ff0a35 Stavros Sachtouris
            self._create_server,
212 db77d79e Stavros Sachtouris
            self.servname2,
213 db77d79e Stavros Sachtouris
            self.flavorid + 2,
214 db77d79e Stavros Sachtouris
            self.img)
215 db77d79e Stavros Sachtouris
        c1.start()
216 db77d79e Stavros Sachtouris
        c2.start()
217 db77d79e Stavros Sachtouris
        c3.start()
218 db77d79e Stavros Sachtouris
        c4.start()
219 db77d79e Stavros Sachtouris
        c5.start()
220 db77d79e Stavros Sachtouris
        c6.start()
221 db77d79e Stavros Sachtouris
        c7.start()
222 db77d79e Stavros Sachtouris
        c8.start()
223 db77d79e Stavros Sachtouris
224 db77d79e Stavros Sachtouris
    def test_create_server(self):
225 db77d79e Stavros Sachtouris
        """Test create_server"""
226 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
227 24ff0a35 Stavros Sachtouris
            self.servname1,
228 db77d79e Stavros Sachtouris
            self.flavorid,
229 db77d79e Stavros Sachtouris
            self.img)
230 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'BUILD')
231 db77d79e Stavros Sachtouris
        self._test_0010_create_server()
232 db77d79e Stavros Sachtouris
233 db77d79e Stavros Sachtouris
    def _test_0010_create_server(self):
234 db77d79e Stavros Sachtouris
        self.assertEqual(self.server1["name"], self.servname1)
235 db77d79e Stavros Sachtouris
        self.assertEqual(self.server1["flavorRef"], self.flavorid)
236 db77d79e Stavros Sachtouris
        self.assertEqual(self.server1["imageRef"], self.img)
237 db77d79e Stavros Sachtouris
        self.assertEqual(self.server1["status"], "BUILD")
238 db77d79e Stavros Sachtouris
239 02846a75 Stavros Sachtouris
    def test_list_servers(self):
240 02846a75 Stavros Sachtouris
        """Test list servers"""
241 02846a75 Stavros Sachtouris
        self.server1 = self._create_server(
242 02846a75 Stavros Sachtouris
            self.servname1,
243 02846a75 Stavros Sachtouris
            self.flavorid,
244 02846a75 Stavros Sachtouris
            self.img)
245 02846a75 Stavros Sachtouris
        self.server2 = self._create_server(
246 02846a75 Stavros Sachtouris
            self.servname2,
247 02846a75 Stavros Sachtouris
            self.flavorid + 2,
248 02846a75 Stavros Sachtouris
            self.img)
249 db77d79e Stavros Sachtouris
        self._test_0020_list_servers()
250 02846a75 Stavros Sachtouris
251 db77d79e Stavros Sachtouris
    def _test_0020_list_servers(self):
252 02846a75 Stavros Sachtouris
        servers = self.client.list_servers()
253 02846a75 Stavros Sachtouris
        dservers = self.client.list_servers(detail=True)
254 02846a75 Stavros Sachtouris
255 02846a75 Stavros Sachtouris
        """detailed and simple are same size"""
256 02846a75 Stavros Sachtouris
        self.assertEqual(len(dservers), len(servers))
257 02846a75 Stavros Sachtouris
        for i in range(len(servers)):
258 db77d79e Stavros Sachtouris
            for field in (
259 2005b18e Stavros Sachtouris
                    'created',
260 2005b18e Stavros Sachtouris
                    'flavorRef',
261 2005b18e Stavros Sachtouris
                    'hostId',
262 2005b18e Stavros Sachtouris
                    'imageRef',
263 2005b18e Stavros Sachtouris
                    'progress',
264 2005b18e Stavros Sachtouris
                    'status',
265 2005b18e Stavros Sachtouris
                    'updated'):
266 02846a75 Stavros Sachtouris
                self.assertFalse(field in servers[i])
267 02846a75 Stavros Sachtouris
                self.assertTrue(field in dservers[i])
268 02846a75 Stavros Sachtouris
269 02846a75 Stavros Sachtouris
        """detailed and simple contain same names"""
270 02846a75 Stavros Sachtouris
        names = sorted(map(lambda x: x["name"], servers))
271 02846a75 Stavros Sachtouris
        dnames = sorted(map(lambda x: x["name"], dservers))
272 02846a75 Stavros Sachtouris
        self.assertEqual(names, dnames)
273 db77d79e Stavros Sachtouris
274 db77d79e Stavros Sachtouris
    def _test_0030_wait_test_servers_to_build(self):
275 db77d79e Stavros Sachtouris
        """Pseudo-test to wait for VMs to load"""
276 d1f78278 Stavros Sachtouris
        print('')
277 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'BUILD')
278 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server2['id'], 'BUILD')
279 db77d79e Stavros Sachtouris
280 db77d79e Stavros Sachtouris
    def test_get_server_details(self):
281 db77d79e Stavros Sachtouris
        """Test get_server_details"""
282 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
283 24ff0a35 Stavros Sachtouris
            self.servname1,
284 db77d79e Stavros Sachtouris
            self.flavorid,
285 db77d79e Stavros Sachtouris
            self.img)
286 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'BUILD')
287 db77d79e Stavros Sachtouris
        self._test_0040_get_server_details()
288 db77d79e Stavros Sachtouris
289 db77d79e Stavros Sachtouris
    def _test_0040_get_server_details(self):
290 db77d79e Stavros Sachtouris
        r = self.client.get_server_details(self.server1['id'])
291 db77d79e Stavros Sachtouris
        self.assertEqual(r["name"], self.servname1)
292 db77d79e Stavros Sachtouris
        self.assertEqual(r["flavorRef"], self.flavorid)
293 db77d79e Stavros Sachtouris
        self.assertEqual(r["imageRef"], self.img)
294 db77d79e Stavros Sachtouris
        self.assertEqual(r["status"], "ACTIVE")
295 db77d79e Stavros Sachtouris
296 db77d79e Stavros Sachtouris
    def test_update_server_name(self):
297 db77d79e Stavros Sachtouris
        """Test update_server_name"""
298 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
299 24ff0a35 Stavros Sachtouris
            self.servname1,
300 db77d79e Stavros Sachtouris
            self.flavorid,
301 db77d79e Stavros Sachtouris
            self.img)
302 db77d79e Stavros Sachtouris
        self._test_0050_update_server_name()
303 db77d79e Stavros Sachtouris
304 db77d79e Stavros Sachtouris
    def _test_0050_update_server_name(self):
305 db77d79e Stavros Sachtouris
        new_name = self.servname1 + '_new_name'
306 db77d79e Stavros Sachtouris
        self.client.update_server_name(self.server1['id'], new_name)
307 2005b18e Stavros Sachtouris
        r = self.client.get_server_details(
308 2005b18e Stavros Sachtouris
            self.server1['id'],
309 2005b18e Stavros Sachtouris
            success=(200, 400))
310 db77d79e Stavros Sachtouris
        self.assertEqual(r['name'], new_name)
311 db77d79e Stavros Sachtouris
        changed = self.servers.pop(self.servname1)
312 db77d79e Stavros Sachtouris
        changed['name'] = new_name
313 db77d79e Stavros Sachtouris
        self.servers[new_name] = changed
314 db77d79e Stavros Sachtouris
315 db77d79e Stavros Sachtouris
    def test_reboot_server(self):
316 db77d79e Stavros Sachtouris
        """Test reboot server"""
317 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
318 24ff0a35 Stavros Sachtouris
            self.servname1,
319 db77d79e Stavros Sachtouris
            self.flavorid,
320 db77d79e Stavros Sachtouris
            self.img)
321 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'BUILD')
322 24ff0a35 Stavros Sachtouris
        self.server2 = self._create_server(
323 24ff0a35 Stavros Sachtouris
            self.servname2,
324 db77d79e Stavros Sachtouris
            self.flavorid + 1,
325 db77d79e Stavros Sachtouris
            self.img)
326 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server2['id'], 'BUILD')
327 db77d79e Stavros Sachtouris
        self._test_0060_reboot_server()
328 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'REBOOT')
329 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server2['id'], 'REBOOT')
330 db77d79e Stavros Sachtouris
331 db77d79e Stavros Sachtouris
    def _test_0060_reboot_server(self):
332 db77d79e Stavros Sachtouris
        self.client.reboot_server(self.server1['id'])
333 db77d79e Stavros Sachtouris
        self.assertTrue(self._has_status(self.server1['id'], 'REBOOT'))
334 db77d79e Stavros Sachtouris
        self.client.reboot_server(self.server2['id'], hard=True)
335 db77d79e Stavros Sachtouris
        self.assertTrue(self._has_status(self.server2['id'], 'REBOOT'))
336 db77d79e Stavros Sachtouris
337 db77d79e Stavros Sachtouris
    def _test_0070_wait_test_servers_to_reboot(self):
338 db77d79e Stavros Sachtouris
        """Pseudo-test to wait for VMs to load"""
339 d1f78278 Stavros Sachtouris
        print('')
340 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'REBOOT')
341 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server2['id'], 'REBOOT')
342 db77d79e Stavros Sachtouris
343 db77d79e Stavros Sachtouris
    def test_create_server_metadata(self):
344 db77d79e Stavros Sachtouris
        """Test create_server_metadata"""
345 2005b18e Stavros Sachtouris
        self.server1 = self._create_server(
346 2005b18e Stavros Sachtouris
            self.servname1,
347 db77d79e Stavros Sachtouris
            self.flavorid,
348 db77d79e Stavros Sachtouris
            self.img)
349 db77d79e Stavros Sachtouris
        self._test_0080_create_server_metadata()
350 db77d79e Stavros Sachtouris
351 db77d79e Stavros Sachtouris
    def _test_0080_create_server_metadata(self):
352 24ff0a35 Stavros Sachtouris
        r1 = self.client.create_server_metadata(
353 24ff0a35 Stavros Sachtouris
            self.server1['id'],
354 db77d79e Stavros Sachtouris
            'mymeta',
355 db77d79e Stavros Sachtouris
            'mymeta val')
356 db77d79e Stavros Sachtouris
        self.assertTrue('mymeta' in r1)
357 db77d79e Stavros Sachtouris
        r2 = self.client.get_server_metadata(self.server1['id'], 'mymeta')
358 db77d79e Stavros Sachtouris
        self.assert_dicts_are_deeply_equal(r1, r2)
359 db77d79e Stavros Sachtouris
360 db77d79e Stavros Sachtouris
    def test_get_server_metadata(self):
361 db77d79e Stavros Sachtouris
        """Test get server_metadata"""
362 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
363 24ff0a35 Stavros Sachtouris
            self.servname1,
364 db77d79e Stavros Sachtouris
            self.flavorid,
365 db77d79e Stavros Sachtouris
            self.img)
366 db77d79e Stavros Sachtouris
        self._test_0090_get_server_metadata()
367 db77d79e Stavros Sachtouris
368 db77d79e Stavros Sachtouris
    def _test_0090_get_server_metadata(self):
369 24ff0a35 Stavros Sachtouris
        self.client.create_server_metadata(
370 24ff0a35 Stavros Sachtouris
            self.server1['id'],
371 db77d79e Stavros Sachtouris
            'mymeta_0',
372 db77d79e Stavros Sachtouris
            'val_0')
373 db77d79e Stavros Sachtouris
        r = self.client.get_server_metadata(self.server1['id'], 'mymeta_0')
374 db77d79e Stavros Sachtouris
        self.assertEqual(r['mymeta_0'], 'val_0')
375 db77d79e Stavros Sachtouris
376 db77d79e Stavros Sachtouris
    def test_update_server_metadata(self):
377 db77d79e Stavros Sachtouris
        """Test update_server_metadata"""
378 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
379 24ff0a35 Stavros Sachtouris
            self.servname1,
380 db77d79e Stavros Sachtouris
            self.flavorid,
381 db77d79e Stavros Sachtouris
            self.img)
382 db77d79e Stavros Sachtouris
        self._test_0100_update_server_metadata()
383 db77d79e Stavros Sachtouris
384 db77d79e Stavros Sachtouris
    def _test_0100_update_server_metadata(self):
385 24ff0a35 Stavros Sachtouris
        r1 = self.client.create_server_metadata(
386 24ff0a35 Stavros Sachtouris
            self.server1['id'],
387 db77d79e Stavros Sachtouris
            'mymeta3',
388 db77d79e Stavros Sachtouris
            'val2')
389 db77d79e Stavros Sachtouris
        self.assertTrue('mymeta3'in r1)
390 24ff0a35 Stavros Sachtouris
        r2 = self.client.update_server_metadata(
391 24ff0a35 Stavros Sachtouris
            self.server1['id'],
392 db77d79e Stavros Sachtouris
            mymeta3='val3')
393 db77d79e Stavros Sachtouris
        self.assertTrue(r2['mymeta3'], 'val3')
394 db77d79e Stavros Sachtouris
395 db77d79e Stavros Sachtouris
    def test_delete_server_metadata(self):
396 db77d79e Stavros Sachtouris
        """Test delete_server_metadata"""
397 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
398 24ff0a35 Stavros Sachtouris
            self.servname1,
399 db77d79e Stavros Sachtouris
            self.flavorid,
400 db77d79e Stavros Sachtouris
            self.img)
401 db77d79e Stavros Sachtouris
        self._test_0110_delete_server_metadata()
402 db77d79e Stavros Sachtouris
403 db77d79e Stavros Sachtouris
    def _test_0110_delete_server_metadata(self):
404 24ff0a35 Stavros Sachtouris
        r1 = self.client.create_server_metadata(
405 24ff0a35 Stavros Sachtouris
            self.server1['id'],
406 db77d79e Stavros Sachtouris
            'mymeta',
407 db77d79e Stavros Sachtouris
            'val')
408 db77d79e Stavros Sachtouris
        self.assertTrue('mymeta' in r1)
409 db77d79e Stavros Sachtouris
        self.client.delete_server_metadata(self.server1['id'], 'mymeta')
410 db77d79e Stavros Sachtouris
        try:
411 db77d79e Stavros Sachtouris
            self.client.get_server_metadata(self.server1['id'], 'mymeta')
412 db77d79e Stavros Sachtouris
            raise ClientError('Wrong Error', status=100)
413 db77d79e Stavros Sachtouris
        except ClientError as err:
414 db77d79e Stavros Sachtouris
            self.assertEqual(err.status, 404)
415 db77d79e Stavros Sachtouris
416 db77d79e Stavros Sachtouris
    def test_list_flavors(self):
417 db77d79e Stavros Sachtouris
        """Test flavors_get"""
418 db77d79e Stavros Sachtouris
        self._test_0120_list_flavors()
419 db77d79e Stavros Sachtouris
420 db77d79e Stavros Sachtouris
    def _test_0120_list_flavors(self):
421 db77d79e Stavros Sachtouris
        r = self.client.list_flavors()
422 db77d79e Stavros Sachtouris
        self.assertTrue(len(r) > 1)
423 db77d79e Stavros Sachtouris
        r = self.client.list_flavors(detail=True)
424 db77d79e Stavros Sachtouris
        self.assertTrue('SNF:disk_template' in r[0])
425 db77d79e Stavros Sachtouris
426 db77d79e Stavros Sachtouris
    def test_get_flavor_details(self):
427 db77d79e Stavros Sachtouris
        """Test test_get_flavor_details"""
428 db77d79e Stavros Sachtouris
        self._test_0130_get_flavor_details()
429 db77d79e Stavros Sachtouris
430 db77d79e Stavros Sachtouris
    def _test_0130_get_flavor_details(self):
431 db77d79e Stavros Sachtouris
        r = self.client.get_flavor_details(self.flavorid)
432 db77d79e Stavros Sachtouris
        self.assert_dicts_are_deeply_equal(self._flavor_details, r)
433 db77d79e Stavros Sachtouris
434 db77d79e Stavros Sachtouris
    def test_list_images(self):
435 db77d79e Stavros Sachtouris
        """Test list_images"""
436 db77d79e Stavros Sachtouris
        self._test_0140_list_images()
437 db77d79e Stavros Sachtouris
438 db77d79e Stavros Sachtouris
    def _test_0140_list_images(self):
439 db77d79e Stavros Sachtouris
        r = self.client.list_images()
440 db77d79e Stavros Sachtouris
        self.assertTrue(len(r) > 1)
441 db77d79e Stavros Sachtouris
        r = self.client.list_images(detail=True)
442 db77d79e Stavros Sachtouris
        for detailed_img in r:
443 db77d79e Stavros Sachtouris
            if detailed_img['id'] == self.img:
444 db77d79e Stavros Sachtouris
                break
445 db77d79e Stavros Sachtouris
        self.assert_dicts_are_deeply_equal(detailed_img, self.img_details)
446 db77d79e Stavros Sachtouris
447 db77d79e Stavros Sachtouris
    def test_get_image_details(self):
448 db77d79e Stavros Sachtouris
        """Test image_details"""
449 db77d79e Stavros Sachtouris
        self._test_0150_get_image_details()
450 db77d79e Stavros Sachtouris
451 db77d79e Stavros Sachtouris
    def _test_0150_get_image_details(self):
452 db77d79e Stavros Sachtouris
        r = self.client.get_image_details(self.img)
453 db77d79e Stavros Sachtouris
        r.pop('updated')
454 db77d79e Stavros Sachtouris
        self.assert_dicts_are_deeply_equal(r, self.img_details)
455 db77d79e Stavros Sachtouris
456 db77d79e Stavros Sachtouris
    def test_get_image_metadata(self):
457 db77d79e Stavros Sachtouris
        """Test get_image_metadata"""
458 db77d79e Stavros Sachtouris
        self._test_0160_get_image_metadata()
459 db77d79e Stavros Sachtouris
460 db77d79e Stavros Sachtouris
    def _test_0160_get_image_metadata(self):
461 db77d79e Stavros Sachtouris
        r = self.client.get_image_metadata(self.img)
462 db77d79e Stavros Sachtouris
        self.assert_dicts_are_deeply_equal(
463 db77d79e Stavros Sachtouris
            self.img_details['metadata']['values'], r)
464 db77d79e Stavros Sachtouris
        for key, val in self.img_details['metadata']['values'].items():
465 db77d79e Stavros Sachtouris
            r = self.client.get_image_metadata(self.img, key)
466 db77d79e Stavros Sachtouris
            self.assertEqual(r[key], val)
467 db77d79e Stavros Sachtouris
468 db77d79e Stavros Sachtouris
    def test_shutdown_server(self):
469 db77d79e Stavros Sachtouris
        """Test shutdown_server"""
470 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
471 24ff0a35 Stavros Sachtouris
            self.servname1,
472 db77d79e Stavros Sachtouris
            self.flavorid,
473 db77d79e Stavros Sachtouris
            self.img)
474 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'BUILD')
475 db77d79e Stavros Sachtouris
        self._test_0170_shutdown_server()
476 db77d79e Stavros Sachtouris
477 db77d79e Stavros Sachtouris
    def _test_0170_shutdown_server(self):
478 db77d79e Stavros Sachtouris
        self.client.shutdown_server(self.server1['id'])
479 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'ACTIVE')
480 db77d79e Stavros Sachtouris
        r = self.client.get_server_details(self.server1['id'])
481 db77d79e Stavros Sachtouris
        self.assertEqual(r['status'], 'STOPPED')
482 db77d79e Stavros Sachtouris
483 db77d79e Stavros Sachtouris
    def test_start_server(self):
484 db77d79e Stavros Sachtouris
        """Test start_server"""
485 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
486 24ff0a35 Stavros Sachtouris
            self.servname1,
487 db77d79e Stavros Sachtouris
            self.flavorid,
488 db77d79e Stavros Sachtouris
            self.img)
489 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'BUILD')
490 db77d79e Stavros Sachtouris
        self.client.shutdown_server(self.server1['id'])
491 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'ACTIVE')
492 db77d79e Stavros Sachtouris
        self._test_0180_start_server()
493 db77d79e Stavros Sachtouris
494 db77d79e Stavros Sachtouris
    def _test_0180_start_server(self):
495 db77d79e Stavros Sachtouris
        self.client.start_server(self.server1['id'])
496 db77d79e Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'STOPPED')
497 db77d79e Stavros Sachtouris
        r = self.client.get_server_details(self.server1['id'])
498 db77d79e Stavros Sachtouris
        self.assertEqual(r['status'], 'ACTIVE')
499 d1f78278 Stavros Sachtouris
500 d1f78278 Stavros Sachtouris
    def test_get_server_console(self):
501 d1f78278 Stavros Sachtouris
        """Test get_server_console"""
502 24ff0a35 Stavros Sachtouris
        self.server2 = self._create_server(
503 24ff0a35 Stavros Sachtouris
            self.servname2,
504 d1f78278 Stavros Sachtouris
            self.flavorid + 2,
505 d1f78278 Stavros Sachtouris
            self.img)
506 d1f78278 Stavros Sachtouris
        self._wait_for_status(self.server2['id'], 'BUILD')
507 d1f78278 Stavros Sachtouris
        self._test_0190_get_server_console()
508 d1f78278 Stavros Sachtouris
509 d1f78278 Stavros Sachtouris
    def _test_0190_get_server_console(self):
510 d1f78278 Stavros Sachtouris
        r = self.client.get_server_console(self.server2['id'])
511 d1f78278 Stavros Sachtouris
        self.assertTrue('host' in r)
512 d1f78278 Stavros Sachtouris
        self.assertTrue('password' in r)
513 d1f78278 Stavros Sachtouris
        self.assertTrue('port' in r)
514 d1f78278 Stavros Sachtouris
        self.assertTrue('type' in r)
515 d1f78278 Stavros Sachtouris
516 d1f78278 Stavros Sachtouris
    def test_get_firewall_profile(self):
517 d1f78278 Stavros Sachtouris
        """Test get_firewall_profile"""
518 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
519 24ff0a35 Stavros Sachtouris
            self.servname1,
520 d1f78278 Stavros Sachtouris
            self.flavorid,
521 d1f78278 Stavros Sachtouris
            self.img)
522 d1f78278 Stavros Sachtouris
        self._test_0200_get_firewall_profile()
523 d1f78278 Stavros Sachtouris
524 d1f78278 Stavros Sachtouris
    def _test_0200_get_firewall_profile(self):
525 d1f78278 Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'BUILD')
526 d1f78278 Stavros Sachtouris
        fprofile = self.client.get_firewall_profile(self.server1['id'])
527 d1f78278 Stavros Sachtouris
        self.assertTrue(fprofile in self.PROFILES)
528 d1f78278 Stavros Sachtouris
529 d1f78278 Stavros Sachtouris
    def test_set_firewall_profile(self):
530 d1f78278 Stavros Sachtouris
        """Test set_firewall_profile"""
531 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
532 24ff0a35 Stavros Sachtouris
            self.servname1,
533 d1f78278 Stavros Sachtouris
            self.flavorid,
534 d1f78278 Stavros Sachtouris
            self.img)
535 d1f78278 Stavros Sachtouris
        self._test_0210_set_firewall_profile()
536 d1f78278 Stavros Sachtouris
537 d1f78278 Stavros Sachtouris
    def _test_0210_set_firewall_profile(self):
538 d1f78278 Stavros Sachtouris
539 d1f78278 Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'BUILD')
540 d1f78278 Stavros Sachtouris
        PROFILES = ['DISABLED', 'ENABLED', 'DISABLED', 'PROTECTED']
541 d1f78278 Stavros Sachtouris
        fprofile = self.client.get_firewall_profile(self.server1['id'])
542 d1f78278 Stavros Sachtouris
        print('')
543 d1f78278 Stavros Sachtouris
        count_success = 0
544 d1f78278 Stavros Sachtouris
        for counter, fprofile in enumerate(PROFILES):
545 d1f78278 Stavros Sachtouris
            npos = counter + 1
546 d1f78278 Stavros Sachtouris
            try:
547 d1f78278 Stavros Sachtouris
                nprofile = PROFILES[npos]
548 d1f78278 Stavros Sachtouris
            except IndexError:
549 d1f78278 Stavros Sachtouris
                nprofile = PROFILES[0]
550 d1f78278 Stavros Sachtouris
            print('\tprofile swap %s: %s -> %s' % (npos, fprofile, nprofile))
551 d1f78278 Stavros Sachtouris
            self.client.set_firewall_profile(self.server1['id'], nprofile)
552 d1f78278 Stavros Sachtouris
            time.sleep(0.5)
553 d1f78278 Stavros Sachtouris
            self.client.reboot_server(self.server1['id'], hard=True)
554 d1f78278 Stavros Sachtouris
            time.sleep(1)
555 d1f78278 Stavros Sachtouris
            self._wait_for_status(self.server1['id'], 'REBOOT')
556 d1f78278 Stavros Sachtouris
            time.sleep(0.5)
557 d1f78278 Stavros Sachtouris
            changed = self.client.get_firewall_profile(self.server1['id'])
558 d1f78278 Stavros Sachtouris
            try:
559 d1f78278 Stavros Sachtouris
                self.assertEqual(changed, nprofile)
560 d1f78278 Stavros Sachtouris
            except AssertionError as err:
561 d1f78278 Stavros Sachtouris
                if count_success:
562 d1f78278 Stavros Sachtouris
                    print('\tFAIL in swap #%s' % npos)
563 d1f78278 Stavros Sachtouris
                    break
564 d1f78278 Stavros Sachtouris
                else:
565 d1f78278 Stavros Sachtouris
                    raise err
566 d1f78278 Stavros Sachtouris
            count_success += 1
567 d1f78278 Stavros Sachtouris
568 d1f78278 Stavros Sachtouris
    def test_get_server_stats(self):
569 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
570 24ff0a35 Stavros Sachtouris
            self.servname1,
571 d1f78278 Stavros Sachtouris
            self.flavorid,
572 d1f78278 Stavros Sachtouris
            self.img)
573 d1f78278 Stavros Sachtouris
        self._test_0220_get_server_stats()
574 d1f78278 Stavros Sachtouris
575 d1f78278 Stavros Sachtouris
    def _test_0220_get_server_stats(self):
576 d1f78278 Stavros Sachtouris
        r = self.client.get_server_stats(self.server1['id'])
577 24ff0a35 Stavros Sachtouris
        it = ('cpuBar', 'cpuTimeSeries', 'netBar', 'netTimeSeries', 'refresh')
578 24ff0a35 Stavros Sachtouris
        for term in it:
579 d1f78278 Stavros Sachtouris
            self.assertTrue(term in r)
580 d1f78278 Stavros Sachtouris
581 d1f78278 Stavros Sachtouris
    def test_create_network(self):
582 d1f78278 Stavros Sachtouris
        """Test create_network"""
583 d1f78278 Stavros Sachtouris
        self._test_0230_create_network()
584 d1f78278 Stavros Sachtouris
585 d1f78278 Stavros Sachtouris
    def _test_0230_create_network(self):
586 d1f78278 Stavros Sachtouris
        self.network1 = self._create_network(self.netname1)
587 d1f78278 Stavros Sachtouris
        self._wait_for_network(self.network1['id'], 'ACTIVE')
588 d1f78278 Stavros Sachtouris
        self.network1 = self.client.get_network_details(self.network1['id'])
589 d1f78278 Stavros Sachtouris
        nets = self.client.list_networks(self.network1['id'])
590 d1f78278 Stavros Sachtouris
        chosen = [net for net in nets if net['id'] == self.network1['id']][0]
591 d1f78278 Stavros Sachtouris
        chosen.pop('updated')
592 d1f78278 Stavros Sachtouris
        net1 = dict(self.network1)
593 d1f78278 Stavros Sachtouris
        net1.pop('updated')
594 d1f78278 Stavros Sachtouris
        self.assert_dicts_are_deeply_equal(chosen, net1)
595 d1f78278 Stavros Sachtouris
596 d1f78278 Stavros Sachtouris
    def test_connect_server(self):
597 d1f78278 Stavros Sachtouris
        """Test connect_server"""
598 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
599 24ff0a35 Stavros Sachtouris
            self.servname1,
600 d1f78278 Stavros Sachtouris
            self.flavorid,
601 d1f78278 Stavros Sachtouris
            self.img)
602 d1f78278 Stavros Sachtouris
        self.network1 = self._create_network(self.netname1)
603 d1f78278 Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'BUILD')
604 d1f78278 Stavros Sachtouris
        self._wait_for_network(self.network1['id'], 'ACTIVE')
605 d1f78278 Stavros Sachtouris
        self._test_0240_connect_server()
606 d1f78278 Stavros Sachtouris
607 d1f78278 Stavros Sachtouris
    def _test_0250_connect_server(self):
608 d1f78278 Stavros Sachtouris
        self.client.connect_server(self.server1['id'], self.network1['id'])
609 d1f78278 Stavros Sachtouris
        self.assertTrue(self._wait_for_nic(
610 d1f78278 Stavros Sachtouris
            self.network1['id'],
611 d1f78278 Stavros Sachtouris
            self.server1['id']))
612 d1f78278 Stavros Sachtouris
613 d1f78278 Stavros Sachtouris
    def test_disconnect_server(self):
614 d1f78278 Stavros Sachtouris
        """Test disconnect_server"""
615 d1f78278 Stavros Sachtouris
        self.test_connect_server()
616 d1f78278 Stavros Sachtouris
        self._test_0250_disconnect_server()
617 d1f78278 Stavros Sachtouris
618 d1f78278 Stavros Sachtouris
    def _test_0250_disconnect_server(self):
619 d1f78278 Stavros Sachtouris
        self.client.disconnect_server(self.server1['id'], self.network1['id'])
620 24ff0a35 Stavros Sachtouris
        self.assertTrue(self._wait_for_nic(
621 24ff0a35 Stavros Sachtouris
            self.network1['id'],
622 d1f78278 Stavros Sachtouris
            self.server1['id'],
623 d1f78278 Stavros Sachtouris
            in_creation=False))
624 d1f78278 Stavros Sachtouris
625 d1f78278 Stavros Sachtouris
    def _test_0260_wait_for_second_network(self):
626 d1f78278 Stavros Sachtouris
        self.network2 = self._create_network(self.netname2)
627 d1f78278 Stavros Sachtouris
        self._wait_for_network(self.network2['id'], 'ACTIVE')
628 d1f78278 Stavros Sachtouris
629 d1f78278 Stavros Sachtouris
    def test_list_server_nics(self):
630 d1f78278 Stavros Sachtouris
        """Test list_server_nics"""
631 24ff0a35 Stavros Sachtouris
        self.server1 = self._create_server(
632 24ff0a35 Stavros Sachtouris
            self.servname1,
633 d1f78278 Stavros Sachtouris
            self.flavorid,
634 d1f78278 Stavros Sachtouris
            self.img)
635 d1f78278 Stavros Sachtouris
        self.network2 = self._create_network(self.netname2)
636 d1f78278 Stavros Sachtouris
        self._wait_for_status(self.server1['id'], 'BUILD')
637 d1f78278 Stavros Sachtouris
        self._wait_for_network(self.network2['id'], 'ACTIVE')
638 d1f78278 Stavros Sachtouris
        self._test_0280_list_server_nics()
639 d1f78278 Stavros Sachtouris
640 d1f78278 Stavros Sachtouris
    def _test_0280_list_server_nics(self):
641 d1f78278 Stavros Sachtouris
        r = self.client.list_server_nics(self.server1['id'])
642 d1f78278 Stavros Sachtouris
        len0 = len(r)
643 d1f78278 Stavros Sachtouris
        self.client.connect_server(self.server1['id'], self.network2['id'])
644 d1f78278 Stavros Sachtouris
        self.assertTrue(self._wait_for_nic(
645 d1f78278 Stavros Sachtouris
            self.network2['id'],
646 d1f78278 Stavros Sachtouris
            self.server1['id']))
647 d1f78278 Stavros Sachtouris
        r = self.client.list_server_nics(self.server1['id'])
648 d1f78278 Stavros Sachtouris
        self.assertTrue(len(r) > len0)
649 d1f78278 Stavros Sachtouris
650 d1f78278 Stavros Sachtouris
    def test_list_networks(self):
651 d1f78278 Stavros Sachtouris
        """Test list_network"""
652 d1f78278 Stavros Sachtouris
        self.network1 = self._create_network(self.netname1)
653 d1f78278 Stavros Sachtouris
        self._wait_for_network(self.network1['id'], 'ACTIVE')
654 d1f78278 Stavros Sachtouris
        self._test_0290_list_networks()
655 d1f78278 Stavros Sachtouris
656 d1f78278 Stavros Sachtouris
    def _test_0290_list_networks(self):
657 d1f78278 Stavros Sachtouris
        r = self.client.list_networks()
658 d1f78278 Stavros Sachtouris
        self.assertTrue(len(r) > 1)
659 d1f78278 Stavros Sachtouris
        ids = [net['id'] for net in r]
660 d1f78278 Stavros Sachtouris
        names = [net['name'] for net in r]
661 d1f78278 Stavros Sachtouris
        self.assertTrue('1' in ids)
662 d1f78278 Stavros Sachtouris
        #self.assertTrue('public' in names)
663 d1f78278 Stavros Sachtouris
        self.assertTrue(self.network1['id'] in ids)
664 d1f78278 Stavros Sachtouris
        self.assertTrue(self.network1['name'] in names)
665 d1f78278 Stavros Sachtouris
666 d1f78278 Stavros Sachtouris
        r = self.client.list_networks(detail=True)
667 d1f78278 Stavros Sachtouris
        ids = [net['id'] for net in r]
668 d1f78278 Stavros Sachtouris
        names = [net['name'] for net in r]
669 d1f78278 Stavros Sachtouris
        for net in r:
670 d1f78278 Stavros Sachtouris
            self.assertTrue(net['id'] in ids)
671 d1f78278 Stavros Sachtouris
            self.assertTrue(net['name'] in names)
672 d1f78278 Stavros Sachtouris
            for term in ('status', 'updated', 'created'):
673 d1f78278 Stavros Sachtouris
                self.assertTrue(term in net.keys())
674 d1f78278 Stavros Sachtouris
675 d1f78278 Stavros Sachtouris
    def test_get_network_details(self):
676 d1f78278 Stavros Sachtouris
        """Test get_network_details"""
677 d1f78278 Stavros Sachtouris
        self.network1 = self._create_network(self.netname1)
678 d1f78278 Stavros Sachtouris
        self._test_0300_get_network_details()
679 d1f78278 Stavros Sachtouris
680 d1f78278 Stavros Sachtouris
    def _test_0300_get_network_details(self):
681 d1f78278 Stavros Sachtouris
        r = self.client.get_network_details(self.network1['id'])
682 d1f78278 Stavros Sachtouris
        net1 = dict(self.network1)
683 d1f78278 Stavros Sachtouris
        net1.pop('status')
684 d1f78278 Stavros Sachtouris
        net1.pop('updated', None)
685 d1f78278 Stavros Sachtouris
        net1.pop('attachments')
686 d1f78278 Stavros Sachtouris
        r.pop('status')
687 d1f78278 Stavros Sachtouris
        r.pop('updated', None)
688 d1f78278 Stavros Sachtouris
        r.pop('attachments')
689 d1f78278 Stavros Sachtouris
        self.assert_dicts_are_deeply_equal(net1, r)
690 d1f78278 Stavros Sachtouris
691 d1f78278 Stavros Sachtouris
    def test_update_network_name(self):
692 d1f78278 Stavros Sachtouris
        self.network2 = self._create_network(self.netname2)
693 d1f78278 Stavros Sachtouris
        self._test_0310_update_network_name()
694 d1f78278 Stavros Sachtouris
695 d1f78278 Stavros Sachtouris
    def _test_0310_update_network_name(self):
696 d1f78278 Stavros Sachtouris
        updated_name = self.netname2 + '_upd'
697 d1f78278 Stavros Sachtouris
        self.client.update_network_name(self.network2['id'], updated_name)
698 d1f78278 Stavros Sachtouris
699 d1f78278 Stavros Sachtouris
        def netwait(wait):
700 d1f78278 Stavros Sachtouris
            r = self.client.get_network_details(self.network2['id'])
701 d1f78278 Stavros Sachtouris
            if r['name'] == updated_name:
702 d1f78278 Stavros Sachtouris
                return
703 d1f78278 Stavros Sachtouris
            time.sleep(wait)
704 d1f78278 Stavros Sachtouris
        self.do_with_progress_bar(
705 d1f78278 Stavros Sachtouris
            netwait,
706 d1f78278 Stavros Sachtouris
            'Network %s name is changing:' % self.network2['id'],
707 d1f78278 Stavros Sachtouris
            self._waits[:5])
708 d1f78278 Stavros Sachtouris
709 d1f78278 Stavros Sachtouris
        r = self.client.get_network_details(self.network2['id'])
710 d1f78278 Stavros Sachtouris
        self.assertEqual(r['name'], updated_name)
711 d1f78278 Stavros Sachtouris
712 d1f78278 Stavros Sachtouris
    """ Don't have auth to test this
713 d1f78278 Stavros Sachtouris
    def test_delete_image(self):
714 d1f78278 Stavros Sachtouris
        ""Test delete_image""
715 d1f78278 Stavros Sachtouris
        self._test_0330_delete_image()
716 d1f78278 Stavros Sachtouris
    def _test_0330_delete_image(self):
717 d1f78278 Stavros Sachtouris
        images = self.client.list_images()
718 d1f78278 Stavros Sachtouris
        self.client.delete_image(images[2]['id'])
719 d1f78278 Stavros Sachtouris
        try:
720 d1f78278 Stavros Sachtouris
            r = self.client.get_image_details(images[2]['id'], success=(400))
721 d1f78278 Stavros Sachtouris
        except ClientError as err:
722 d1f78278 Stavros Sachtouris
            self.assertEqual(err.status, 404)
723 d1f78278 Stavros Sachtouris

724 d1f78278 Stavros Sachtouris
    def test_create_image_metadata(self):
725 d1f78278 Stavros Sachtouris
        ""Test create_image_metadata""
726 d1f78278 Stavros Sachtouris
        self._test_0340_create_image_metadata()
727 d1f78278 Stavros Sachtouris
    def _test_0340_create_image_metadata(self):
728 d1f78278 Stavros Sachtouris
        r = self.client.create_image_metadata(self.img, 'mykey', 'myval')
729 d1f78278 Stavros Sachtouris
        self.assertEqual(r['mykey'], 'myval')
730 d1f78278 Stavros Sachtouris

731 d1f78278 Stavros Sachtouris
    def test_update_image_metadata(self):
732 d1f78278 Stavros Sachtouris
        ""Test update_image_metadata""
733 d1f78278 Stavros Sachtouris
        self._test_0350_update_image_metadata()
734 d1f78278 Stavros Sachtouris
    def _test_0350_update_image_metadata(self):
735 d1f78278 Stavros Sachtouris
        r = self.client.create_image_metadata(self.img, 'mykey0', 'myval')
736 d1f78278 Stavros Sachtouris
        r = self.client.update_image_metadata(self.img, 'mykey0', 'myval0')
737 d1f78278 Stavros Sachtouris
        self.assertEqual(r['mykey0'], 'myval0')
738 d1f78278 Stavros Sachtouris

739 d1f78278 Stavros Sachtouris
    def test_delete_image_metadata(self):
740 d1f78278 Stavros Sachtouris
        ""Test delete_image_metadata""
741 d1f78278 Stavros Sachtouris
        self._test_0360_delete_image_metadata()
742 d1f78278 Stavros Sachtouris
    def _test_0360_delete_image_metadata(self):
743 d1f78278 Stavros Sachtouris
        self.client.create_image_metadata(self.img, 'mykey1', 'myval1')
744 d1f78278 Stavros Sachtouris
        self.client.delete_image_metadata(self.img, 'mykey1')
745 d1f78278 Stavros Sachtouris
        r = self.client.get_image_metadata(self.img)
746 d1f78278 Stavros Sachtouris
        self.assertNotEqual('mykey1' in r)
747 d1f78278 Stavros Sachtouris
    """