[OpenStack-Infra] [kolla] making stable/mitaka == stable/liberty

Steven Dake (stdake) stdake at cisco.com
Sat Apr 16 19:16:27 UTC 2016



On 4/16/16, 11:59 AM, "Clark Boylan" <cboylan at sapwetik.org> wrote:

>On Sat, Apr 16, 2016, at 12:37 AM, Steven Dake (stdake) wrote:
>> 
>> 
>> On 4/15/16, 6:38 PM, "Clark Boylan" <cboylan at sapwetik.org> wrote:
>> 
>> >On Fri, Apr 15, 2016, at 02:39 PM, Steven Dake (stdake) wrote:
>> >> Hey fellow OpenStackers,
>> >> 
>> >> Kolla 1.0.0 has a fatal flaw in its design related to data
>>containers.
>> >> The details are outlined here:
>> >> 
>> 
>>>>http://docs.openstack.org/developer/kolla/liberty-deployment-warning.ht
>>>>ml
>> >> 
>> >> Our plan to rectify this involves taking what is in stable/mitaka and
>> >> making it stable/liberty and placing 1-3 patches on top of
>> >>stable/liberty
>> >> to make it deploy the liberty version of openstack.  These 1-3
>>patches
>> >> include metadata like repo locations, upstream tarball locations,
>>etc.
>> >> No actual code.  This is a one time thing; in the future we will be
>> >> following a strict bug-backport only policy.
>> >> 
>> >> Our options include:
>> >> 1. make a megapatch diff of liberty vs mitaka and merge that, with a
>> >> patch on top to fix the repos
>> >> Example here:
>> >> https://review.openstack.org/#/c/306625/
>> >> 
>> >> 2. Tag the tip of stable/liberty with liberty-early-demise, delete
>>the
>> >> liberty branch, then create a new stable/liberty branch from the tip
>>of
>> >> stable/mitaka
>> >> 
>> >> 3. Tag the tip of stable/liberty with liberty-early-demise, and run
>>git
>> >> reset -hard origin/stable/mitaka outside of gerrit.  Tonyb says our
>> >>setup
>> >> prevents non-fast-forwarded pushes so this might not be viable.
>> >> 
>> >> This was tonyb's work here:
>> >> http://paste.openstack.org/raw/494295/
>> >> 
>> >> What we want to avoid is jamming 1k+ patches through our CI system
>>and
>> >> having the core reviewers have to deal with acking all those
>>patches, or
>> >> overloading gerrit and breaking things there.
>> >> 
>> >> I am far from a git wizard, and don't really know the best way to
>> >> proceed, other  than we must have a liberty 1.1.0 deliverable with
>>our
>> >> mitaka bits + liberty repo pointers.  I'd really like to preserve
>> >> history.  What we need is for stable/liberty to be an exact
>>duplicate of
>> >> stable/mitaka codwise, while also preserving history (which option 1
>> >> doesn't do).
>> >> 
>> >> Can the Kolla community get an ack on the options from the
>> >>Infrastructure
>> >> team one way or another, so I can get the ball rolling on our end and
>> >> sync up with Doug on the plan?
>> >
>> >Is there some reason that the normal backport process used on all of
>>the
>> >other projects wouldn't work here? Backport the bug fixes you need from
>> >the newer branches then release a 1.1.0.
>> >
>> >Clark
>> 
>> Clark,
>> 
>> Great question.  Thanks for the response :)
>> 
>> We have over 1000 patches delta between stable/mitaka and stable/liberty
>> and some of them will conflict.  But I guess we could do that and jam up
>> the gerrit/jenkins with that and the core reviewers with approving all
>> those backports.
>> 
>> Unfortunately because of the critical flaw, we really can't just
>> cherrypick ~30% of the commits - we need pretty much the whole repo
>> intact.  Its like a big onion unpeel.  In essence we need a docker
>> feature
>> called named volumes to correct the critical flaw.  Before we were using
>> data containers which results in data loss.  To gain access to named
>> volumes with Ansible 1.9.4, we had to write our own docker module called
>> kolla_docker.py.  kolla_docker.py is different then the Ansible bulit-in
>> module to integrate with Docker.  The Ansible built-in module only works
>> with docker 1.8.2(hard pin) and named volumes were introduced in Docker
>> 1.9.0.  Ansible Inc has stopped maintenance on Ansible 1.9 series and is
>> focusing all of their efforts on Ansible 2.0.  Porting our code base to
>> Ansible 2.0 is planned for Newton but realistically its a 2-3 month job.
>> IIUC Ansible 2.0 still has a hard pin on 1.8.2 when used with their
>> Docker
>> module - so we still prefer to use our own module to decouple Ansible's
>> release cycle from the fast moving Docker upstream (6 y stream releases
>>a
>> year).
>> 
>> Therefore, kolla-docker is a requirement to remove the hard pin and gain
>> access to named volumes.  We have approximately 300-500 (super rough
>> guess) patches to port our code base to use this kolla_docker.py module.
>> We really don't have any consistent way to identify the relevant
>>patches.
>> I have concerns with this type of backport approach, as we would
>> invalidate all of the testing we have done to date with Mitaka and
>> Liberty
>> - it would basically be forking our own code base for one version of
>> Kolla.  
>> 
>> It is actually much more complex then I've outlined above - there are
>> other things in play here, involving how our diagnostics system works
>> (and
>> won't work with docker 1.9 and the current Liberty code) meaning we have
>> to backport our diagnostics system intact as well.  There are other
>>parts
>> of Kolla that fit into the same category - lots of interdependencies
>> mostly centered around kolla_docker.py.
>> 
>> Both Doug and Tony mentioned a backport of this type is not ideal, and a
>> better solution should be found.  I agree completely - at this point the
>> viable options are listed above.
>> 
>> I recognize the above approaches aren't how repos should be managed in
>> OpenStack (or anywhere else for that matter).  We have corrected our
>> deficiencies with backport management this cycle.  We are ready to go
>> with
>> bug-fix only backports from now into the far future because we fixed the
>> pain with how Ansible handles Docker integration via kolla-docker.py.
>> 
>> The mission of Kolla is to provide Operators a smooth experience
>> deploying
>> and operating OpenStack.  We would be in violation of our mission in my
>> opinion if we did only a partial backport of our repo.
>> 
>> The only other alternative is to abandon the Liberty repository
>>entirely,
>> which has been discussed.  We believe this would prematurely and
>> permanently damage the Kolla project's viability in the eyes of
>> Operators,
>> and result in overall damage to OpenStack in general.
>> 
>> We do plan to tag a 1.1.0 release as soon as one of the above approaches
>> is executed - which we think is about 1-2 days of dev work if the repos
>> were equivalent.  I could see backporting individually using the
>>standard
>> process taking months and resulting in completely broken software.  Our
>> best option at this point is to take mitaka as is and point the tarball
>> and repo files we depend on at the proper liberty locations.
>> 
>> FWIW the liberty patch has already been produced (against master) - and
>> while not complete, results in a working from-source deploy.  A second
>> patch needs to be developed to make from-binary deploys work.
>>Reference:
>> 
>> https://review.openstack.org/#/c/306630/
>
>In this case option 2 is probably your best bet. You should be able to
>coordinate that with the release team as they have permissions to create
>and delete branches on the Kolla project. The basic process would be tag
>old branch, abandon all existing changes on stable/liberty, delete the
>branch, create the branch with a new head, push and merge the fixes to
>switch to liberty things.
>
>The thing to keep in mind is all of your devs and users will need to
>forcefully update their local stable/liberty branches as this will be a
>non fastforward change if liberty and mitaka/master have diverged. If
>this is going to be a big problem then you should consider the backport
>process (either commit by commit or squashed).
>
>Clark

Clark,

I don't think this git issue (checking out a new git repo) will be a big
problem for our user base but I'll point them at this thread just to make
certain.

Regards
-steve
>




More information about the OpenStack-Infra mailing list