500 error on image-download if image is not present at any location
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Glance |
Invalid
|
Undecided
|
Abhishek Kekane |
Bug Description
As of now for downloading the image it iterates through all the locations and if data (image) is not present at any of the location in the end it Logs the error message as "Glance tried all active locations to get data for image <image-id> but all have failed." Further it fails with 500 error.
This issue can occur either if image is not available in any of the location or any error occured during the download process.
NOTE:
To reproduce this issue I have manually added 'continue' statement at [1] to assume that image is not available at any of the location.
[1] https:/
Steps to reproduce:
1. Modify glance/location.py as mentioned in NOTE
2. Restart glance-api service
3. Download image using:
$ glance image-download <image-id> --file downloaded_image
Expected Result:
Image data should be downloaded and saved in 'downloaded_image' file
Actual Result:
glance image-download 780ffe26-
Glance API logs:
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance.location [None req-cfca70d4-
Apr 19 06:37:58 signature <email address hidden>[5419]: CRITICAL glance [None req-cfca70d4-
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance Traceback (most recent call last):
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance resp = self.call_func(req, *args, **self.kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return self.func(req, *args, **kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance response = req.get_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance application, catch_exc_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance app_iter = application(
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance resp = self.call_func(req, *args, **self.kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return self.func(req, *args, **kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance response = req.get_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance application, catch_exc_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance app_iter = application(
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance resp = self.call_func(req, *args, **self.kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return self.func(req, *args, **kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance response = req.get_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance application, catch_exc_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance app_iter = application(
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance resp = self.call_func(req, *args, **self.kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return self.func(req, *args, **kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/opt/stack/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance response = req.get_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance application, catch_exc_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance app_iter = application(
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance resp = self.call_func(req, *args, **self.kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return self.func(req, *args, **kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return request.
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance application, catch_exc_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance app_iter = application(
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance resp = self.call_func(req, *args, **self.kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return self.func(req, *args, **kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance response = req.get_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance application, catch_exc_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance app_iter = application(
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance resp = self.call_func(req, *args, **self.kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return self.func(req, *args, **kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/opt/stack/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance response = req.get_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance application, catch_exc_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance app_iter = application(
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance resp = self.call_func(req, *args, **self.kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return self.func(req, *args, **kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/opt/stack/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance response = req.get_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance application, catch_exc_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance app_iter = application(
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance resp = self.call_func(req, *args, **self.kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return self.func(req, *args, **kwargs)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/opt/stack/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance response = req.get_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance application, catch_exc_
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance app_iter = application(
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return app(environ, start_response)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return resp(environ, start_response)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance response = self.app(environ, start_response)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return resp(environ, start_response)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance File "/usr/local/
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance return resp(environ, start_response)
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance TypeError: 'ImageProxy' object is not callable
Apr 19 06:37:58 signature <email address hidden>[5419]: ERROR glance
Changed in glance: | |
assignee: | nobody → Abhishek Kekane (abhishek-kekane) |
So if you look at the code there that you modified to introduce this bug, you are bypassing the try..catch block that will set the exception that would be raised at the failure causing it trying to raise None which obviously will fail.