blob: cc18974cc1639e204d9c3646a2317cc7a511a7a1 [file] [log] [blame]
Soren Hansenbc1d3a02011-09-08 13:33:17 +02001
2import json
3import os
4
5import unittest2 as unittest
6
7from kong import openstack
8from kong import exceptions
9
10
11class ServerAddressesTest(unittest.TestCase):
12
13 @classmethod
14 def setUpClass(self):
15 self.os = openstack.Manager()
16 self.image_ref = self.os.config.env.image_ref
17 self.flavor_ref = self.os.config.env.flavor_ref
18
19 def setUp(self):
20 server = {
21 'name' : 'testserver',
22 'imageRef' : self.image_ref,
23 'flavorRef' : self.flavor_ref,
24 }
25
26 created_server = self.os.nova.create_server(server)
27 self.server_id = created_server['id']
28 self.os.nova.wait_for_server_status(self.server_id, 'ACTIVE')
29
30 def tearDown(self):
31 self.os.nova.delete_server(self.server_id)
32
33 def test_server_addresses(self):
34 """Retrieve server addresses information"""
35 url = '/servers/%s' % self.server_id
36 response, body = self.os.nova.request('GET', url)
37 self.assertEqual(response.status, 200)
38 body = json.loads(body)
39 self.assertTrue('addresses' in body['server'].keys())
40 server_addresses = body['server']['addresses']
41
42 url = '/servers/%s/ips' % self.server_id
43 response, body = self.os.nova.request('GET', url)
44 self.assertEqual(response.status, 200)
45 body = json.loads(body)
46 self.assertEqual(body.keys(), ['addresses'])
47 ips_addresses = body['addresses']
48
49 self.assertEqual(server_addresses, ips_addresses)
50
51 # Now validate entities within addresses containers if available
52 for (network, network_data) in ips_addresses.items():
53 # Ensure we can query for each particular network
54 url = '/servers/%s/ips/%s' % (self.server_id, network)
55 response, body = self.os.nova.request('GET', url)
56 self.assertEqual(response.status, 200)
57 body = json.loads(body)
58 self.assertEqual(body.keys(), [network])
59 self.assertEqual(body[network], network_data)
60
61 for ip_data in network_data:
62 self.assertEqual(set(ip_data.keys()),
63 set(['addr', 'version']))