All,
I am a member of a new release engineering tools team at Rackspace. Our goal is
to help build the next generation of tools to clean up our internal development
process along with the OpenStack development process. With this in mind, I
recently broached the topic of a replacement system to Gerrit with jeblair,
fungi, and mordred. This will be a complete from the ground up replacement of
Gerrit built completely in python following the standards devised for the
OpenStack projects. The targeted name for the system will be Vinz in order to
match the naming of Zuul.
The underlying core will be built in python using:
* Oslo.config
* Oslo.messaging (possible addition of a gearman driver for direct
interaction with Zuul)
* Stevedore
* Pecan
* WSME
* Sqlalchemy
* Alembic
With the GUI using the same standards as Storyboard with:
* Angular
* Bower
* Grunt
The hope is for a more flexible and infrastructure driven code review system.
This will allow for the ability to customize Vinz well beyond Gerrit along with
in-depth control over workflow within CI and third party test environments.
The goal also includes solving problems/limiting factors that are currently
seen within Gerrit. A good example of this is that any one testing setup that
is run, can make no more then one comment on a review.
The system will be based around interactions in git and use git features like
notes to tag review information against a git hash. This will allow for a clean
review history to be stored using the git filesystem structure while not
forcing a new clone or update of a branch to pull in the review information as
notes are not fetched without extra flags.
We would also like to build into the system the ability to use things like
git-review in order to maintain the developer base experience with what is
currently used for the OpenStack projects. This will require api compatibility
with Gerrit.
Our current layout and design for the project are as follows:
* Coordinator – Core application that controls flow of all messages and
interactions within Vinz
* Rule Engine – A component that governs when actions and state changes
can happen.
* State Engine - A component that has complete control over the state of
reviews.
* Sink – An extensible RPC client that registers with the Coordinator and
listens for messages to run remotely for tests/gate purposes.
* Examples
* A Scheduler that submits requests to Zuul.
* A Poller watching for new review requests or for the status of
tests/gates.
* An API that allows submission of request or responses from actions
from third party systems.
* A process that receives and fires off Gerrit style triggers in
order to ease the transition of current infrastructure.
We want to develop this 100% in the open with discussions from all of
infrastructure and the OpenStack community so any feedback and discussion is
welcomed.
Detailed use cases and design documentation will follow this announcement soon.
We also hope to move most of this into Storyboard as soon as possible in the
form of blueprints and story/task lists.
- Philip Schwartz
_______________________________________________
OpenStack-Infra mailing list
[email protected]
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-infra