Soren Hansen | bc1d3a0 | 2011-09-08 13:33:17 +0200 | [diff] [blame^] | 1 | |
| 2 | import json |
| 3 | import os |
| 4 | |
| 5 | import unittest2 as unittest |
| 6 | |
| 7 | from kong import openstack |
| 8 | from kong import exceptions |
| 9 | |
| 10 | |
| 11 | class 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'])) |