Backporting policy¶
Once a release of Charmed OpenStack has been published, it is subject to wider use. In particular it is important to note that stable releases are run in production environments, with an expectation that the release maintains stability. While users expect stability, they also expect bug fixes. The balance of providing these fixes while maintaining stability is extremely important.
Process¶
Anyone can propose that a fix be backported to a stable branch.
Requirements¶
The below requirements must be met for a backport to be accepted.
reverse chronological order - in order to be accepted into a given stable branch, it must be merged into all newer stable branches first, including the development branch
cherry pick line - it must include a “cherry picked from commit …” line in its commit message
CI testing - if it relies on functional testing, the tests must be backported in tandem (e.g. Refactor unit tests to avoid leaks of mocks)
Backport candidates¶
Only a fix for a bug classified as Critical or High in Launchpad can be considered as a backport candidate.
Exclusions¶
A code change is generally not eligible as a backport when it is either:
large
risky
The following consequences of a code change qualifies it as risky:
new behaviour is introduced in the charm
new behaviour is introduced in the payload
new Debian packages are installed on the host
new Python packages are installed in the charm
The above is not an exhaustive list.
Common backport request types¶
The following sections cover common types of backport requests.
Charm configuration options¶
A backport of a simple charm configuration enablement that is opt-in is a candidate to be backported.
For changes to configuration options, new behaviour should not be introduced. This can take the form of default values changed in comparison to the ones already defined in the configuration template or the payload’s default.
Here is an example of a patch that introduced a new configuration option without changing the default behaviour: Support –visibility option for simplestreams
Juju actions¶
A Juju action that improves operator experience is a candidate to be backported.
For changes to actions, the stable maintainers team takes extra care to asses what risk the new action introduces. If you consider the risk to be minimal, then include your reasoning, so the maintainers team can take a more informed decision.
In general, actions that execute only read operations on the system are considered low risk.
Backport approvals¶
Charms¶
All charm stable branch reviews must be approved by two core reviewers or stable maintainers prior to landing and CI system(s) voted with a Verified+1.
Charm and test libraries¶
Backports are also sometimes needed for the charm libraries that support the OpenStack, Ceph, OVN and support charms. These libraries are:
All library backports may be approved by a single core reviewer or stable maintainer prior to landing and the CI system(s) having voted with a Verified+1.
Note
This is different to charm backports as libraries are “tested again” when charms are built and go through the test process.
Cherry picking details¶
Backports are done by cherry picking a patch that has been already merged into
a more recent branch (e.g. master
).
The simplest way to do this is with the “Cherry Pick” button in the web UI
for the original patch (e.g. master
). Gerrit will automatically create a
new review and include the cherry pick line in its commit message.
However, you can also use git-review to manually propose a backport. For
example, to propose a backport from the master
branch to the zed
branch:
git checkout -t origin/stable/zed
git cherry-pick -x <master_commit_id>
git review stable/zed
The -x
option in the cherry-pick command inserts the cherry pick
line in the commit message.