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.
