blob: b76718c63c7b09607b515407b1e0e8ff0a4d96a7 [file] [log] [blame]
Soren Hansenbc1d3a02011-09-08 13:33:17 +02001
2import json
3import os
4
Soren Hansenbc1d3a02011-09-08 13:33:17 +02005from kong import exceptions
Soren Hansen6adacc82011-09-09 13:34:35 +02006from kong import openstack
7from kong import tests
Soren Hansenbc1d3a02011-09-08 13:33:17 +02008
9
Soren Hansen6adacc82011-09-09 13:34:35 +020010class ServerAddressesTest(tests.FunctionalTest):
Soren Hansenbc1d3a02011-09-08 13:33:17 +020011
12 @classmethod
13 def setUpClass(self):
Soren Hansen6adacc82011-09-09 13:34:35 +020014 super(ServerAddressesTest, self).setUp()
Soren Hansenbc1d3a02011-09-08 13:33:17 +020015 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']))