Component Configuration
=======================

Different from network configurations,
component configurations are attributes and feature flags specific to ONOS components.

For more details, please check the ONOS Wiki `Component Configuration <https://wiki.onosproject.org/display/ONOS/Component+Configuration>`_

Enable/Disable Phased Recovery
------------------------------
Phased recovery is an experimental feature that aims at minimizing traffic
disruption when recovering from a switch failure. When enabled, a recovering
switch is programmed before pointing traffic from other switches towards it.

To check current status:

.. code-block:: console

  onos > cfg get org.onosproject.segmentrouting.phasedrecovery.impl.PhasedRecoveryManager phasedRecovery
    name=phasedRecovery, type=boolean, value=false, defaultValue=false, description=Enabling phased recovery.


We can see that the default value of phased recovery is false.
Which means it is disabled by default.

To enable phased recovery:

.. code-block:: console

  onos > cfg set org.onosproject.segmentrouting.phasedrecovery.impl.PhasedRecoveryManager phasedRecovery true
  onos > cfg get org.onosproject.segmentrouting.phasedrecovery.impl.PhasedRecoveryManager phasedRecovery
    name=phasedRecovery, type=boolean, value=true, defaultValue=false, description=Enabling phased recovery.

Now the value is true and we have successfully enabled phased recovery.

To disable phased recovery, change the value to ``false``.


.. tip::
  Simply run ``cfg get`` in the ONOS CLI to view all available component configurations supported by ONOS.
  The default values are fine-tuned for SD-Fabric, and therefore we use them for most of the cases.
