Sort nova availability zones by name

Change-Id: I1e9a37e3dcf5040aa59e4efa65115f75819ef06e
Closes-Bug: #1762880
This commit is contained in:
Sam Morrison 2018-04-11 11:28:58 +10:00
parent 07237c1fc6
commit 0887722914
2 changed files with 18 additions and 1 deletions

View File

@ -22,6 +22,7 @@ from __future__ import absolute_import
import collections
import logging
from operator import attrgetter
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
@ -920,7 +921,9 @@ def tenant_absolute_limits(request, reserved=False, tenant_id=None):
@profiler.trace
def availability_zone_list(request, detailed=False):
return novaclient(request).availability_zones.list(detailed=detailed)
zones = novaclient(request).availability_zones.list(detailed=detailed)
zones.sort(key=attrgetter('zoneName'))
return zones
@profiler.trace

View File

@ -751,3 +751,17 @@ class ComputeApiTests(test.APIMockTestCase):
for key in expected_keys:
self.assertEqual(quota_data[key], ret_val.get(key).limit)
novaclient.quotas.get.assert_called_once_with(tenant_id)
@mock.patch.object(api.nova, 'novaclient')
def test_availability_zone_list(self, mock_novaclient):
novaclient = mock_novaclient.return_value
detailed = False
zones = [mock.Mock(zoneName='john'), mock.Mock(zoneName='sam'),
mock.Mock(zoneName='bob')]
novaclient.availability_zones.list.return_value = zones
ret_val = api.nova.availability_zone_list(self.request, detailed)
self.assertEqual([zone.zoneName for zone in ret_val],
['bob', 'john', 'sam'])
novaclient.availability_zones.list.assert_called_once_with(
detailed=detailed)