So this happens because the default model has the constraint of amd64. If you bootstrap the controller with an arch constraint, we don't inherit that when adding a model without specifying a constraint (maybe we should?).
You can't change a constraint of a given model, as we may have existing charmhub applications with amd64, so that violates our homogeneous topology for architecture constraints. One possible solution here would be to download a charm with the new arch when a constraint is employed, assuming it exists. This sounds easy but would require some changes to applications i.e. the charmURL as the opaque identifier.
The following all works, because we set the default model constraint to arm64. Everything correctly inherits from the application if it's set or via the model.
As a workaround, I would suggest:
juju add-model other --constraints="arch=arm64"
I'll keep investigating to validate that the LXD provider does correctly return the architectures.
So this happens because the default model has the constraint of amd64. If you bootstrap the controller with an arch constraint, we don't inherit that when adding a model without specifying a constraint (maybe we should?).
You can't change a constraint of a given model, as we may have existing charmhub applications with amd64, so that violates our homogeneous topology for architecture constraints. One possible solution here would be to download a charm with the new arch when a constraint is employed, assuming it exists. This sounds easy but would require some changes to applications i.e. the charmURL as the opaque identifier.
From my experimentation the following works:
juju bootstrap aws/eu-west-1 test3 --bootstrap- constraints= "arch=arm64" --constraints= "arch=arm64"
juju deploy ubuntu
juju add-unit ubuntu -n 1
The following all works, because we set the default model constraint to arm64. Everything correctly inherits from the application if it's set or via the model.
As a workaround, I would suggest:
juju add-model other --constraints= "arch=arm64"
I'll keep investigating to validate that the LXD provider does correctly return the architectures.