It's a bit of an embarrassment when you submit a review to Gerrit only to have it fail CI checks immediately because of something as simple as a syntax error or pep8 failure that you should have caught yourself before submitting...but you forgot to run your validations before submitting the change.

In many cases you can alleviate this through the use of the git pre-commit hook, which will run every time you commit changes locally. You can have the hook run tox or whatever tool your project uses for validation on every commit. This works okay for simple cases, but if the validation takes more than a couple of seconds the delay can be disruptive to the flow of your work.

What you want is something that stays out of the way while you are working locally, but that will prevent you from submitting something for review that's going to fail CI immediately. If you are using the git-review tool to interact with Gerrit (and if you're not, you should be), you're in luck! The git-review tool supports a pre-review hook that does exactly what we want. git-review looks for hooks in a global location (~/.config/git-review/hooks) and in a per-project location (in .git/hooks/). As with standard Git hooks, the pre-review hook must be executable (i.e., chmod u+x .git/hooks/pre-review).

The pre-review script will be run before attempting to submit your changes to Gerrit. If the script exits successfully, the output is hidden and your changes will be submitted normally. If the hook fails, you will see output along the lines of...

Custom script execution failed.
The following command failed with exit code 1

...followed by the output of the pre-review script.

For my work on the tripleo-quickstart project, the contents of my .git/hooks/pre-review script is as simple as:


Exploring YAQL Expressions

Thu 11 August 2016 by Lars Kellogg-Stedman Tags openstack heat hot yaql

The Newton release of Heat adds support for a yaql intrinsic function, which allows you to evaluate yaql expressions in your Heat templates. Unfortunately, the existing yaql documentation is somewhat limited, and does not offer examples of many of yaql's more advanced features.

I am working on a Fluentd composable …

read more

Connecting another vm to your tripleo-quickstart deployment

Let's say that you have set up an environment using tripleo-quickstart and you would like to add another virtual machine to the mix that has both "external" connectivity ("external" in quotes because I am using it in the same way as the quickstart does w/r/t the undercloud) and …

read more

Deploying an HA OpenStack development environment with tripleo-quickstart

Fri 19 February 2016 by Lars Kellogg-Stedman Tags openstack tripleo rdo ansible

In this article I would like to introduce tripleo-quickstart, a tool that will automatically provision a virtual environment and then use TripleO to deploy an HA OpenStack on top of it.

Introducing Tripleo-Quickstart

The goal of the Tripleo-Quickstart project is to replace the instack-virt-setup tool for quickly setting up virtual …

read more

Ansible 2.0: New OpenStack modules

This is the second in a loose sequence of articles looking at new features in Ansible 2.0. In the previous article I looked at the Docker connection driver. In this article, I would like to provide an overview of the new-and-much-improved suite of modules for interacting with an OpenStack …

read more