Wheels build may not work properly on multi-distro environment
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack-Ansible |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
* Problem description:
Recently we solved one issue related to wheels build process in multi-distro environments: https:/
Unfortunately I found another one, and this time it's much harder to fix it.
I think it's the best to explain this issue on certain example.
Let's imagine, You are running ubuntu 18.04 and want to upgrade to 20.04.
You have 3 shared-infra nodes(controllers). They exist in ansible inventory in a following order: control02, control01, control03
control02 is running lsyncd on repo containers so based on the documentation, it shouldn't be upgraded first, so You upgrade control03 as a first host.
So You have re-provisioned control03 with a new operating system, now it looks like this:
- control02(lsyncd master, ubuntu 18.04)
- control01(ubuntu 18.04)
- control03(ubuntu 20.04)
And You want to install openstack services on control03.
Keystone can't be run with limits, so You need to run it against all hosts. It runs in a following serial: "{{ keystone_serial | default(['1', '100%']) }}"
So keystone playbook runs in two batches:
1.control02
first host, nothing really changes as wheels are already built for ubuntu 18.04
2. control01(18.04), control03(20.04)
And there is our main issue. python_
In this case wheels for ubuntu 20.04 won't be built at all.
* Proposed solution:
TBH I'm not sure how we can fix it. We can't just drop run_once because it will trigger multiple wheel builds, especially when combined with venv_rebuild=true.
It will drastically slow down the process and may also DDoS gitea(https:/
Maybe it's possible to replace run_once with something limiting wheels build process only to first host of each distribution. But from top of my head, I don't know how we can achieve it.
Fix proposed to branch: master /review. opendev. org/c/openstack /ansible- role-python_ venv_build/ +/848106
Review: https:/