← Back to issue list

Docker images not properly requested from docker API

View original Github issue

Metadata

Project
charmcraft
Number
#1760
Type
issue
State
closed
Author
lengau
Labels
—
Created
Updated
Closed

Current evaluation

Fixed in canonical/charmcraft#1854 (commit 1d2413a3), which corrected Docker image reference formatting and re-enabled the upload-resource test disabled by #1761.

Resolution: closed resolved

Reason: PR #1854 was merged with commit 1d2413a3, resolving the invalid Docker API requests and reverting the temporary test disablement introduced by PR #1761.

Evaluated by: mr-cal-bot

No scores available.

Issue body

### Bug Description When trying to upload a resource from docker, we don't always provide the correct reference format to the API. ### To Reproduce `charmcraft upload-resource gh-ci-charmcraft-charm example-image --image=docker://hello-world@sha256:18a657d0cc1c7d0678a3fbea8b7eb4918bba25968d3e1b0adebfa71caddbc346` See: https://github.com/canonical/charmcraft/actions/runs/10076354372/job/27857360756?pr=1759#step:4:656 ### Environment CI ### charmcraft.yaml ```shell n/a ``` ### Relevant log output ```shell + charmcraft upload-resource gh-ci-charmcraft-charm example-image --image=docker://hello-world@sha256:18a657d0cc1c7d0678a3fbea8b7eb4918bba25968d3e1b0adebfa71caddbc346 2024-07-24 12:36:49.345 Starting charmcraft, version 3.1.0.post3+gc802b0b 2024-07-24 12:36:49.345 Logging execution to '/root/.local/state/charmcraft/log/charmcraft-20240724-123649.344660.log' 2024-07-24 12:36:49.345 Log verbosity level set to DEBUG 2024-07-24 12:36:49.345 Configuring application... 2024-07-24 12:36:49.346 Preparing application... 2024-07-24 12:36:49.347 Build plan: platform=None, build_for=None 2024-07-24 12:36:49.348 Running charmcraft upload-resource on host 2024-07-24 12:36:49.349 Storing credentials for 'charmcraft' on 'api.staging.charmhub.io' in keyring 'auth MemoryKeyring'. 2024-07-24 12:36:49.349 Getting image 2024-07-24 12:36:49.349 Trying to get image from Docker 2024-07-24 12:36:49.349 Setting up ImageService 2024-07-24 12:36:49.389 charmcraft internal error: APIError(HTTPError('400 Client Error: Bad Request for url: /v1.43/images/docker:/hello-world@sha256:18a657d0cc1c7d0678a3fbea8b7eb4918bba25968d3e1b0adebfa71caddbc346/json')) 2024-07-24 12:36:49.506 Traceback (most recent call last): 2024-07-24 12:36:49.506 File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/api/client.py", line 275, in _raise_for_status 2024-07-24 12:36:49.506 response.raise_for_status() 2024-07-24 12:36:49.506 File "/snap/charmcraft/x1/lib/python3.10/site-packages/requests/models.py", line 1021, in raise_for_status 2024-07-24 12:36:49.506 raise HTTPError(http_error_msg, response=self) 2024-07-24 12:36:49.506 requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: /v1.43/images/docker:/hello-world@sha256:18a657d0cc1c7d0678a3fbea8b7eb4918bba25968d3e1b0adebfa71caddbc346/json 2024-07-24 12:36:49.507 2024-07-24 12:36:49.507 The above exception was the direct cause of the following exception: 2024-07-24 12:36:49.507 Traceback (most recent call last): 2024-07-24 12:36:49.507 File "/snap/charmcraft/x1/lib/python3.10/site-packages/craft_application/application.py", line 538, in run 2024-07-24 12:36:49.507 return_code = dispatcher.run() or 0 2024-07-24 12:36:49.507 File "/snap/charmcraft/x1/lib/python3.10/site-packages/craft_cli/dispatcher.py", line 487, in run 2024-07-24 12:36:49.507 return self._loaded_command.run(self._parsed_command_args) 2024-07-24 12:36:49.507 File "/snap/charmcraft/x1/lib/python3.10/site-packages/charmcraft/application/commands/store.py", line 1958, in run 2024-07-24 12:36:49.507 if digest := image_service.get_maybe_id_from_docker(parsed_args.image): 2024-07-24 12:36:49.507 File "/snap/charmcraft/x1/lib/python3.10/site-packages/charmcraft/services/image.py", line 107, in get_maybe_id_from_docker 2024-07-24 12:36:49.508 image = self._docker.images.get(name) 2024-07-24 12:36:49.508 File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/models/images.py", line 333, in get 2024-07-24 12:36:49.508 return self.prepare_model(self.client.api.inspect_image(name)) 2024-07-24 12:36:49.508 File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/utils/decorators.py", line 19, in wrapped 2024-07-24 12:36:49.508 return f(self, resource_id, *args, **kwargs) 2024-07-24 12:36:49.508 File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/api/image.py", line 251, in inspect_image 2024-07-24 12:36:49.508 return self._result( 2024-07-24 12:36:49.508 File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/api/client.py", line 281, in _result 2024-07-24 12:36:49.508 self._raise_for_status(response) 2024-07-24 12:36:49.508 File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/api/client.py", line 277, in _raise_for_status 2024-07-24 12:36:49.508 raise create_api_error_from_http_exception(e) from e 2024-07-24 12:36:49.508 File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/errors.py", line 39, in create_api_error_from_http_exception 2024-07-24 12:36:49.509 raise cls(e, response=response, explanation=explanation) from e 2024-07-24 12:36:49.509 docker.errors.APIError: 400 Client Error for /v1.43/images/docker:/hello-world@sha256:18a657d0cc1c7d0678a3fbea8b7eb4918bba25968d3e1b0adebfa71caddbc346/json: Bad Request ("invalid reference format") 2024-07-24 12:36:49.509 Full execution log: '/root/.local/state/charmcraft/log/charmcraft-20240724-123649.344660.log' Traceback (most recent call last): File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/api/client.py", line 275, in _raise_for_status response.raise_for_status() File "/snap/charmcraft/x1/lib/python3.10/site-packages/requests/models.py", line 1021, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: /v1.43/images/docker:/hello-world@sha256:18a657d0cc1c7d0678a3fbea8b7eb4918bba25968d3e1b0adebfa71caddbc346/json The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/snap/charmcraft/x1/bin/charmcraft", line 8, in <module> sys.exit(main()) File "/snap/charmcraft/x1/lib/python3.10/site-packages/charmcraft/application/main.py", line 160, in main return app.run() File "/snap/charmcraft/x1/lib/python3.10/site-packages/craft_application/application.py", line 538, in run return_code = dispatcher.run() or 0 File "/snap/charmcraft/x1/lib/python3.10/site-packages/craft_cli/dispatcher.py", line 487, in run return self._loaded_command.run(self._parsed_command_args) File "/snap/charmcraft/x1/lib/python3.10/site-packages/charmcraft/application/commands/store.py", line 1958, in run if digest := image_service.get_maybe_id_from_docker(parsed_args.image): File "/snap/charmcraft/x1/lib/python3.10/site-packages/charmcraft/services/image.py", line 107, in get_maybe_id_from_docker image = self._docker.images.get(name) File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/models/images.py", line 333, in get return self.prepare_model(self.client.api.inspect_image(name)) File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/utils/decorators.py", line 19, in wrapped return f(self, resource_id, *args, **kwargs) File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/api/image.py", line 251, in inspect_image return self._result( File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/api/client.py", line 281, in _result self._raise_for_status(response) File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/api/client.py", line 277, in _raise_for_status raise create_api_error_from_http_exception(e) from e File "/snap/charmcraft/x1/lib/python3.10/site-packages/docker/errors.py", line 39, in create_api_error_from_http_exception raise cls(e, response=response, explanation=explanation) from e docker.errors.APIError: 400 Client Error for /v1.43/images/docker:/hello-world@sha256:18a657d0cc1c7d0678a3fbea8b7eb4918bba25968d3e1b0adebfa71caddbc346/json: Bad Request ("invalid reference format") ```

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha — closed resolved Fixed in canonical/charmcraft#1854 (commit 1d2413a3), which corrected Docker image reference formatting and re-enabled the upload-resource test disabled by #1761.
stealth/space-bunny-alpha — closed resolved Fixed in canonical/charmcraft#1854 via commit 1d2413a3: Docker image references are now formatted correctly, and #1761's temporary test disablement was reverted.
qwen3.6-35b-a3b-mtp-q6 — — Closed and moved to internal tracking (CRAFT-3148). The bug triggers a 400 error when passing the docker:// prefix to the Docker API. A fix is pending, requiring a revert of PR #1761 before implementation.
qwen/qwen3.6-35b-a3b — — Closed after being resolved by reverting PR #1761, which corrected Docker API reference formatting for resource uploads.
qwen/qwen3.6-35b-a3b — — Closed and moved to an internal tracker. The bug causes 400 API errors due to malformed Docker image references. Fix implementation requires reverting PR #1761.
qwen3.6-35b-a3b-mtp-q6 — — Closed. Fix pending to strip the docker:// scheme when querying the Docker API and revert PR #1761.

Update history

No update history recorded yet.

Related work

  • Likely Fixed By: canonical/charmcraft#1854 (confidence 100%)

    Merged fix for Docker API image-reference formatting.

  • Related To: canonical/charmcraft#1761 (confidence 100%)

    Temporarily disabled the failing spread test; its disablement was reverted by #1854.

Related issues

No related issues found above the similarity threshold.