]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Return availability_zone_hints as list when net-create
authorHirofumi Ichihara <ichihara.hirofumi@lab.ntt.co.jp>
Fri, 11 Dec 2015 07:19:27 +0000 (16:19 +0900)
committerHirofumi Ichihara <ichihara.hirofumi@lab.ntt.co.jp>
Fri, 11 Dec 2015 07:22:57 +0000 (16:22 +0900)
In neutron with availability zone extensions, we receive
the return value with availability_zone_hints as string
although we expect list.

Change-Id: Ifb1d741324725f3f2692962a02bf3d870611fafb
Closes-bug: #1524602

neutron/plugins/ml2/plugin.py
neutron/tests/unit/plugins/ml2/test_plugin.py

index 3c226e56052aad2b67677eb6ae88f64f84bd2f63..ed8ac7a389793f9642611d5c6993e490ed2c209b 100644 (file)
@@ -642,9 +642,9 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
                                                  net_data[az_ext.AZ_HINTS])
                 az_hints = az_ext.convert_az_list_to_string(
                                                 net_data[az_ext.AZ_HINTS])
-                super(Ml2Plugin, self).update_network(context,
+                res = super(Ml2Plugin, self).update_network(context,
                     result['id'], {'network': {az_ext.AZ_HINTS: az_hints}})
-                result[az_ext.AZ_HINTS] = az_hints
+                result[az_ext.AZ_HINTS] = res[az_ext.AZ_HINTS]
 
             # Update the transparent vlan if configured
             if utils.is_extension_supported(self, 'vlan-transparent'):
index 7fb9a6338e5adbabec4242d1fe29b260029738ca..878825d7ead629d6b1943993f5dd26ceea7b767a 100644 (file)
@@ -32,10 +32,12 @@ from neutron.common import constants
 from neutron.common import exceptions as exc
 from neutron.common import utils
 from neutron import context
+from neutron.db import agents_db
 from neutron.db import api as db_api
 from neutron.db import db_base_plugin_v2 as base_plugin
 from neutron.db import l3_db
 from neutron.db import models_v2
+from neutron.extensions import availability_zone as az_ext
 from neutron.extensions import external_net
 from neutron.extensions import multiprovidernet as mpnet
 from neutron.extensions import portbindings
@@ -393,6 +395,21 @@ class TestMl2NetworksWithVlanTransparencyAndMTU(TestMl2NetworksV2):
         self.assertIn('vlan_transparent', network)
 
 
+class TestMl2NetworksWithAvailabilityZone(TestMl2NetworksV2):
+    def test_create_network_availability_zone(self):
+        az_hints = ['az1', 'az2']
+        data = {'network': {'name': 'net1',
+                            az_ext.AZ_HINTS: az_hints,
+                            'tenant_id': 'tenant_one'}}
+        with mock.patch.object(agents_db.AgentAvailabilityZoneMixin,
+                               'validate_availability_zones'):
+            network_req = self.new_create_request('networks', data)
+            res = network_req.get_response(self.api)
+            self.assertEqual(201, res.status_int)
+            network = self.deserialize(self.fmt, res)['network']
+            self.assertEqual(az_hints, network[az_ext.AZ_HINTS])
+
+
 class TestMl2SubnetsV2(test_plugin.TestSubnetsV2,
                        Ml2PluginV2TestCase):
     def test_delete_subnet_race_with_dhcp_port_creation(self):