From 999ee86deaab2d72069f9d16c3a7d893c1426fc4 Mon Sep 17 00:00:00 2001 From: Hirofumi Ichihara Date: Fri, 11 Dec 2015 16:19:27 +0900 Subject: [PATCH] Return availability_zone_hints as list when net-create 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 | 4 ++-- neutron/tests/unit/plugins/ml2/test_plugin.py | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/neutron/plugins/ml2/plugin.py b/neutron/plugins/ml2/plugin.py index 3c226e560..ed8ac7a38 100644 --- a/neutron/plugins/ml2/plugin.py +++ b/neutron/plugins/ml2/plugin.py @@ -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'): diff --git a/neutron/tests/unit/plugins/ml2/test_plugin.py b/neutron/tests/unit/plugins/ml2/test_plugin.py index 7fb9a6338..878825d7e 100644 --- a/neutron/tests/unit/plugins/ml2/test_plugin.py +++ b/neutron/tests/unit/plugins/ml2/test_plugin.py @@ -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): -- 2.45.2