Tzu-Mainn Chen 55b9990f93 Revert "Use HTTPClient from common apiclient code"
This reverts commit e83c56584ea182255af0ae54cf71104a77c6de1b.

This code was failing to pass along the correct headers when trying to
retrieve the Tuskar endpoint from Keystone. However, it worked upon
reverting this commit.

The reversion exposed an error in the tests for python 3, which is fixed
as described in this abandoned patch: https://review.openstack.org/#/c/65673/

Closes-Bug: #1307945
Change-Id: I17fa9ddd8bd1722f207393bb1249249c81c1342b
2014-04-15 15:48:39 +02:00

58 lines
1.8 KiB
Python

# 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.
import sys
from tuskarclient.openstack.common.apiclient import exceptions as exc
class BaseException(Exception):
"""An error occurred."""
def __init__(self, message=None):
self.message = message
def __str__(self):
return self.message or self.__class__.__doc__
class InvalidEndpoint(BaseException):
"""The provided endpoint is invalid."""
class CommunicationError(BaseException):
"""Unable to communicate with server."""
class HTTPMultipleChoices(exc.HttpError):
code = 300
def __str__(self):
self.details = ("Requested version of OpenStack Images API is not"
"available.")
return "%s (HTTP %s) %s" % (self.__class__.__name__, self.code,
self.details)
#NOTE(bcwaldon): Build a mapping of HTTP codes to corresponding exception
# classes
_code_map = {}
for obj_name in dir(sys.modules[__name__]):
if obj_name.startswith('HTTP'):
obj = getattr(sys.modules[__name__], obj_name)
_code_map[obj.code] = obj
def from_response(response):
"""Return an instance of an exc.HttpError based on httplib response."""
cls = _code_map.get(response.status, exc.HttpError)
return cls()