Oslo config comparator
======================

Overview
--------

Whenever you have to upgrade your OpenStack clusters, you have to
rewrite your config files like nova.conf, cinder.conf, neutron.conf,
etc.

Although
`oslo.config.generator <https://docs.openstack.org/oslo.config/latest/cli/generator.html>`__
helps you generate new config files automatically, there is no feature
to migrate existed config data to newly generated config.

This program deals with the tedious task that compares the old config to
new config line by line, and updates the config value old config had.

Features
--------

-  Check two OpenStack configuration files. It shows set of attributes
   which are categorized to 5 types. This distinction is based on the
   old config file and commented attributes which means to have default
   value does not appear.

   -  **Added** Newly added attributes. Old config does not have these
      attributes.
   -  **Removed** Removed attributes. Old config had but new config does
      not have.
   -  **Unchanged** Unchanged attributes. Both of new and old config
      have.
   -  **Changed** Changed attributes. Group or name is changed at new
      release.
   -  **Ambiguous** Ambiguous attributes. These attributes are changed
      but cannot be categorized since the name is duplicated.

-  Upgrade new config file with new contents based on existed config
   file. It fills out the new config file with the old config data which
   belongs to **Changed** and **Unchanged** attributes. **Note that
   Ambigouos attributes should be treated by manual.**

Installation
------------

.. code:: bash

    pip3 install oslo.config.comparator

Usage
-----

-  Check two OpenStack configuration files.

   .. code:: bash

       oslo-config-comparator check [FILE1] [FILE2] (-v)

   -  **FILE1** Base config file which has old data.
   -  **FILE2** New config file which generated by
      oslo-config-generator.
   -  **-v** Show datails.

-  Upgrade new config file with new contents based on existed config
   file.

   .. code:: bash

       oslo-config-comparator upgrade [FILE1] [FILE2] (-o OUTPUT)

   -  **-o OUTPUT** File to be written. Defaults to stdout.

Limitation
----------

-  It only parses “key = value” formatted string, so if the config file
   has template engine syntax such as Jinja, ruby ERB, additional
   content surrounding the attributes must be written manually.

Licenses
--------

MIT
