Merge "Verify config support keystone on subpath"

This commit is contained in:
Jenkins 2016-05-02 14:24:23 +00:00 committed by Gerrit Code Review
commit be15e9c6c6
2 changed files with 43 additions and 5 deletions

View File

@ -16,6 +16,7 @@
import argparse
import os
import re
import sys
import traceback
@ -77,9 +78,16 @@ def verify_glance_api_versions(os, update):
not CONF.image_feature_enabled.api_v2, update)
def _remove_version_project(url_path):
# The regex matches strings like /v2.0, /v3/, /v2.1/project-id/
return re.sub(r'/v\d+(\.\d+)?(/[^/]+)?', '', url_path)
def _get_unversioned_endpoint(base_url):
endpoint_parts = urlparse.urlparse(base_url)
endpoint = endpoint_parts.scheme + '://' + endpoint_parts.netloc
new_path = _remove_version_project(endpoint_parts.path)
endpoint_parts = endpoint_parts._replace(path=new_path)
endpoint = urlparse.urlunparse(endpoint_parts)
return endpoint
@ -89,7 +97,9 @@ def _get_api_versions(os, service):
'keystone': os.identity_client,
'cinder': os.volumes_client,
}
client_dict[service].skip_path()
if service != 'keystone':
# Since keystone may be listening on a path, do not remove the path.
client_dict[service].skip_path()
endpoint = _get_unversioned_endpoint(client_dict[service].base_url)
http = tempest.lib.common.http.ClosingHttp(

View File

@ -12,28 +12,56 @@
# License for the specific language governing permissions and limitations
# under the License.
import mock
from oslo_serialization import jsonutils as json
from oslotest import mockpatch
from tempest.cmd import verify_tempest_config
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.tests import base
from tempest.tests import fake_config
class TestGetAPIVersions(base.TestCase):
def test_remove_version_project(self):
f = verify_tempest_config._remove_version_project
self.assertEqual('/', f('/v2.1/%s/' % data_utils.rand_uuid_hex()))
self.assertEqual('', f('/v2.1/tenant_id'))
self.assertEqual('', f('/v3'))
self.assertEqual('/', f('/v3/'))
self.assertEqual('/something/', f('/something/v2.1/tenant_id/'))
self.assertEqual('/something', f('/something/v2.1/tenant_id'))
self.assertEqual('/something', f('/something/v3'))
self.assertEqual('/something/', f('/something/v3/'))
self.assertEqual('/', f('/')) # http://localhost/
self.assertEqual('', f('')) # http://localhost
def test_url_grab_versioned_nova_nossl(self):
base_url = 'http://127.0.0.1:8774/v2/'
endpoint = verify_tempest_config._get_unversioned_endpoint(base_url)
self.assertEqual('http://127.0.0.1:8774', endpoint)
self.assertEqual('http://127.0.0.1:8774/', endpoint)
def test_url_grab_versioned_nova_ssl(self):
base_url = 'https://127.0.0.1:8774/v3/'
endpoint = verify_tempest_config._get_unversioned_endpoint(base_url)
self.assertEqual('https://127.0.0.1:8774', endpoint)
self.assertEqual('https://127.0.0.1:8774/', endpoint)
def test_get_unversioned_endpoint_base(self):
base_url = 'https://127.0.0.1:5000/'
endpoint = verify_tempest_config._get_unversioned_endpoint(base_url)
self.assertEqual('https://127.0.0.1:5000/', endpoint)
def test_get_unversioned_endpoint_subpath(self):
base_url = 'https://127.0.0.1/identity/v3'
endpoint = verify_tempest_config._get_unversioned_endpoint(base_url)
self.assertEqual('https://127.0.0.1/identity', endpoint)
def test_get_unversioned_endpoint_subpath_trailing_solidus(self):
base_url = 'https://127.0.0.1/identity/v3/'
endpoint = verify_tempest_config._get_unversioned_endpoint(base_url)
self.assertEqual('https://127.0.0.1/identity/', endpoint)
class TestDiscovery(base.TestCase):