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

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

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

Enable/Disable Phased Recovery
------------------------------
Phased recovery is an experimental feature that ensure a
recovering switch are 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 enable phased recovery.

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


.. tip::
  Simply run ``cfg get`` in 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.
