File 0001-Get-EC2-metadata-localip-return-controller-node-ip.patch of Package openstack-nova
From 68789d58792ec149bea5e06a7ca1123141daa486 Mon Sep 17 00:00:00 2001
From: lizheming <lizheming.li@huawei.com>
Date: Wed, 2 Jul 2014 17:34:02 +0800
Subject: [PATCH] Get EC2 metadata localip return controller node ip
When Get EC2 metadata localip, it will return
<instanceIP, Controller_Local_IP>, but for ec2
metadata localip, it expects to return instanceIP.
This patch fixes the issue.
Change-Id: I6c42e713265ebb3138f7a94df5ee996e6f68d02f
Closes-Bug: #1334857
---
nova/api/metadata/base.py | 2 +-
nova/tests/unit/test_metadata.py | 19 ++++++++++---------
2 files changed, 11 insertions(+), 10 deletions(-)
Index: nova-2014.2.3.dev5/nova/api/metadata/base.py
===================================================================
--- nova-2014.2.3.dev5.orig/nova/api/metadata/base.py
+++ nova-2014.2.3.dev5/nova/api/metadata/base.py
@@ -239,7 +239,7 @@ class InstanceMetadata():
'ami-manifest-path': 'FIXME',
'instance-id': self.ec2_ids['instance-id'],
'hostname': hostname,
- 'local-ipv4': self.address or fixed_ip,
+ 'local-ipv4': fixed_ip or self.address,
'reservation-id': self.instance['reservation_id'],
'security-groups': fmt_sgroups}
Index: nova-2014.2.3.dev5/nova/tests/test_metadata.py
===================================================================
--- nova-2014.2.3.dev5.orig/nova/tests/test_metadata.py
+++ nova-2014.2.3.dev5/nova/tests/test_metadata.py
@@ -322,6 +322,15 @@ class MetadataTestCase(test.TestCase):
base.InstanceMetadata(fake_inst_obj(self.context))
+ def test_local_ipv4(self):
+ nw_info = fake_network.fake_get_instance_nw_info(self.stubs,
+ num_networks=2)
+ expected_local = "192.168.1.100"
+ md = fake_InstanceMetadata(self.stubs, self.instance,
+ network_info=nw_info, address="fake")
+ data = md.get_ec2_metadata(version='2009-04-04')
+ self.assertEqual(expected_local, data['meta-data']['local-ipv4'])
+
def test_local_ipv4_from_nw_info(self):
nw_info = fake_network.fake_get_instance_nw_info(self.stubs,
num_networks=2)
@@ -332,20 +341,12 @@ class MetadataTestCase(test.TestCase):
self.assertEqual(data['meta-data']['local-ipv4'], expected_local)
def test_local_ipv4_from_address(self):
- nw_info = fake_network.fake_get_instance_nw_info(self.stubs,
- num_networks=2)
expected_local = "fake"
md = fake_InstanceMetadata(self.stubs, self.instance,
- network_info=nw_info, address="fake")
+ network_info=[], address="fake")
data = md.get_ec2_metadata(version='2009-04-04')
self.assertEqual(data['meta-data']['local-ipv4'], expected_local)
- def test_local_ipv4_from_nw_none(self):
- md = fake_InstanceMetadata(self.stubs, self.instance,
- network_info=[])
- data = md.get_ec2_metadata(version='2009-04-04')
- self.assertEqual(data['meta-data']['local-ipv4'], '')
-
class OpenStackMetadataTestCase(test.TestCase):
def setUp(self):