[openstack-dev] [Oslo] Improving oslo-incubator update.py

Doug Hellmann doug.hellmann at dreamhost.com
Wed Jan 15 12:44:32 UTC 2014


On Wed, Jan 15, 2014 at 4:40 AM, Flavio Percoco <flavio at redhat.com> wrote:

> On 14/01/14 16:33 -0600, Ben Nemec wrote:
>
>> On 2014-01-14 15:26, Doug Hellmann wrote:
>>
>>    In the release meeting today, Russell proposed that we at least
>> include the
>>    hash of the HEAD when the merge is done, to indicate how far along the
>> oslo
>>    changes are. More detail is obviously better.
>>        So, let's consider this as a new policy. Does anyone foresee
>> issues with
>>    making this work?
>>
>>
>
> +1 from me. Lets keep it simple. I agree with you on the fact that we
> should be focusing more on graduating modules from the incubator.
>
>
>  I don't see a problem with doing that, but I'm not clear on where we're
>> including the hash.  In the file itself, in a separate file, and/or in the
>> commit message?
>>
>> Even if we do no more automation, having the commit hash of the last sync
>> would
>> be immensely helpful.  Not having to comb through commit logs to figure
>> out
>> when the last sync happened would be fantastic. :-)
>>
>
> We should keep it in the openstack-modules.conf file and put it in the
> commit message as well. IMHO.
>

I was thinking the commit message, but if you see usefulness in including
the conf file, we could do that, too.

Doug



>
> FF
>
>
>
>> -Ben
>>
>>
>>
>>    On Tue, Jan 14, 2014 at 4:23 AM, Flavio Percoco <flavio at redhat.com>
>> wrote:
>>
>>        On 13/01/14 12:07 -0500, Doug Hellmann wrote:
>>        [.................]
>>
>>
>>
>>            I spent some time trying to think through how we could improve
>> the
>>            update
>>            script for [1], and I'm stumped on how to figure out
>> *accurately*
>>            what state
>>            the project repositories are in today.
>>
>>            We can't just compute the hash of the modules in the project
>>            receiving copies,
>>            and then look for them in the oslo-incubator repo, because we
>>            modify the files
>>            as we copy them out (to update the import statements and
>> replace
>>            "oslo" with
>>            the receiving project name in some places like config option
>>            defaults).
>>
>>            We could undo those changes before computing the hash, but the
>>            problem is
>>            further complicated because syncs are not being done of all
>> modules
>>            together.
>>            The common code in a project doesn't move forward in step with
>> the
>>            oslo-incubator repository as a whole. For example, sometimes
>> only
>>            the openstack
>>            /common/log.py module is copied and not all of
>> openstack/common. So
>>            log.py
>>            might be newer than a lot of the rest of the oslo code. The
>> problem
>>            is even
>>            worse for something like rpc, where it's possible that modules
>>            within the rpc
>>            package might not all be updated together.
>>
>>            We could probably spend a lot of effort building a tool to
>> tell us
>>            exactly what
>>            the state of all of each common file is in each project, to
>> figure
>>            out what
>>            needs to be synced. I would much rather spend that effort on
>>            turning the common
>>            code into libraries, though.
>>
>>            So, here's an alternative:
>>
>>            1. Projects accept a full sync of Oslo soon, including adding a
>>            value in their
>>            openstack-common.conf indicating which commit in
>> oslo-incubator is
>>            reflected in
>>            the sync. We'll try to make those commit messages as detailed
>> as
>>            possible.
>>
>>            2. We modify update.py to remove the option to update
>> individual
>>            modules when
>>            copying from oslo-incubator. The new version would always
>> apply all
>>            changes
>>            from the last merged commit, as a series of commits, to the
>>            receiving project.
>>            So if nova is out of step by 3 commits, then 3 new commits
>> would be
>>            created in
>>            the branch by the person doing the update, each with the
>> commit log
>>            message
>>            from the change in oslo-incubator. (This lock-step approach is
>>            necessary to
>>            have any hope of figuring out which commits are actually being
>>            synced, so the
>>            log messages are accurate.)
>>
>>        In my experience, when syncing files from oslo, it'll most likely
>>        require syncing more than one module. There's been just *few* times
>>        where copying a module from oslo resulted in just that specific
>> module
>>        being copied.
>>
>>        All that to say that I agree with this point.
>>
>>
>>
>>
>>            3. The person proposing the merge into the project can decide
>>            whether to squash
>>            the commits, or leave them as separate reviews.
>>
>>
>>
>>
>>        If we use relative imports for modules in oslo incubators (as
>>        mentioned in another email in this thread) and we *always* keep
>>        everything up to the latest. What about reconsidering using git
>>        submodules?
>>
>>        AFAIR, the main issue with git submodules is that we wanted to
>> support
>>        updating individual modules. If we remove that option, I think git
>>        submodules would work just fine. Am I missing something?
>>
>>        Instead of hacking on update.py we could work on a migration plan
>> out
>>        of it.
>>
>>        A downside of using submodules is that when moving the reference in
>>        the submodule, it won't be obvious why that's happening, which is
>>        something we wanted to fix with update.py. It would be up to the
>>        committer to write a good commit message or to get the messages
>> out of
>>        the submodule history.
>>
>>        Another downside is that it would be hard to apply isolated
>> patches on
>>        stable branches for security issues or really awful bugs.
>>
>>        I'm less convinced about submodules now but I'm leaving this in the
>>        email in case someone wants to dig a bit deeper in the topic.
>>
>>
>>
>>            I'm not entirely certain I like this approach myself, but it's
>> the
>>            best I've
>>            been able to come up with. It essentially gives us the current
>>            process, while
>>            removing the ability to potentially take a version of a module
>>            without taking
>>            its dependencies (allowing us to step forward, and track the
>> commit
>>            messages
>>            accurately). It will also produce results similar to what we
>> will
>>            have when all
>>            of this oslo code moves into separate libraries, where the
>> changes
>>            to the
>>            library will be seen by the projects without any action at all
>> on
>>            their part.
>>
>>        After going through this for a bit, I agree with you. The goal
>>        of the update script should be:
>>
>>           - Sync modules from the current state to the most updated
>> version
>>
>>           - Make sure the update information is not lost. If there's an
>> oslo
>>             sync review without the commits shas + description, it simply
>>             means the committer amended the message.
>>
>>
>>
>>            OTOH, it will also require spending time on update.py, instead
>> of
>>            releasing a
>>            library from the incubator. And it doesn't really buy us that
>> much
>>            in terms of
>>            making the sync happen more easily, other than a reliable way
>> of
>>            having
>>            entirely accurate commit messages.
>>
>>        Although it distracts us from our real goal - releasing libraries
>> - I
>>        still think is necessary. We should probably just reduce the
>> changes
>>        needed as much as possible, but we'll need it anyway.
>>
>>
>>
>>            I would love to have someone else offer an alternative that's
>> less
>>            effort to
>>            change and provides the desired detailed log messages
>> accurately.
>>
>>        I think this actually simplifies the way update.py works, TBH.
>> We'll
>>        be removing single module sync and we'll also force projects to be
>>        updated to the latest version of those modules in oslo-incubator,
>>        which is safer, IMHO.
>>
>>
>>        Cheers,
>>        FF
>>
>>        --
>>        @flaper87
>>        Flavio Percoco
>>
>>        _______________________________________________
>>        OpenStack-dev mailing list
>>        OpenStack-dev at lists.openstack.org
>>        http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>>
>>    _______________________________________________
>>    OpenStack-dev mailing list
>>    OpenStack-dev at lists.openstack.orghttp://lists.openstack.org/
>> cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>>
>>
>>
>  _______________________________________________
>> OpenStack-dev mailing list
>> OpenStack-dev at lists.openstack.org
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>
>
> --
> @flaper87
> Flavio Percoco
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140115/ef87a614/attachment.html>


More information about the OpenStack-dev mailing list