Brian Haley 7d139a013b Add RST linting to neutron
Start running the doc8 RST linter in the pep8 job. This
will catch obvious errors like line too long, etc. Tried
to fix most of the errors (there were a lot!), but added
some ignore directives so we can address some files later.

Did have to move a couple of files around as a double
include was causing some issues, but content is unchanged.

Change-Id: I336a9ee7729045da095be22ea0f58ee596967174
2024-10-01 11:18:46 -04:00

4.0 KiB

OVN Tools

This document offers details on Neutron tools available for assisting with using the Open Virtual Network (OVN) backend.

Patches and Cherry-picks

Overview

As described in the ovn-migration blueprint, Neutron's OVN ML2 plugin has merged to the Neutron repository as of the Ussuri release. With that, special care must be taken to apply Neutron changes to the proper stable branches of the networking-ovn repo.

Note

These scripts are generic enough to work on any patch file, but particularly handy with the networking-ovn migration.

tools/files_in_patch.py

Use this to show files that are changed in a patch file.

$ # Make a patch to use as example
$ git show > /tmp/commit.patch

$ ./tools/files_in_patch.py /tmp/commit.patch | grep .py
tools/download_gerrit_change.py
tools/files_in_patch.py
tools/migrate_names.py

tools/download_gerrit_change.py

This tool is needed by migrate_names.py (see below), but it can be used independently. Given a Gerrit change id, it will fetch the latest patchset of the change from review.opendev.org as a patch file. The output can be stdout or an optional filename.

$ ./tools/download_gerrit_change.py --help
Usage: download_gerrit_change.py [OPTIONS] GERRIT_CHANGE

Options:
  -o, --output_patch TEXT  Output patch file. Default: stdout
  -g, --gerrit_url TEXT    The url to Gerrit server  [default:
                           https://review.opendev.org/]
  -t, --timeout INTEGER    Timeout, in seconds  [default: 10]
  --help                   Show this message and exit.

$ ./tools/download_gerrit_change.py 698863 -o /tmp/change.patch
$ ./tools/files_in_patch.py /tmp/change.patch
networking_ovn/ml2/mech_driver.py
networking_ovn/ml2/trunk_driver.py
networking_ovn/tests/unit/ml2/test_mech_driver.py
networking_ovn/tests/unit/ml2/test_trunk_driver.py

tools/migrate_names.py

Use this tool to modify the name of the files in a patchfile so it can be converted to/from the legacy networking-ovn and Neutron repositories.

The mapping of how the files are renamed is based on migrate_names.txt, which is located in the same directory where migrate_names.py is installed. That behavior can be modified via the --mapfile option. More information on how the map is parsed is provided in the header section of that file.

$ ./tools/migrate_names.py --help
Usage: migrate_names.py [OPTIONS]

Options:
  -i, --input_patch TEXT    input_patch patch file or gerrit change
  -o, --output_patch TEXT   Output patch file. Default: stdout
  -m, --mapfile PATH        Data file that specifies mapping to be applied to
                            input  [default: /home/user/openstack/neutron.git
                            /tools/migrate_names.txt]
  --reverse / --no-reverse  Map filenames from networking-ovn to Neutron repo
  --help                    Show this message and exit.
$ ./tools/migrate_names.py -i 701646 > /tmp/ovn_change.patch
$ ./tools/migrate_names.py -o /tmp/reverse.patch -i /tmp/ovn_change.patch --reverse
$ diff /tmp/reverse.patch /tmp/ovn_change.patch | grep .py
< --- a/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py
< +++ b/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py
> --- a/networking_ovn/ml2/mech_driver.py
> +++ b/networking_ovn/ml2/mech_driver.py
<... snip ...>

$ ./tools/files_in_patch.py /tmp/ovn_change.patch
networking_ovn/ml2/mech_driver.py
networking_ovn/ml2/trunk_driver.py
networking_ovn/tests/unit/ml2/test_mech_driver.py
networking_ovn/tests/unit/ml2/test_trunk_driver.py