From 5de48a0daac4e82cee5376d2c8e57c1b0947a167 Mon Sep 17 00:00:00 2001 From: Valeriy Ponomaryov Date: Fri, 16 Oct 2015 19:43:07 +0300 Subject: [PATCH] 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 8c165b378958b541c5578303612dc9efa84076e6) --- manila/db/sqlalchemy/api.py | 2 +- .../services/share/json/shares_client.py | 9 +++++ .../tests/api/test_availability_zones.py | 33 +++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 manila_tempest_tests/tests/api/test_availability_zones.py diff --git a/manila/db/sqlalchemy/api.py b/manila/db/sqlalchemy/api.py index 12fd284aa7..f0922bf6c5 100644 --- a/manila/db/sqlalchemy/api.py +++ b/manila/db/sqlalchemy/api.py @@ -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( diff --git a/manila_tempest_tests/services/share/json/shares_client.py b/manila_tempest_tests/services/share/json/shares_client.py index 660f16b7d7..3eeea5e83f 100644 --- a/manila_tempest_tests/services/share/json/shares_client.py +++ b/manila_tempest_tests/services/share/json/shares_client.py @@ -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) diff --git a/manila_tempest_tests/tests/api/test_availability_zones.py b/manila_tempest_tests/tests/api/test_availability_zones.py new file mode 100644 index 0000000000..7330f41d94 --- /dev/null +++ b/manila_tempest_tests/tests/api/test_availability_zones.py @@ -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)