.. SPDX-FileCopyrightText: 2021 Open Networking Foundation <info@opennetworking.org>
.. SPDX-License-Identifier: Apache-2.0

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.
