components/openstack/glance/patches/07-CVE-2014-9493.patch
author Drew Fisher <drew.fisher@oracle.com>
Mon, 05 Jan 2015 10:23:34 -0800
changeset 3580 8408755c44a3
permissions -rw-r--r--
20222847 problem in SERVICE/GLANCE
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3580
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     1
This patch fixes bug 1400966 for Havana.
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     2
https://bugs.launchpad.net/glance/+bug/1400966
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     3
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     4
commit 8bdb7ed9f5beaf816e7abba726904646bf3680dd
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     5
Author: Zhi Yan Liu <[email protected]>
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     6
Date:   Mon Dec 15 12:29:55 2014 +0800
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     7
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     8
    To prevent client use v2 patch api to handle file and swift location
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     9
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    10
    The change will be used to restrict client to download and delete any
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    11
    file in glance-api server. The same resone and logic as what we did in
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    12
    v1:
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    13
    https://github.com/openstack/glance/blob/master/glance/api/v1/images.py#L429
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    14
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    15
    Closes-Bug: bug/1400966
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    16
    DocImpact
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    17
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    18
    Conflicts:
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    19
        glance/api/v1/images.py
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    20
        glance/common/store_utils.py
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    21
        glance/location.py
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    22
        glance/tests/functional/v1/test_copy_to_file.py
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    23
        glance/tests/functional/v2/test_images.py
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    24
        glance/tests/unit/test_store_image.py
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    25
        glance/tests/unit/test_store_location.py
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    26
        glance/tests/unit/utils.py
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    27
        glance/tests/unit/v1/test_api.py
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    28
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    29
    (cherry picked from commit 4afdb017aa1ccef01482f117cb8d0736a6da38ed)
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    30
    Signed-off-by: Zhi Yan Liu <[email protected]>
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    31
    Change-Id: I72dbead3cb2dcb87f52658ddb880e26880cc229b 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    32
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    33
--- glance-2013.2.3/glance/api/v1/images.py.orig	2014-12-23 08:16:59.633230138 -0800
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    34
+++ glance-2013.2.3/glance/api/v1/images.py	2014-12-23 08:19:15.059375018 -0800
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    35
@@ -50,7 +50,8 @@ import glance.registry.client.v1.api as
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    36
 from glance.store import (get_from_backend,
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    37
                           get_size_from_backend,
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    38
                           get_store_from_location,
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    39
-                          get_store_from_scheme)
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    40
+                          get_store_from_scheme,
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    41
+                          validate_external_location)
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    42
 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    43
 LOG = logging.getLogger(__name__)
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    44
 SUPPORTED_PARAMS = glance.api.v1.SUPPORTED_PARAMS
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    45
@@ -375,20 +376,19 @@ class Controller(controller.BaseControll
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    46
     @staticmethod
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    47
     def _validate_source(source, req):
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    48
         """
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    49
-        External sources (as specified via the location or copy-from headers)
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    50
-        are supported only over non-local store types, i.e. S3, Swift, HTTP.
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    51
-        Note the absence of file:// for security reasons, see LP bug #942118.
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    52
-        If the above constraint is violated, we reject with 400 "Bad Request".
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    53
+        To validate if external sources (as specified via the location
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    54
+        or copy-from headers) are supported. Otherwise we reject
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    55
+        with 400 "Bad Request".
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    56
         """
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    57
         if source:
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    58
-            for scheme in ['s3', 'swift', 'http', 'rbd', 'sheepdog', 'cinder']:
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    59
-                if source.lower().startswith(scheme):
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    60
-                    return source
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    61
-            msg = _("External sourcing not supported for store %s") % source
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    62
-            LOG.debug(msg)
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    63
-            raise HTTPBadRequest(explanation=msg,
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    64
-                                 request=req,
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    65
-                                 content_type="text/plain")
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    66
+            if validate_external_location(source):
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    67
+                return source
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    68
+            else:
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    69
+                msg = _("External source are not supported: '%s'") % source
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    70
+                LOG.debug(msg)
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    71
+                raise HTTPBadRequest(explanation=msg,
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    72
+                                     request=req,
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    73
+                                     content_type="text/plain")
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    74
 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    75
     @staticmethod
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    76
     def _copy_from(req):
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    77
--- glance-2013.2.3/glance/store/__init__.py.orig	2014-12-23 08:20:52.254600393 -0800
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    78
+++ glance-2013.2.3/glance/store/__init__.py	2014-12-23 08:23:48.661399000 -0800
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    79
@@ -21,6 +21,7 @@ import sys
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    80
 import time
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    81
 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    82
 from oslo.config import cfg
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    83
+import six.moves.urllib.parse as urlparse
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    84
 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    85
 from glance.common import crypt
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    86
 from glance.common import exception
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    87
@@ -369,6 +370,24 @@ def set_acls(context, location_uri, publ
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    88
         LOG.debug(_("Skipping store.set_acls... not implemented."))
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    89
 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    90
 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    91
+def validate_external_location(uri):
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    92
+    """
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    93
+    Validate if URI of external location are supported.
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    94
+
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    95
+    Only over non-local store types are OK, i.e. S3, Swift,
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    96
+    HTTP. Note the absence of 'file://' for security reasons,
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    97
+    see LP bug #942118, 1400966, 'swift+config://' is also
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    98
+    absent for security reasons, see LP bug #1334196.
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    99
+
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   100
+    :param uri: The URI of external image location.
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   101
+    :return: Whether given URI of external image location are OK.
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   102
+    """
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   103
+    pieces = urlparse.urlparse(uri)
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   104
+    valid_schemes = [scheme for scheme in location.SCHEME_TO_CLS_MAP.keys()
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   105
+                     if scheme != 'file' and scheme != 'swift+config']
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   106
+    return pieces.scheme in valid_schemes
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   107
+
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   108
+
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   109
 class ImageRepoProxy(glance.domain.proxy.Repo):
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   110
 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   111
     def __init__(self, image_repo, context, store_api):
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   112
@@ -401,22 +420,23 @@ class ImageRepoProxy(glance.domain.proxy
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   113
 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   114
 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   115
 def _check_location_uri(context, store_api, uri):
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   116
-    """
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   117
-    Check if an image location uri is valid.
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   118
+    """Check if an image location is valid.
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   119
 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   120
     :param context: Glance request context
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   121
     :param store_api: store API module
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   122
     :param uri: location's uri string
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   123
     """
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   124
+
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   125
     is_ok = True
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   126
     try:
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   127
-        size = store_api.get_size_from_backend(context, uri)
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   128
         # NOTE(zhiyan): Some stores return zero when it catch exception
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   129
-        is_ok = size > 0
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   130
+        is_ok = (store_api.validate_external_location(uri) and
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   131
+                 store_api.get_size_from_backend(context, uri) > 0)
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   132
     except (exception.UnknownScheme, exception.NotFound):
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   133
         is_ok = False
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   134
     if not is_ok:
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   135
-        raise exception.BadStoreUri(_('Invalid location: %s') % uri)
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   136
+        reason = _('Invalid location')
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   137
+        raise exception.BadStoreUri(message=reason)
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   138
 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   139
 
8408755c44a3 20222847 problem in SERVICE/GLANCE
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   140
 def _check_image_location(context, store_api, location):