At the moment, ironic's rpcapi module is specifying a target (minimum)
RPC version of 1.0 -- however, none of the methods added after 1.0
indicate in which minor version they were added. Thus, this module
believes all methods are available in any version of the server greater
than 1.0, which is clearly untrue. They're all available in the _current_
version.
Additionally, certain rpcapi version changes prior to 1.15 included
backwards-incompatible changes and were allowed in anyway, because
they were early in Ironic's evolution.
After reading
http://docs.openstack.org/developer/oslo.messaging/target.html#target-versions
I'm fairly sure that we're currently Doing It Wrong. As the project is growing up,
it's time we start Doing It Right. So ...
Nova uses a much more sophisticated approach to versioning RPC on the
client side with both a min and max version, including specifying the minor
version that a method was added in, so the client knows not to send it
to servers with a minor version less than that.
I think we should do something similar (if not the same), starting with pinning
the minimum RPC version supported by the client to 1.15, and then go on to add
proper version tagging on future methods, and enforcing a policy of
non-backwards-incompatible changes to existing methods without a major version bump.
Partial fix: https:/ /review. openstack. org/#/c/ 92723