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

ONOS Configuration Loader
=========================

Config loader is a Kubernetes pod installed by the SD-Fabric Helm
chart which implements a reconciliation loop to update the ONOS network
configuration and component configuration.

Config loader will periodically read the running configurations from ONOS and eventually
push updates to ONOS if the running state isn't same as the desired state.

.. image:: ../images/config-loader.svg

.. note::
   We recommend using the Helm values below to update the ONOS configuration instead
   of manually changing it via ONOS REST APIs or CLI, otherwise, manual changes
   will be overridden by config loader. If you need to apply config changes
   during debugging or testing we recommend disabling the reconciliation loop
   (``reconcile_mode: false``).

Below is a reference of the available configuration parameters and their default values:

.. code-block::

      onos:
        config:
          reconcile_mode: true
          reconcile_interval: 30s
          image:
            registry: ""
            repository: opencord/onos-classic-helm-utils
            tag: 0.1.0
            pullPolicy: "IfNotPresent"
          service_account_name: onos-config-loader
          # NOTE these values won't change the credentials inside ONOS, they
          # are only used by config loader for authenticating REST API calls.
          username: karaf
          password: karaf
          netcfg: >
            # {
            #   "devices" : {
            #      "device:leaf1" : {
            #      ...
            # }
          componentConfig:
            # "org.onosproject.provider.lldp.impl.LldpLinkProvider": >
            #   {
            #     "enabled": "false"
            #   }


* ``reconcile_mode``: If disable, config loader will only update the configuration once. Useful for debugging/testing.
* ``reconcile_interval``: The interval in seconds between reconciliation checks.
* ``image``: to pull the container image of the config loader.
  Use the default values unless you have special requirements.

  * ``registry``: If empty, the config loader image will be downloaded from Docker Hub.
  * ``repository``: The repository of config push.
  * ``tag``: The image tag of config loader.
  * ``pullPolicy``: How Kubernetes pulls the image, available options are `Never, Always, IfNotPresent`.

* ``service_account_name``: Name of the Kubernetes Service Account used by the config loader pods to read
  information from Kubernetes.
* ``username``: Username used in ONOS REST API calls.
* ``password``: Password used in ONOS REST API calls.
* ``netcfg``: ONOS network configuration as JSON blob.
* ``componentConfig``: A map of ONOS component IDs and corresponding list of configurations as a JSON map.
