juju bootstrap older version: ERROR requested agent version major.minor mismatch
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Canonical Juju |
Fix Released
|
Wishlist
|
Anastasia |
Bug Description
For testing purposes and reproduce issues, it's common for our team to have the need of bootstrap an specific version of juju, the reasons may vary from test upgrade procedures for a specific environment to load a mongodump and try fix the database.
At the moment, some of us keep old versions (debian packages) in PPAs clearly marked as "unsupported and only for testing", but with the arrival of snaps we would like to have the ability to bootstrap older versions of juju with the latest client, so we just follow "latest/stable" in our machines and nothing else.
Another benefit is that this will allow us to detect any possible API incompatibilities between an old controller and a new client.
$ juju --version
2.2.2-zesty-amd64
$ juju bootstrap --agent-version 2.0.2 lxd
ERROR requested agent version major.minor mismatch
$ juju bootstrap --agent-version 2.1.3 lxd
ERROR requested agent version major.minor mismatch
$ juju bootstrap --agent-version 2.2.0 lxd
Creating Juju controller "localhost-
Looking for packaged Juju agent version 2.2.0 for amd64
Changed in juju: | |
status: | Fix Committed → Fix Released |
This is unviable without making significant changes to the way bootstrap works. The client code currently knows how to create the bootstrap instance, and works in concert with the exact same agent version on it.
We would need to either introduce cross-version compatibility between client/server bootstrap procedures (which I think would be too costly in terms of maintenance, and therefore a mistake); or we could split the client-side bootstrap code into a separate binary, and have the client fetch the appropriate version from streams. canonical. com. I think the latter would be very reasonable, and probably better than what we have today.
Marking this as Wishlist for now, since it's an improvement over an existing solution.