Merge "Audit error logging"

This commit is contained in:
Jenkins 2012-11-19 19:03:57 +00:00 committed by Gerrit Code Review
commit 454a346b5a
7 changed files with 37 additions and 45 deletions

View File

@ -29,6 +29,7 @@ from webob.exc import (HTTPError,
HTTPBadRequest,
HTTPForbidden,
HTTPRequestEntityTooLarge,
HTTPInternalServerError,
HTTPServiceUnavailable)
from glance.api import common
@ -273,7 +274,7 @@ class Controller(controller.BaseController):
if source.lower().startswith(scheme):
return source
msg = _("External sourcing not supported for store %s") % source
LOG.error(msg)
LOG.debug(msg)
raise HTTPBadRequest(explanation=msg,
request=req,
content_type="text/plain")
@ -363,20 +364,20 @@ class Controller(controller.BaseController):
except exception.Duplicate:
msg = (_("An image with identifier %s already exists") %
image_meta['id'])
LOG.error(msg)
LOG.debug(msg)
raise HTTPConflict(explanation=msg,
request=req,
content_type="text/plain")
except exception.Invalid, e:
msg = (_("Failed to reserve image. Got error: %(e)s") % locals())
for line in msg.split('\n'):
LOG.error(line)
LOG.debug(line)
raise HTTPBadRequest(explanation=msg,
request=req,
content_type="text/plain")
except exception.Forbidden:
msg = _("Forbidden to reserve image.")
LOG.error(msg)
LOG.debug(msg)
raise HTTPForbidden(explanation=msg,
request=req,
content_type="text/plain")
@ -403,7 +404,7 @@ class Controller(controller.BaseController):
except Exception as e:
self._safe_kill(req, image_meta['id'])
msg = _("Copy from external source failed: %s") % e
LOG.error(msg)
LOG.debug(msg)
return
image_meta['size'] = image_size or image_meta['size']
else:
@ -412,7 +413,7 @@ class Controller(controller.BaseController):
except exception.InvalidContentType:
self._safe_kill(req, image_meta['id'])
msg = _("Content-Type must be application/octet-stream")
LOG.error(msg)
LOG.debug(msg)
raise HTTPBadRequest(explanation=msg)
image_data = req.body_file
@ -443,7 +444,7 @@ class Controller(controller.BaseController):
"checksum generated from uploaded image "
"(%(checksum)s) did not match. Setting image "
"status to 'killed'.") % locals()
LOG.error(msg)
LOG.debug(msg)
self._safe_kill(req, image_id)
raise HTTPBadRequest(explanation=msg,
content_type="text/plain",
@ -465,13 +466,13 @@ class Controller(controller.BaseController):
except exception.Duplicate, e:
msg = _("Attempt to upload duplicate image: %s") % e
LOG.error(msg)
LOG.debug(msg)
self._safe_kill(req, image_id)
raise HTTPConflict(explanation=msg, request=req)
except exception.Forbidden, e:
msg = _("Forbidden upload attempt: %s") % e
LOG.error(msg)
LOG.debug(msg)
self._safe_kill(req, image_id)
raise HTTPForbidden(explanation=msg,
request=req,
@ -508,16 +509,9 @@ class Controller(controller.BaseController):
raise e
except Exception, e:
tb_info = traceback.format_exc()
LOG.error(tb_info)
LOG.exception(_("Failed to upload image"))
self._safe_kill(req, image_id)
msg = _("Error uploading image: (%(class_name)s): "
"%(exc)s") % ({'class_name': e.__class__.__name__,
'exc': str(e)})
raise HTTPBadRequest(explanation=msg, request=req)
raise HTTPInternalServerError(request=req)
def _activate(self, req, image_id, location):
"""
@ -541,8 +535,7 @@ class Controller(controller.BaseController):
except exception.Invalid, e:
msg = (_("Failed to activate image. Got error: %(e)s")
% locals())
for line in msg.split('\n'):
LOG.error(line)
LOG.debug(msg)
raise HTTPBadRequest(explanation=msg,
request=req,
content_type="text/plain")
@ -770,8 +763,7 @@ class Controller(controller.BaseController):
except exception.Invalid, e:
msg = (_("Failed to update image metadata. Got error: %(e)s")
% locals())
for line in msg.split('\n'):
LOG.error(line)
LOG.debug(msg)
raise HTTPBadRequest(explanation=msg,
request=req,
content_type="text/plain")
@ -879,8 +871,8 @@ class Controller(controller.BaseController):
try:
return get_store_from_scheme(request.context, scheme)
except exception.UnknownScheme:
msg = _("Store for scheme %s not found")
LOG.error(msg % scheme)
msg = _("Store for scheme %s not found") % scheme
LOG.debug(msg)
raise HTTPBadRequest(explanation=msg,
request=request,
content_type='text/plain')

View File

@ -42,7 +42,7 @@ class Store(object):
except exception.BadStoreConfiguration:
msg = _("Failed to configure store correctly. "
"Disabling add method.")
LOG.error(msg)
LOG.info(msg)
self.add = self.add_disabled
def configure(self):

View File

@ -63,7 +63,7 @@ class StoreLocation(glance.store.location.StoreLocation):
path = (pieces.netloc + pieces.path).strip()
if path == '':
reason = _("No path specified in URI: %s") % uri
LOG.error(reason)
LOG.debug(reason)
raise exception.BadStoreUri('No path specified')
self.path = path

View File

@ -81,13 +81,13 @@ class StoreLocation(glance.store.location.StoreLocation):
except ValueError:
reason = (_("Credentials '%s' not well-formatted.")
% "".join(creds))
LOG.error(reason)
LOG.debug(reason)
raise exception.BadStoreUri()
else:
self.user = None
if netloc == '':
reason = _("No address specified in HTTP URL")
LOG.error(reason)
LOG.debug(reason)
raise exception.BadStoreUri(message=reason)
self.netloc = netloc
self.path = path

View File

@ -93,14 +93,14 @@ class StoreLocation(glance.store.location.StoreLocation):
prefix = 'rbd://'
if not uri.startswith(prefix):
reason = _('URI must start with rbd://')
LOG.error(_("Invalid URI: %(uri)s: %(reason)s") % locals())
LOG.debug(_("Invalid URI: %(uri)s: %(reason)s") % locals())
raise exception.BadStoreUri(message=reason)
# convert to ascii since librbd doesn't handle unicode
try:
ascii_uri = str(uri)
except UnicodeError:
reason = _('URI contains non-ascii characters')
LOG.error(_("Invalid URI: %(uri)s: %(reason)s") % locals())
LOG.debug(_("Invalid URI: %(uri)s: %(reason)s") % locals())
raise exception.BadStoreUri(message=reason)
pieces = ascii_uri[len(prefix):].split('/')
if len(pieces) == 1:
@ -111,11 +111,11 @@ class StoreLocation(glance.store.location.StoreLocation):
map(urllib.unquote, pieces)
else:
reason = _('URI must have exactly 1 or 4 components')
LOG.error(_("Invalid URI: %(uri)s: %(reason)s") % locals())
LOG.debug(_("Invalid URI: %(uri)s: %(reason)s") % locals())
raise exception.BadStoreUri(message=reason)
if any(map(lambda p: p == '', pieces)):
reason = _('URI cannot contain empty components')
LOG.error(_("Invalid URI: %(uri)s: %(reason)s") % locals())
LOG.debug(_("Invalid URI: %(uri)s: %(reason)s") % locals())
raise exception.BadStoreUri(message=reason)
@ -280,7 +280,7 @@ class Store(glance.store.base.Store):
except rbd.ImageBusy:
log_msg = _("snapshot %s@%s could not be "
"unprotected because it is in use")
LOG.error(log_msg % (loc.image, loc.snapshot))
LOG.debug(log_msg % (loc.image, loc.snapshot))
raise exception.InUseByStore()
image.remove_snap(loc.snapshot)
try:
@ -291,5 +291,5 @@ class Store(glance.store.base.Store):
except rbd.ImageBusy:
log_msg = _("image %s could not be removed"
"because it is in use")
LOG.error(log_msg % loc.image)
LOG.debug(log_msg % loc.image)
raise exception.InUseByStore()

View File

@ -110,7 +110,7 @@ class StoreLocation(glance.store.location.StoreLocation):
"s3+https:// scheme, like so: "
"s3+https://accesskey:secretkey@"
"s3.amazonaws.com/bucket/key-id")
LOG.error(_("Invalid store uri %(uri)s: %(reason)s") % locals())
LOG.debug(_("Invalid store uri %(uri)s: %(reason)s") % locals())
raise exception.BadStoreUri(message=reason)
pieces = urlparse.urlparse(uri)
@ -137,7 +137,7 @@ class StoreLocation(glance.store.location.StoreLocation):
self.secretkey = secret_key
except IndexError:
reason = _("Badly formed S3 credentials %s") % creds
LOG.error(reason)
LOG.debug(reason)
raise exception.BadStoreUri()
else:
self.accesskey = None
@ -153,7 +153,7 @@ class StoreLocation(glance.store.location.StoreLocation):
raise exception.BadStoreUri()
except IndexError:
reason = _("Badly formed S3 URI: %s") % uri
LOG.error(reason)
LOG.debug(reason)
raise exception.BadStoreUri()
@ -240,7 +240,7 @@ class Store(glance.store.base.Store):
if not result:
reason = _("Could not find %(param)s in configuration "
"options.") % locals()
LOG.error(reason)
LOG.debug(reason)
raise exception.BadStoreConfiguration(store_name="s3",
reason=reason)
return result
@ -448,7 +448,7 @@ def get_bucket(conn, bucket_id):
bucket = conn.get_bucket(bucket_id)
if not bucket:
msg = _("Could not find bucket with ID %(bucket_id)s") % locals()
LOG.error(msg)
LOG.debug(msg)
raise exception.NotFound(msg)
return bucket
@ -512,7 +512,7 @@ def get_key(bucket, obj):
key = bucket.get_key(obj)
if not key or not key.exists():
msg = _("Could not find key %(obj)s in bucket %(bucket)s") % locals()
LOG.error(msg)
LOG.debug(msg)
raise exception.NotFound(msg)
return key

View File

@ -134,7 +134,7 @@ class StoreLocation(glance.store.location.StoreLocation):
", you need to change it to use the "
"swift+http:// scheme, like so: "
"swift+http://user:pass@authurl.com/v1/container/obj")
LOG.error(_("Invalid store uri %(uri)s: %(reason)s") % locals())
LOG.debug(_("Invalid store uri %(uri)s: %(reason)s") % locals())
raise exception.BadStoreUri(message=reason)
pieces = urlparse.urlparse(uri)
@ -162,7 +162,7 @@ class StoreLocation(glance.store.location.StoreLocation):
if len(cred_parts) != 2:
reason = (_("Badly formed credentials '%(creds)s' in Swift "
"URI") % locals())
LOG.error(reason)
LOG.debug(reason)
raise exception.BadStoreUri()
user, key = cred_parts
self.user = urllib.unquote(user)
@ -180,7 +180,7 @@ class StoreLocation(glance.store.location.StoreLocation):
self.auth_or_store_url = '/'.join(path_parts)
except IndexError:
reason = _("Badly formed Swift URI: %s") % uri
LOG.error(reason)
LOG.debug(reason)
raise exception.BadStoreUri()
@property
@ -338,7 +338,7 @@ class Store(glance.store.base.Store):
storage_url=loc.swift_url, token=self.token)
else:
reason = (_("Location is missing user:password information."))
LOG.error(reason)
LOG.debug(reason)
raise exception.BadStoreUri(message=reason)
def _make_swift_connection(self, auth_url, user, key, region=None,
@ -368,7 +368,7 @@ class Store(glance.store.base.Store):
if len(tenant_user) != 2:
reason = (_("Badly formed tenant:user '%(tenant_user)s' in "
"Swift URI") % locals())
LOG.error(reason)
LOG.debug(reason)
raise exception.BadStoreUri()
(tenant_name, user) = tenant_user