Skip to content

Commit

Permalink
Merge pull request #1054 from luissimas/fix-zone-constraints
Browse files Browse the repository at this point in the history
#1054

#### Description

Closes #1050. This fixes the parsing of the `zones` constraint in bundles. The format in the Juju API is defined in: https://github.com/juju/juju/blob/3.6/core/constraints/constraints.go#L107.

#### 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: zones=z-1

applications:
 postgresql:
 charm: postgresql
 channel: 14/stable
 num_units: 1
 to:
 - lxd:0
"""

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.
  • Loading branch information
jujubot authored Jul 11, 2024
2 parents 18917b4 + c12adde commit c033058
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion juju/constraints.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
"zones",
"allocate_public_ip"]

LIST_KEYS = {'tags', 'spaces'}
LIST_KEYS = {'tags', 'spaces', 'zones'}

SNAKE1 = re.compile(r'(.)([A-Z][a-z]+)')
SNAKE2 = re.compile('([a-z0-9])([A-Z])')
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/test_constraints.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def test_parse_constraints(self):
self.assertEqual(
_("mem=10G zones=bar,baz tags=tag1 spaces=space1,space2"),
{"mem": 10 * 1024,
"zones": "bar,baz",
"zones": ["bar", "baz"],
"tags": ["tag1"],
"spaces": ["space1", "space2"]}
)
Expand Down

0 comments on commit c033058

Please sign in to comment.