Merge "Hide Swift network info in Horizon error message"

This commit is contained in:
Zuul 2018-10-02 14:51:36 +00:00 committed by Gerrit Code Review
commit 9d7620f76f
1 changed files with 27 additions and 0 deletions

View File

@ -18,6 +18,8 @@
from datetime import datetime
import functools
import six.moves.urllib.parse as urlparse
import swiftclient
@ -36,6 +38,18 @@ GLOBAL_READ_ACL = ".r:*"
LIST_CONTENTS_ACL = ".rlistings"
def safe_swift_exception(function):
@functools.wraps(function)
def wrapper(*args, **kwargs):
try:
return function(*args, **kwargs)
except swiftclient.client.ClientException as e:
e.http_scheme = e.http_host = e.http_port = ''
raise e
return wrapper
class Container(base.APIDictWrapper):
pass
@ -136,6 +150,7 @@ def swift_object_exists(request, container_name, object_name):
@profiler.trace
@safe_swift_exception
def swift_get_containers(request, marker=None, prefix=None):
limit = getattr(settings, 'API_RESULT_LIMIT', 1000)
headers, containers = swift_api(request).get_account(limit=limit + 1,
@ -150,6 +165,7 @@ def swift_get_containers(request, marker=None, prefix=None):
@profiler.trace
@safe_swift_exception
def swift_get_container(request, container_name, with_data=True):
if with_data:
headers, data = swift_api(request).get_object(container_name, "")
@ -184,6 +200,7 @@ def swift_get_container(request, container_name, with_data=True):
@profiler.trace
@safe_swift_exception
def swift_create_container(request, name, metadata=({})):
if swift_container_exists(request, name):
raise exceptions.AlreadyExists(name, 'container')
@ -193,6 +210,7 @@ def swift_create_container(request, name, metadata=({})):
@profiler.trace
@safe_swift_exception
def swift_update_container(request, name, metadata=({})):
headers = _metadata_to_header(metadata)
swift_api(request).post_container(name, headers=headers)
@ -200,6 +218,7 @@ def swift_update_container(request, name, metadata=({})):
@profiler.trace
@safe_swift_exception
def swift_delete_container(request, name):
# It cannot be deleted if it's not empty. The batch remove of objects
# be done in swiftclient instead of Horizon.
@ -214,6 +233,7 @@ def swift_delete_container(request, name):
@profiler.trace
@safe_swift_exception
def swift_get_objects(request, container_name, prefix=None, marker=None,
limit=None):
limit = limit or getattr(settings, 'API_RESULT_LIMIT', 1000)
@ -233,6 +253,7 @@ def swift_get_objects(request, container_name, prefix=None, marker=None,
@profiler.trace
@safe_swift_exception
def swift_filter_objects(request, filter_string, container_name, prefix=None,
marker=None):
# FIXME(kewu): Swift currently has no real filtering API, thus the marker
@ -269,6 +290,7 @@ def wildcard_search(string, q):
@profiler.trace
@safe_swift_exception
def swift_copy_object(request, orig_container_name, orig_object_name,
new_container_name, new_object_name):
if swift_object_exists(request, new_container_name, new_object_name):
@ -286,6 +308,7 @@ def swift_copy_object(request, orig_container_name, orig_object_name,
@profiler.trace
@safe_swift_exception
def swift_upload_object(request, container_name, object_name,
object_file=None):
headers = {}
@ -305,6 +328,7 @@ def swift_upload_object(request, container_name, object_name,
@profiler.trace
@safe_swift_exception
def swift_create_pseudo_folder(request, container_name, pseudo_folder_name):
# Make sure the folder name doesn't already exist.
if swift_object_exists(request, container_name, pseudo_folder_name):
@ -324,12 +348,14 @@ def swift_create_pseudo_folder(request, container_name, pseudo_folder_name):
@profiler.trace
@safe_swift_exception
def swift_delete_object(request, container_name, object_name):
swift_api(request).delete_object(container_name, object_name)
return True
@profiler.trace
@safe_swift_exception
def swift_delete_folder(request, container_name, object_name):
objects, more = swift_get_objects(request, container_name,
prefix=object_name)
@ -350,6 +376,7 @@ def swift_delete_folder(request, container_name, object_name):
@profiler.trace
@safe_swift_exception
def swift_get_object(request, container_name, object_name, with_data=True,
resp_chunk_size=CHUNK_SIZE):
if with_data: