Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker images not properly requested from docker API #1760

Closed
lengau opened this issue Jul 24, 2024 · 2 comments · Fixed by #1854
Closed

Docker images not properly requested from docker API #1760

lengau opened this issue Jul 24, 2024 · 2 comments · Fixed by #1854
Assignees
Labels
Bug Something isn't working triaged

Comments

@lengau
Copy link
Collaborator

lengau commented Jul 24, 2024

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

n/a

Relevant log output

+ 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")
@lengau lengau added Bug Something isn't working triaged labels Jul 24, 2024
Copy link

Thank you for reporting us your feedback!

The internal ticket has been created: https://warthogs.atlassian.net/browse/CRAFT-3148.

This message was autogenerated

lengau added a commit that referenced this issue Jul 24, 2024
upload-resource test is failing due to bug #1760.
@lengau
Copy link
Collaborator Author

lengau commented Jul 24, 2024

When fixing, don't forget to revert #1761

github-merge-queue bot pushed a commit that referenced this issue Jul 24, 2024
upload-resource test is failing due to bug #1760.
@lengau lengau self-assigned this Sep 9, 2024
github-merge-queue bot pushed a commit that referenced this issue Sep 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working triaged
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant