From 4584e552a653904c36cf04cb295a7bf09d2def28 Mon Sep 17 00:00:00 2001 From: Chris Behrens Date: Wed, 28 Sep 2011 22:56:34 +0000 Subject: Fixes euca-describe-instances failing or not showing IPs Fixes bug 855660 Makes EC2 call network manager to get IP information now, to match the same change to OS API Also refactors a bit of OS API's calls... moving some code into 'common' Fixed tests. Some tests for OS API v1.0 were not properly testing. Fixed imports per HACKING in files touched. Change-Id: I455637a9feb802291dfaf2ef694dabc2607784f9 --- nova/tests/api/ec2/test_cloud.py | 77 +++++++- nova/tests/api/openstack/contrib/test_volumes.py | 10 - nova/tests/api/openstack/fakes.py | 14 +- nova/tests/api/openstack/test_servers.py | 233 +++++++++++++---------- nova/tests/integrated/test_servers.py | 1 - nova/tests/test_metadata.py | 20 +- 6 files changed, 229 insertions(+), 126 deletions(-) (limited to 'nova/tests') diff --git a/nova/tests/api/ec2/test_cloud.py b/nova/tests/api/ec2/test_cloud.py index 8c58b1f47..7053ebab7 100644 --- a/nova/tests/api/ec2/test_cloud.py +++ b/nova/tests/api/ec2/test_cloud.py @@ -505,12 +505,30 @@ class CloudTestCase(test.TestCase): def test_describe_instances(self): """Makes sure describe_instances works and filters results.""" + self.flags(use_ipv6=True) + + def fake_get_instance_nw_info(self, context, instance): + return [(None, {'label': 'public', + 'ips': [{'ip': '192.168.0.3'}, + {'ip': '192.168.0.4'}], + 'ip6s': [{'ip': 'fe80::beef'}]})] + + def fake_get_floating_ips_by_fixed_address(self, context, fixed_ip): + return ['1.2.3.4', '5.6.7.8'] + + self.stubs.Set(network.API, 'get_instance_nw_info', + fake_get_instance_nw_info) + self.stubs.Set(network.API, 'get_floating_ips_by_fixed_address', + fake_get_floating_ips_by_fixed_address) + inst1 = db.instance_create(self.context, {'reservation_id': 'a', 'image_ref': 1, + 'instance_type_id': 1, 'host': 'host1', 'vm_state': 'active'}) inst2 = db.instance_create(self.context, {'reservation_id': 'a', 'image_ref': 1, + 'instance_type_id': 1, 'host': 'host2', 'vm_state': 'active'}) comp1 = db.service_create(self.context, {'host': 'host1', @@ -522,28 +540,77 @@ class CloudTestCase(test.TestCase): result = self.cloud.describe_instances(self.context) result = result['reservationSet'][0] self.assertEqual(len(result['instancesSet']), 2) + + # Now try filtering. instance_id = ec2utils.id_to_ec2_id(inst2['id']) result = self.cloud.describe_instances(self.context, instance_id=[instance_id]) result = result['reservationSet'][0] self.assertEqual(len(result['instancesSet']), 1) - self.assertEqual(result['instancesSet'][0]['instanceId'], - instance_id) - self.assertEqual(result['instancesSet'][0] - ['placement']['availabilityZone'], 'zone2') + instance = result['instancesSet'][0] + self.assertEqual(instance['instanceId'], instance_id) + self.assertEqual(instance['placement']['availabilityZone'], + 'zone2') + self.assertEqual(instance['publicDnsName'], '1.2.3.4') + self.assertEqual(instance['ipAddress'], '1.2.3.4') + self.assertEqual(instance['dnsName'], '1.2.3.4') + self.assertEqual(instance['privateDnsName'], '192.168.0.3') + self.assertEqual(instance['privateIpAddress'], '192.168.0.3') + self.assertEqual(instance['dnsNameV6'], 'fe80::beef') db.instance_destroy(self.context, inst1['id']) db.instance_destroy(self.context, inst2['id']) db.service_destroy(self.context, comp1['id']) db.service_destroy(self.context, comp2['id']) + def test_describe_instances_no_ipv6(self): + """Makes sure describe_instances w/ no ipv6 works.""" + self.flags(use_ipv6=False) + + def fake_get_instance_nw_info(self, context, instance): + return [(None, {'label': 'public', + 'ips': [{'ip': '192.168.0.3'}, + {'ip': '192.168.0.4'}], + 'ip6s': [{'ip': 'fe80::beef'}]})] + + def fake_get_floating_ips_by_fixed_address(self, context, fixed_ip): + return ['1.2.3.4', '5.6.7.8'] + + self.stubs.Set(network.API, 'get_instance_nw_info', + fake_get_instance_nw_info) + self.stubs.Set(network.API, 'get_floating_ips_by_fixed_address', + fake_get_floating_ips_by_fixed_address) + + inst1 = db.instance_create(self.context, {'reservation_id': 'a', + 'image_ref': 1, + 'instance_type_id': 1, + 'vm_state': 'active'}) + comp1 = db.service_create(self.context, {'host': 'host1', + 'topic': "compute"}) + result = self.cloud.describe_instances(self.context) + result = result['reservationSet'][0] + self.assertEqual(len(result['instancesSet']), 1) + instance = result['instancesSet'][0] + instance_id = ec2utils.id_to_ec2_id(inst1['id']) + self.assertEqual(instance['instanceId'], instance_id) + self.assertEqual(instance['publicDnsName'], '1.2.3.4') + self.assertEqual(instance['ipAddress'], '1.2.3.4') + self.assertEqual(instance['dnsName'], '1.2.3.4') + self.assertEqual(instance['privateDnsName'], '192.168.0.3') + self.assertEqual(instance['privateIpAddress'], '192.168.0.3') + self.assertNotIn('dnsNameV6', instance) + db.instance_destroy(self.context, inst1['id']) + db.service_destroy(self.context, comp1['id']) + def test_describe_instances_deleted(self): args1 = {'reservation_id': 'a', 'image_ref': 1, + 'instance_type_id': 1, 'host': 'host1', 'vm_state': 'active'} inst1 = db.instance_create(self.context, args1) args2 = {'reservation_id': 'b', 'image_ref': 1, + 'instance_type_id': 1, 'host': 'host1', 'vm_state': 'active'} inst2 = db.instance_create(self.context, args2) @@ -575,9 +642,11 @@ class CloudTestCase(test.TestCase): def _setUpBlockDeviceMapping(self): inst1 = db.instance_create(self.context, {'image_ref': 1, + 'instance_type_id': 1, 'root_device_name': '/dev/sdb1'}) inst2 = db.instance_create(self.context, {'image_ref': 2, + 'instance_type_id': 1, 'root_device_name': '/dev/sdc1'}) instance_id = inst1['id'] diff --git a/nova/tests/api/openstack/contrib/test_volumes.py b/nova/tests/api/openstack/contrib/test_volumes.py index 9a24b9a54..e911c5ffb 100644 --- a/nova/tests/api/openstack/contrib/test_volumes.py +++ b/nova/tests/api/openstack/contrib/test_volumes.py @@ -49,16 +49,6 @@ def fake_compute_api_create(cls, context, instance_type, image_href, **kwargs): }], resv_id) -def fake_get_instance_nw_info(cls, context, instance): - return [(None, {'label': 'public', - 'ips': [{'ip': '10.0.0.1'}], - 'ip6s': []})] - - -def fake_get_floating_ips_by_fixed_address(self, context, fixed_ip): - return ['172.16.0.1'] - - class BootFromVolumeTest(test.TestCase): def setUp(self): diff --git a/nova/tests/api/openstack/fakes.py b/nova/tests/api/openstack/fakes.py index 767e95165..e0176c9a3 100644 --- a/nova/tests/api/openstack/fakes.py +++ b/nova/tests/api/openstack/fakes.py @@ -190,19 +190,23 @@ def stub_out_nw_api_get_floating_ips_by_fixed_address(stubs, func=None): stubs.Set(nova.network.API, 'get_floating_ips_by_fixed_address', func) -def stub_out_nw_api(stubs, cls=None): +def stub_out_nw_api(stubs, cls=None, private=None, publics=None): + if not private: + private = '192.168.0.3' + if not publics: + publics = ['1.2.3.4'] + class Fake: def get_instance_nw_info(*args, **kwargs): - pass + return [(None, {'label': 'private', + 'ips': [{'ip': private}]})] def get_floating_ips_by_fixed_address(*args, **kwargs): - pass + return publics if cls is None: cls = Fake stubs.Set(nova.network, 'API', cls) - stub_out_nw_api_get_floating_ips_by_fixed_address(stubs) - stub_out_nw_api_get_instance_nw_info(stubs) def _make_image_fixtures(): diff --git a/nova/tests/api/openstack/test_servers.py b/nova/tests/api/openstack/test_servers.py index 97eb1da05..de0631bc8 100644 --- a/nova/tests/api/openstack/test_servers.py +++ b/nova/tests/api/openstack/test_servers.py @@ -77,13 +77,6 @@ def return_server_with_attributes(**kwargs): return _return_server -def return_server_with_addresses(private, public): - def _return_server(context, id): - return stub_instance(id, private_address=private, - public_addresses=public) - return _return_server - - def return_server_with_state(vm_state, task_state=None): def _return_server(context, id): return stub_instance(id, vm_state=vm_state, task_state=task_state) @@ -143,23 +136,16 @@ def instance_addresses(context, instance_id): return None -def stub_instance(id, user_id='fake', project_id='fake', private_address=None, - public_addresses=None, host=None, +def stub_instance(id, user_id='fake', project_id='fake', host=None, vm_state=None, task_state=None, reservation_id="", uuid=FAKE_UUID, image_ref="10", - flavor_id="1", interfaces=None, name=None, key_name='', + flavor_id="1", name=None, key_name='', access_ipv4=None, access_ipv6=None, progress=0): metadata = [] metadata.append(InstanceMetadata(key='seq', value=id)) - if interfaces is None: - interfaces = [] - inst_type = instance_types.get_instance_type_by_flavor_id(int(flavor_id)) - if public_addresses is None: - public_addresses = list() - if host is not None: host = str(host) @@ -208,13 +194,8 @@ def stub_instance(id, user_id='fake', project_id='fake', private_address=None, "access_ip_v4": access_ipv4, "access_ip_v6": access_ipv6, "uuid": uuid, - "virtual_interfaces": interfaces, "progress": progress} - instance["fixed_ips"] = { - "address": private_address, - "floating_ips": [{"address":ip} for ip in public_addresses]} - return instance @@ -704,10 +685,10 @@ class ServersTest(test.TestCase): self.assertDictMatch(res_dict, expected_server) def test_get_server_by_id_with_addresses_xml(self): - private = "192.168.0.3" - public = ["1.2.3.4"] - new_return_server = return_server_with_addresses(private, public) - self.stubs.Set(nova.db.api, 'instance_get', new_return_server) + private = '192.168.1.2' + publics = ['1.2.3.4'] + fakes.stub_out_nw_api(self.stubs, private=private, publics=publics) + self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id) req = webob.Request.blank('/v1.0/servers/1') req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) @@ -716,84 +697,83 @@ class ServersTest(test.TestCase): self.assertEquals(server.nodeName, 'server') self.assertEquals(server.getAttribute('id'), '1') self.assertEquals(server.getAttribute('name'), 'server1') - (public,) = server.getElementsByTagName('public') - (ip,) = public.getElementsByTagName('ip') - self.assertEquals(ip.getAttribute('addr'), '1.2.3.4') - (private,) = server.getElementsByTagName('private') - (ip,) = private.getElementsByTagName('ip') - self.assertEquals(ip.getAttribute('addr'), '192.168.0.3') + (public_elem,) = server.getElementsByTagName('public') + (ip,) = public_elem.getElementsByTagName('ip') + self.assertEquals(ip.getAttribute('addr'), publics[0]) + (private_elem,) = server.getElementsByTagName('private') + (ip,) = private_elem.getElementsByTagName('ip') + self.assertEquals(ip.getAttribute('addr'), private) def test_get_server_by_id_with_addresses(self): - private = "192.168.0.3" - public = ["1.2.3.4"] - new_return_server = return_server_with_addresses(private, public) - self.stubs.Set(nova.db.api, 'instance_get', new_return_server) + private = '192.168.1.2' + publics = ['1.2.3.4'] + fakes.stub_out_nw_api(self.stubs, private=private, publics=publics) + self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id) req = webob.Request.blank('/v1.0/servers/1') res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res_dict['server']['id'], 1) self.assertEqual(res_dict['server']['name'], 'server1') addresses = res_dict['server']['addresses'] - self.assertEqual(len(addresses["public"]), len(public)) - self.assertEqual(addresses["public"][0], public[0]) + self.assertEqual(len(addresses["public"]), len(publics)) + self.assertEqual(addresses["public"][0], publics[0]) self.assertEqual(len(addresses["private"]), 1) self.assertEqual(addresses["private"][0], private) def test_get_server_addresses_v1_0(self): - private = '192.168.0.3' - public = ['1.2.3.4'] - new_return_server = return_server_with_addresses(private, public) - self.stubs.Set(nova.db.api, 'instance_get', new_return_server) + private = '192.168.1.2' + publics = ['1.2.3.4'] + fakes.stub_out_nw_api(self.stubs, private=private, publics=publics) + self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id) req = webob.Request.blank('/v1.0/servers/1/ips') res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res_dict, { - 'addresses': {'public': public, 'private': [private]}}) + 'addresses': {'public': publics, 'private': [private]}}) def test_get_server_addresses_xml_v1_0(self): - private_expected = "192.168.0.3" - public_expected = ["1.2.3.4"] - new_return_server = return_server_with_addresses(private_expected, - public_expected) - self.stubs.Set(nova.db.api, 'instance_get', new_return_server) + private = '192.168.1.2' + publics = ['1.2.3.4'] + fakes.stub_out_nw_api(self.stubs, private=private, publics=publics) + self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id) req = webob.Request.blank('/v1.0/servers/1/ips') req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) dom = minidom.parseString(res.body) (addresses,) = dom.childNodes self.assertEquals(addresses.nodeName, 'addresses') - (public,) = addresses.getElementsByTagName('public') - (ip,) = public.getElementsByTagName('ip') - self.assertEquals(ip.getAttribute('addr'), public_expected[0]) - (private,) = addresses.getElementsByTagName('private') - (ip,) = private.getElementsByTagName('ip') - self.assertEquals(ip.getAttribute('addr'), private_expected) + (public_elem,) = addresses.getElementsByTagName('public') + (ip,) = public_elem.getElementsByTagName('ip') + self.assertEquals(ip.getAttribute('addr'), publics[0]) + (private_elem,) = addresses.getElementsByTagName('private') + (ip,) = private_elem.getElementsByTagName('ip') + self.assertEquals(ip.getAttribute('addr'), private) def test_get_server_addresses_public_v1_0(self): - private = "192.168.0.3" - public = ["1.2.3.4"] - new_return_server = return_server_with_addresses(private, public) - self.stubs.Set(nova.db.api, 'instance_get', new_return_server) + private = '192.168.1.2' + publics = ['1.2.3.4'] + fakes.stub_out_nw_api(self.stubs, private=private, publics=publics) + self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id) req = webob.Request.blank('/v1.0/servers/1/ips/public') res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) - self.assertEqual(res_dict, {'public': public}) + self.assertEqual(res_dict, {'public': publics}) def test_get_server_addresses_private_v1_0(self): - private = "192.168.0.3" - public = ["1.2.3.4"] - new_return_server = return_server_with_addresses(private, public) - self.stubs.Set(nova.db.api, 'instance_get', new_return_server) + private = '192.168.1.2' + publics = ['1.2.3.4'] + fakes.stub_out_nw_api(self.stubs, private=private, publics=publics) + self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id) req = webob.Request.blank('/v1.0/servers/1/ips/private') res = req.get_response(fakes.wsgi_app()) res_dict = json.loads(res.body) self.assertEqual(res_dict, {'private': [private]}) def test_get_server_addresses_public_xml_v1_0(self): - private = "192.168.0.3" - public = ["1.2.3.4"] - new_return_server = return_server_with_addresses(private, public) - self.stubs.Set(nova.db.api, 'instance_get', new_return_server) + private = '192.168.1.2' + publics = ['1.2.3.4'] + fakes.stub_out_nw_api(self.stubs, private=private, publics=publics) + self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id) req = webob.Request.blank('/v1.0/servers/1/ips/public') req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) @@ -801,13 +781,13 @@ class ServersTest(test.TestCase): (public_node,) = dom.childNodes self.assertEquals(public_node.nodeName, 'public') (ip,) = public_node.getElementsByTagName('ip') - self.assertEquals(ip.getAttribute('addr'), public[0]) + self.assertEquals(ip.getAttribute('addr'), publics[0]) def test_get_server_addresses_private_xml_v1_0(self): - private = "192.168.0.3" - public = ["1.2.3.4"] - new_return_server = return_server_with_addresses(private, public) - self.stubs.Set(nova.db.api, 'instance_get', new_return_server) + private = '192.168.1.2' + publics = ['1.2.3.4'] + fakes.stub_out_nw_api(self.stubs, private=private, publics=publics) + self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id) req = webob.Request.blank('/v1.0/servers/1/ips/private') req.headers['Accept'] = 'application/xml' res = req.get_response(fakes.wsgi_app()) @@ -819,17 +799,20 @@ class ServersTest(test.TestCase): # NOTE(bcwaldon): lp830817 def test_get_server_by_id_malformed_networks_v1_1(self): - ifaces = [ - { - 'network': None, - 'fixed_ips': [ - {'address': '192.168.0.3'}, - {'address': '192.168.0.4'}, - ], - }, - ] - new_return_server = return_server_with_attributes(interfaces=ifaces) - self.stubs.Set(nova.db.api, 'instance_get', new_return_server) + + nw_info = [(None, None), (None, None)] + + def get_nw_info(*args, **kwargs): + return nw_info + + def get_floats(self, context, fixed_ip): + return [] + + fakes.stub_out_nw_api_get_instance_nw_info(self.stubs, get_nw_info) + fakes.stub_out_nw_api_get_floating_ips_by_fixed_address(self.stubs, + get_floats) + + self.stubs.Set(nova.db.api, 'instance_get', return_server_by_id) req = webob.Request.blank('/v1.1/fake/servers/1') res = req.get_response(fakes.wsgi_app()) @@ -2678,7 +2661,7 @@ class ServersTest(test.TestCase): ''' def return_servers_with_host(context, *args, **kwargs): - return [stub_instance(i, 'fake', 'fake', None, None, i % 2) + return [stub_instance(i, 'fake', 'fake', i % 2) for i in xrange(5)] self.stubs.Set(nova.db.api, 'instance_get_all_by_filters', @@ -3959,11 +3942,29 @@ class TestGetKernelRamdiskFromImage(test.TestCase): class ServersViewBuilderV11Test(test.TestCase): def setUp(self): + super(ServersViewBuilderV11Test, self).setUp() + self.flags(use_ipv6=True) self.instance = self._get_instance() self.view_builder = self._get_view_builder() - def tearDown(self): - pass + public_ip = '192.168.0.3' + private_ip = '172.19.0.1' + + nw_info = [(None, {'label': 'public', + 'ips': [{'ip': public_ip}], + 'ip6s': [{'ip': 'fe80::beef'}]}), + (None, {'label': 'private', + 'ips': [{'ip': private_ip}]})] + + def get_nw_info(*args, **kwargs): + return nw_info + + def get_floats(self, context, fixed_ip): + return [] + + fakes.stub_out_nw_api_get_instance_nw_info(self.stubs, get_nw_info) + fakes.stub_out_nw_api_get_floating_ips_by_fixed_address(self.stubs, + get_floats) def _get_instance(self): created_at = datetime.datetime(2010, 10, 10, 12, 0, 0) @@ -4017,13 +4018,14 @@ class ServersViewBuilderV11Test(test.TestCase): flavor_builder = views.flavors.ViewBuilderV11(base_url, project_id) image_builder = views.images.ViewBuilderV11(base_url, project_id) + ctxt = context.RequestContext('fake_user', project_id) view_builder = nova.api.openstack.views.servers.ViewBuilderV11( - address_builder, - flavor_builder, - image_builder, - base_url, - project_id, - ) + ctxt, + address_builder, + flavor_builder, + image_builder, + base_url, + project_id) return view_builder def test_build_server(self): @@ -4045,7 +4047,7 @@ class ServersViewBuilderV11Test(test.TestCase): } } - output = self.view_builder.build(self.instance, {}, False) + output = self.view_builder.build(self.instance, False) self.assertDictMatch(output, expected_server) def test_build_server_with_project_id(self): @@ -4068,7 +4070,7 @@ class ServersViewBuilderV11Test(test.TestCase): } view_builder = self._get_view_builder(project_id='fake') - output = view_builder.build(self.instance, {}, False) + output = view_builder.build(self.instance, False) self.assertDictMatch(output, expected_server) def test_build_server_detail(self): @@ -4107,7 +4109,12 @@ class ServersViewBuilderV11Test(test.TestCase): }, ], }, - "addresses": {}, + "addresses": {'private': [ + {'version': 4, 'addr': '172.19.0.1'}], + 'public': [ + {'version': 4, 'addr': '192.168.0.3'}, + {'version': 6, 'addr': 'fe80::beef'}] + }, "metadata": {}, "config_drive": None, "links": [ @@ -4123,7 +4130,7 @@ class ServersViewBuilderV11Test(test.TestCase): } } - output = self.view_builder.build(self.instance, {}, True) + output = self.view_builder.build(self.instance, True) self.assertDictMatch(output, expected_server) def test_build_server_detail_active_status(self): @@ -4165,7 +4172,12 @@ class ServersViewBuilderV11Test(test.TestCase): }, ], }, - "addresses": {}, + "addresses": {'private': [ + {'version': 4, 'addr': '172.19.0.1'}], + 'public': [ + {'version': 4, 'addr': '192.168.0.3'}, + {'version': 6, 'addr': 'fe80::beef'}] + }, "metadata": {}, "config_drive": None, "links": [ @@ -4181,7 +4193,7 @@ class ServersViewBuilderV11Test(test.TestCase): } } - output = self.view_builder.build(self.instance, {}, True) + output = self.view_builder.build(self.instance, True) self.assertDictMatch(output, expected_server) def test_build_server_detail_with_accessipv4(self): @@ -4221,7 +4233,12 @@ class ServersViewBuilderV11Test(test.TestCase): }, ], }, - "addresses": {}, + "addresses": {'private': [ + {'version': 4, 'addr': '172.19.0.1'}], + 'public': [ + {'version': 4, 'addr': '192.168.0.3'}, + {'version': 6, 'addr': 'fe80::beef'}] + }, "metadata": {}, "config_drive": None, "accessIPv4": "1.2.3.4", @@ -4239,7 +4256,7 @@ class ServersViewBuilderV11Test(test.TestCase): } } - output = self.view_builder.build(self.instance, {}, True) + output = self.view_builder.build(self.instance, True) self.assertDictMatch(output, expected_server) def test_build_server_detail_with_accessipv6(self): @@ -4279,7 +4296,12 @@ class ServersViewBuilderV11Test(test.TestCase): }, ], }, - "addresses": {}, + "addresses": {'private': [ + {'version': 4, 'addr': '172.19.0.1'}], + 'public': [ + {'version': 4, 'addr': '192.168.0.3'}, + {'version': 6, 'addr': 'fe80::beef'}] + }, "metadata": {}, "config_drive": None, "accessIPv4": "", @@ -4297,7 +4319,7 @@ class ServersViewBuilderV11Test(test.TestCase): } } - output = self.view_builder.build(self.instance, {}, True) + output = self.view_builder.build(self.instance, True) self.assertDictMatch(output, expected_server) def test_build_server_detail_with_metadata(self): @@ -4342,7 +4364,12 @@ class ServersViewBuilderV11Test(test.TestCase): }, ], }, - "addresses": {}, + "addresses": {'private': [ + {'version': 4, 'addr': '172.19.0.1'}], + 'public': [ + {'version': 4, 'addr': '192.168.0.3'}, + {'version': 6, 'addr': 'fe80::beef'}] + }, "metadata": { "Open": "Stack", "Number": "1", @@ -4361,7 +4388,7 @@ class ServersViewBuilderV11Test(test.TestCase): } } - output = self.view_builder.build(self.instance, {}, True) + output = self.view_builder.build(self.instance, True) self.assertDictMatch(output, expected_server) diff --git a/nova/tests/integrated/test_servers.py b/nova/tests/integrated/test_servers.py index 4bfad93b1..94138526c 100644 --- a/nova/tests/integrated/test_servers.py +++ b/nova/tests/integrated/test_servers.py @@ -31,7 +31,6 @@ class ServersTest(integrated_helpers._IntegratedTestBase): def _wait_for_state_change(self, server, status): for i in xrange(0, 50): server = self.api.get_server(server['id']) - print server if server['status'] != status: break time.sleep(.1) diff --git a/nova/tests/test_metadata.py b/nova/tests/test_metadata.py index 03f22d9e1..e4c5af897 100644 --- a/nova/tests/test_metadata.py +++ b/nova/tests/test_metadata.py @@ -19,14 +19,14 @@ """Tests for the testing the metadata code.""" import base64 - import webob +from nova.api.ec2 import metadatarequesthandler +from nova.db.sqlalchemy import api from nova import exception from nova import flags +from nova import network from nova import test -from nova.api.ec2 import metadatarequesthandler -from nova.db.sqlalchemy import api from nova.tests import fake_network @@ -55,10 +55,20 @@ class MetadataTestCase(test.TestCase): 'reservation_id': 'r-xxxxxxxx', 'user_data': '', 'image_ref': 7, + 'vcpus': 1, 'fixed_ips': [], 'root_device_name': '/dev/sda1', 'hostname': 'test'}) + def fake_get_instance_nw_info(self, context, instance): + return [(None, {'label': 'public', + 'ips': [{'ip': '192.168.0.3'}, + {'ip': '192.168.0.4'}], + 'ip6s': [{'ip': 'fe80::beef'}]})] + + def fake_get_floating_ips_by_fixed_address(self, context, fixed_ip): + return ['1.2.3.4', '5.6.7.8'] + def instance_get(*args, **kwargs): return self.instance @@ -68,6 +78,10 @@ class MetadataTestCase(test.TestCase): def floating_get(*args, **kwargs): return '99.99.99.99' + self.stubs.Set(network.API, 'get_instance_nw_info', + fake_get_instance_nw_info) + self.stubs.Set(network.API, 'get_floating_ips_by_fixed_address', + fake_get_floating_ips_by_fixed_address) self.stubs.Set(api, 'instance_get', instance_get) self.stubs.Set(api, 'instance_get_all_by_filters', instance_get_list) self.stubs.Set(api, 'instance_get_floating_address', floating_get) -- cgit