-
Notifications
You must be signed in to change notification settings - Fork 102
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
Incorrect parsing of storage constraints #1052
Comments
jujubot
added a commit
that referenced
this issue
May 31, 2024
#1053 #### Description Fixes: #1052. Parses the storage constraints when deploying applications. Before this change the storage constraints where not parsing, resulting in an error when deploying bundles that contained applications with storage definitions. #### QA Steps The following python script can be used to verify both the bug in the current version as well as the fix implemented: ```python import asyncio from juju.model import Model bundle_file = "./bundle.yaml" bundle = """ name: sample-bundle series: jammy machines: "0": constraints: instance-type=type1 applications: swift-storage: charm: swift-storage channel: yoga/stable num_units: 1 to: - "0" storage: block-devices: cinder,1,5G """ async def main(): with open(bundle_file, "w") as f: f.write(bundle) model = Model() await model.connect() await model.deploy(bundle_file) asyncio.run(main()) ``` All CI tests need to pass. #### Notes & Discussion I wasn't able to add a regression test for this fix since the `juju-qa-test` charm does not support the addition of storage devices. With that said, I'm open to suggestions on how to test this behavior to make sure it's correct and that it stays that way on future changes.
jujubot
added a commit
that referenced
this issue
Nov 26, 2024
…fy-handling-of-storage-constraints-in-deploy #1213 #### Description This PR unifies storage constraint parsing into a single method (`juju.constraints.parse_storage_constraints`), which is called in a single place (`juju.model.Model._deploy`), allowing both bundle and model deployments to specify storage constraints using either the [juju storage constraint directive format](https://juju.is/docs/juju/storage-constraint) (e.g. `{'label': 'ebs,100G'}`) or pre-parsed dictionaries (e.g. `{'label': {'count': 1, 'pool': 'ebs', 'size': 102400}`). #### QA Steps Unit tests have been updated to reflect the new parsing location. Integration tests have been added to verify that model deployment can request storage using either format. The existing bundle integration tests should continue to pass. #### Notes & Discussion This PR resolves the issues with storage constraint parsing identified in: - #1052 - #1075 #1052 was initially addressed in #1053, which was included in the [3.5.2.0](https://github.com/juju/python-libjuju/releases/tag/3.5.2.0) release. This allowed bundle deployments (using `juju.bundle.AddApplicationChange.run`) to correctly handle storage constraints specified as strings in the [juju storage constraint directive format](https://juju.is/docs/juju/storage-constraint). Unfortunately, this erroneously required that model deployments (using `juju.model.Model.deploy`) also use this string format, instead of the parsed dictionary format that was previously accepted. This was noticed in #1075 and initially fixed in #1105, which was merged into `main` but never released. This fix moved parsing of storage constraint strings to bundle deployment exclusively. Due to the interim period in which `3.5.2` has (incorrectly) required model deployments to use the string format, I think the best fix at this point is to allow both bundle deployments and model deployments to use either format, and parse them into the parsed dictionary format in a single place in `juju.model.Model._deploy` (the private method called by both bundle and model deployments). After merging, let's look at getting these changes out in a `3.5.2.2` bugfix release.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Description
When deploying a bundle with an application that contains storage constraints the deployment fails with the following message:
Urgency
Annoying bug in our test suite
Python-libjuju version
3.4
Juju version
3.5.0
Reproduce / Test
The text was updated successfully, but these errors were encountered: