-
Notifications
You must be signed in to change notification settings - Fork 100
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
Parse charm URLs consistantly for local charms #974
Parse charm URLs consistantly for local charms #974
Conversation
@@ -541,7 +532,7 @@ async def resolve(self, url, architecture, | |||
raise JujuError('revision and channel are mutually exclusive when deploying a bundle. Please choose one.') | |||
|
|||
if app_name is None: | |||
app_name = url.name | |||
app_name = charm_url.name |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like the charm_url
is returned as a string and blowing up here, and needs to be fixed before further review. See https://github.com/juju/python-libjuju/actions/runs/6642890817/job/18048743466?pr=974#step:6:1553
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good spot. Thanks, this is a fairly easy fix, _resolve_charm is only called a few times, and when we do we don't assume it's a string mostly
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So I've decided to change it to return a charm url
bac5900
to
a953d07
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CI fail is unrelated, this can land 👍
/merge |
Might need a rebase |
Local charm URLs are confused in pylibjuju because often a charm url-like string is passed into deploy, to explicitly specify a local charm. These 'urls' were of the form 'local:/path/to/charm' Local URLs were parsed accordingly. However, the above is in no sense a url really so should be treated as such. This also means that pylibjuju is unable to parse real local charm urls returned to the client from the server when, say, uploading a local charm. Drop support for local charms like this. Instead parse local charm urls the same way we parse charmhub charm url. This has the side-effect, however, that we can no longer treat all objects to deploy as URLs. Now, they are either URLs (ch or cs charms) or paths or paths prepended with 'local:' (local charms) As such, in deploy code and refresh code, we often need to branch on is_local_charm. This is to ensure we don't attempt to parse paths as URLs. Everywhere we URL.parse user input, we ensure the entity is not a path
a953d07
to
0356f00
Compare
/merge |
#980 ## What's Changed * Repository Maintenance Improvements by @cderici in #922 * Stale bot to not bother feature requests by @cderici in #926 * Fix linter issues by @cderici in #928 * Fix docstring typo by @DanielArndt in #927 * Fix asyncio on README by @marceloneppel in #930 * Fix integration/test_application.test_action by @cderici in #932 * Update 3.2 facade clients by @cderici in #931 * [JUJU-4488] Add licence headers to source files on 3.x by @cderici in #934 * Update async tests to use builtin python suite by @DanielArndt in #935 * Pass correct charm url to series selector by @cderici in #942 * Green CI cleanup for python-libjuju by @cderici in #939 * Bring forward support for nested assumes expressions on 3x by @cderici in #943 * Release 3.2.2.0 notes by @cderici in #945 * Cleanup release process for 3.x by @cderici in #946 * Use new DeployFromRepository endpoint for deploy by @cderici in #949 * Handle pending upload resources deployfromrepository by @cderici in #953 * Optimize connection teardown by @cderici in #952 * Use `log.warning` instead of the deprecated `warn` by @sed-i in #954 * Find controller name by endpoint on 3.x track by @cderici in #966 * Optimize & fix unit removal by @cderici in #967 * Allow switch kwarg in refresh to switch to local charms by @jack-w-shaw in #971 * Parse charm URLs consistantly for local charms by @jack-w-shaw in #974 * Juju config directory location fix on 3.x by @cderici in #976 * [JUJU-4779] Ensure valid charm origin for local charm switches by @jack-w-shaw in #978 * Application refresh with resources on 3.x by @cderici in #973 #### Notes & Discussion JUJU-4851 [JUJU-4488]: https://warthogs.atlassian.net/browse/JUJU-4488?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ [JUJU-4779]: https://warthogs.atlassian.net/browse/JUJU-4779?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
Port forward #969
Parse charm URLs consistantly for local charms
Local charm URLs are confused in pylibjuju because often a charm
url-like string is passed into deploy, to explicitly specify a local
charm. These 'urls' were of the form 'local:/path/to/charm'
Local URLs were parsed accordingly.
However, the above is in no sense a url really so should be treated as
such. This also means that pylibjuju is unable to parse real local charm
urls returned to the client from the server when, say, uploading a local
charm.
Drop support for local charms like this. Instead parse local charm urls the
same way we parse charmhub charm url.
This has the side-effect, however, that we can no longer treat all
objects to deploy as URLs. Now, they are either URLs (ch or cs charms)
or paths or paths prepended with 'local:' (local charms)
As such, in deploy code and refresh code, we often need to branch on
is_local_charm. This is to ensure we don't attempt to parse paths as
URLs. Everywhere we URL.parse user input, we ensure the entity is not a
path
This resolves #961
QA Steps
All CI tests need to pass.
(In a python interpreter)
Ensure the example scripts still function
Verify the following example script runs successfully: