Co-ordinating glance/nova/keystone changes with devstack
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Core Infrastructure |
Won't Fix
|
Critical
|
Unassigned |
Bug Description
We've talked about the problem of needing to merge a change into the core projects which require a change in devstack. Because the devstack gating tests fail when jenkins tests the gerrit review, we get stuck.
A good example is this change:
https:/
Split out paste deployment config from the core glance *.conf files into corresponding *-paste.ini files.
Which can't be merged before this devstack change:
https:/
Corresponds to the Glance patch that splits paste
And the devstack change can't be merged until the glance change has been merged. Chicken and egg. Nasty.
There's been some offline discussion about how the devstack patch might support glance's old and new behaviour and then the support for the old behaviour could be merged later. It seems like wasted effort, though, because do we really need latest devstack to work at the exact moment a core project change gets merged?
How about this for an alternative:
1) The core project change is approved and ready to go, but people notice that devstack needs updating
2) Someone cooks up a devstack change, tests it with the proposed core project change, proposes it and gets approval in principle
3) Someone adds a tag to the core project's commit message which means "this change temporarily breaks devstack"
4) The patch gets approved, only after ${project}-core is confident that the devstack change is ready to go
5) The devstack gating job in Jenkins sees the tag and skips doing any testing
6) No more changes to any project can now be merged until devstack is updated
7) The devstack change is approved, Jenkins devstack gating job tests it and merges it
8) Everything is back to normal again
AFAICT, this would only need something like this in devstack-
if [[ $GERRIT_PROJECT == $PROJECT ]]; then
echo " Merging proposed change"
git fetch https:/
git merge FETCH_HEAD
if git show | grep 'THIS COMMIT TEMPORARILY BREAKS DEVSTACK' > /dev/null; then
echo 'THIS COMMIT TEMPORARILY BREAKS DEVSTACK'
exit 0
fi
Once we have that going, we could proceed to a more cunning plan:
...
3) Someone adds a tag to the commit message pointing at the devstack fix in gerrit
...
5) devstack-vm-gate sees the tag and merges the devstack fix before proceeding
We would still have the period at (6) where everything blocks until the devstack fix is merged
Setting to Critical because this is now holding up multiple projects...