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):
openSUSE Build Service is sponsored by