author | Drew Fisher <drew.fisher@oracle.com> |
Mon, 05 Jan 2015 10:23:34 -0800 | |
changeset 3580 | 8408755c44a3 |
permissions | -rw-r--r-- |
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): |