41
41
from glance .common import wsgi
42
42
from glance .common import utils
43
43
from glance .openstack .common import cfg
44
- import glance .store
45
- import glance .store .filesystem
46
- import glance .store .http
47
- import glance .store .rbd
48
- import glance .store .s3
49
- import glance .store .swift
50
- from glance .store import (get_from_backend ,
44
+ from glance .store import (create_stores ,
45
+ get_from_backend ,
51
46
get_size_from_backend ,
52
47
schedule_delete_from_backend ,
53
48
get_store_from_location ,
67
62
# as a BigInteger.
68
63
IMAGE_SIZE_CAP = 1 << 50
69
64
65
+ # Defined at module level due to _is_opt_registered
66
+ # identity check (not equality).
67
+ default_store_opt = cfg .StrOpt ('default_store' , default = 'file' )
68
+
70
69
71
70
class Controller (controller .BaseController ):
72
71
"""
@@ -87,13 +86,11 @@ class Controller(controller.BaseController):
87
86
DELETE /images/<ID> -- Delete the image with id <ID>
88
87
"""
89
88
90
- default_store_opt = cfg .StrOpt ('default_store' , default = 'file' )
91
-
92
89
def __init__ (self , conf ):
93
90
self .conf = conf
94
- self .conf .register_opt (self . default_store_opt )
95
- glance . store . create_stores (conf )
96
- self .verify_store_or_exit (self .conf .default_store )
91
+ self .conf .register_opt (default_store_opt )
92
+ create_stores (self . conf )
93
+ self .verify_scheme_or_exit (self .conf .default_store )
97
94
self .notifier = notifier .Notifier (conf )
98
95
registry .configure_registry_client (conf )
99
96
self .policy = policy .Enforcer (conf )
@@ -333,8 +330,8 @@ def _upload(self, req, image_meta):
333
330
"""
334
331
Uploads the payload of the request to a backend store in
335
332
Glance. If the `x-image-meta-store` header is set, Glance
336
- will attempt to use that store, if not, Glance will use the
337
- store set by the flag `default_store`.
333
+ will attempt to use that scheme; if not, Glance will use the
334
+ scheme set by the flag `default_store` to find the backing store .
338
335
339
336
:param req: The WSGI/Webob Request object
340
337
:param image_meta: Mapping of metadata about image
@@ -367,18 +364,18 @@ def _upload(self, req, image_meta):
367
364
"x-image-meta-size header" ))
368
365
image_size = 0
369
366
370
- store_name = req .headers .get ('x-image-meta-store' ,
371
- self .conf .default_store )
367
+ scheme = req .headers .get ('x-image-meta-store' ,
368
+ self .conf .default_store )
372
369
373
- store = self .get_store_or_400 (req , store_name )
370
+ store = self .get_store_or_400 (req , scheme )
374
371
375
372
image_id = image_meta ['id' ]
376
373
logger .debug (_ ("Setting image %s to status 'saving'" ), image_id )
377
374
registry .update_image_metadata (req .context , image_id ,
378
375
{'status' : 'saving' })
379
376
try :
380
377
logger .debug (_ ("Uploading image data for image %(image_id)s "
381
- "to %(store_name )s store" ), locals ())
378
+ "to %(scheme )s store" ), locals ())
382
379
383
380
if image_size > IMAGE_SIZE_CAP :
384
381
max_image_size = IMAGE_SIZE_CAP
@@ -750,41 +747,39 @@ def delete(self, req, id):
750
747
else :
751
748
self .notifier .info ('image.delete' , id )
752
749
753
- def get_store_or_400 (self , request , store_name ):
750
+ def get_store_or_400 (self , request , scheme ):
754
751
"""
755
752
Grabs the storage backend for the supplied store name
756
753
or raises an HTTPBadRequest (400) response
757
754
758
755
:param request: The WSGI/Webob Request object
759
- :param store_name : The backend store name
756
+ :param scheme : The backend store scheme
760
757
761
758
:raises HTTPNotFound if store does not exist
762
759
"""
763
760
try :
764
- return get_store_from_scheme (store_name )
761
+ return get_store_from_scheme (scheme )
765
762
except exception .UnknownScheme :
766
- msg = (_ ("Requested store %s not available on this Glance server" )
767
- % store_name )
768
- logger .error (msg )
763
+ msg = _ ("Store for scheme %s not found" )
764
+ logger .error (msg % scheme )
769
765
raise HTTPBadRequest (msg , request = request ,
770
766
content_type = 'text/plain' )
771
767
772
- def verify_store_or_exit (self , store_name ):
768
+ def verify_scheme_or_exit (self , scheme ):
773
769
"""
774
770
Verifies availability of the storage backend for the
775
- given store name or exits
771
+ given scheme or exits
776
772
777
- :param store_name : The backend store name
773
+ :param scheme : The backend store scheme
778
774
"""
779
775
try :
780
- get_store_from_scheme (store_name )
776
+ get_store_from_scheme (scheme )
781
777
except exception .UnknownScheme :
782
- msg = (_ ("Default store %s not available on this Glance server\n " )
783
- % store_name )
784
- logger .error (msg )
778
+ msg = _ ("Store for scheme %s not found" )
779
+ logger .error (msg % scheme )
785
780
# message on stderr will only be visible if started directly via
786
781
# bin/glance-api, as opposed to being daemonized by glance-control
787
- sys .stderr .write (msg )
782
+ sys .stderr .write (msg % scheme )
788
783
sys .exit (255 )
789
784
790
785
0 commit comments