Fix list-availability-zones API for PostgreSQL

Listing of availability zones using PostgreSQl does not work in Manila.
It is caused by usage of not strict types comparison.
So, fix it and add Tempest test for API.

Change-Id: I21a064d60c4e1ccb6752ba6e220785f80bd1cb69
Closes-Bug: #1506938
(cherry picked from commit 8c165b3789)
This commit is contained in:
Valeriy Ponomaryov 2015-10-16 19:43:07 +03:00 committed by Thomas Bechtold
parent 0672f5b186
commit 5de48a0daa
3 changed files with 43 additions and 1 deletions

View File

@ -2978,7 +2978,7 @@ def availability_zone_get_all(context):
models.Service.availability_zone_id,
session=session,
read_deleted="no"
).filter_by(disabled=0).distinct()
).filter_by(disabled=False).distinct()
return model_query(context, models.AvailabilityZone, session=session,
read_deleted="no").filter(

View File

@ -751,3 +751,12 @@ class SharesClient(rest_client.RestClient):
resp, body = self.get(uri)
self.expected_success(200, resp.status)
return json.loads(body)
###############
def list_availability_zones(self):
"""Get list of availability zones."""
uri = 'os-availability-zone'
resp, body = self.get(uri)
self.expected_success(200, resp.status)
return self._parse_resp(body)

View File

@ -0,0 +1,33 @@
# Copyright 2015 mirantis Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from tempest import test
from manila_tempest_tests.tests.api import base
class AvailabilityZonesTest(base.BaseSharesTest):
def _list_availability_zones_assertions(self, availability_zones):
self.assertTrue(len(availability_zones) > 0)
keys = ("created_at", "updated_at", "name", "id")
for az in availability_zones:
for key in keys:
self.assertIn(key, az)
@test.attr(type=["smoke", "gate"])
def test_list_availability_zones_extension(self):
azs = self.shares_client.list_availability_zones()
self._list_availability_zones_assertions(azs)