.. _config:

=============================
Konfigurace
=============================

Konfigurace komponenty se provádí v souboru ``peva-connector.yml``, který se
nachází v adresáři ``config/`` vedle spustitelného jaru. Soubor obsahuje
nastavení připojení k PEvA, k databázi a k aplikaci Elza. Ukázku konfigurace
naleznete v souboru ``peva-connector.yml.template`` v distribučním balíčku.

Komponenta je realizována pomocí frameworku Java Spring Boot, který umožňuje
snadnou konfiguraci a rozšiřitelnost. Jednotlivá nastavení jsou definována také
v dokumentaci k frameworku.

Port
=======

Komponenta poskytuje webové rozhraní umožňující její
:ref:`monitorování <oper_monit>` a další ovládání. Komponenta běží ve výchozím
nastavení na portu 8081.

Port je možné změnit v konfiguračním souboru ``peva-connector.yml`` v sekci
``server``:

.. code-block:: yaml

  # Port, kde bude služba dostupná
  server:
    port: 8081


Databáze
==========

Komponenta používá pro ukládání dat relační databázi PostgreSQL.

.. code-block:: yaml

  # Konfigurace připojení k databázi
  spring:
    datasource:
      driver-class-name: org.postgresql.Driver
      url: jdbc:postgresql://localhost:5432/peva_connector
      username: user
      password: password

Schéma databáze spravuje Liquibase. Migrace jsou idempotentní - schéma se buď
vytvoří na prázdné databázi, nebo se převezme existující databáze Imwhooseru
v "PEVA módu". Podrobnosti viz :ref:`config_migration` a :ref:`oper_db`.


Elza
======

Napojení na Elzu slouží k odesílání stažených fondů (služba *FundService*).

.. code-block:: yaml

  # Nastavení pro připojení k ELZA
  elza:
    url: http://localhost:8080
    username: pevaimport
    password: XXXXXX
    soapLogging: false
    batchSize: 20
    # zakázat přenos dat
    send:
      enabled: true

.. important::

   Servisní účet uvedený v ``elza.username`` musí mít v Elze globální oprávnění
   **ADMIN** (superadministrátor). Fondy zakládané konektorem jsou v Elze
   *spravované* a jejich základní údaje (název, číslo fondu, značka, datace)
   smí přes *FundService* měnit pouze superadministrátor
   (viz :ref:`intro_readonly`). Bez tohoto oprávnění skončí aktualizace dříve
   založeného fondu chybou *INSUFFICIENT_PERMISSIONS*; záznam pak zůstává
   v odchozí frontě a odeslání se opakuje, dokud nebude oprávnění doplněno
   (viz :ref:`oper_db_elza_queue`).


.. _config_monit:

Monitorování
==============================

Pro monitorování běhu a stavu komponenty je k dispozici rozhraní poskytující
data ve formátu OpenMetrics (Prometheus). Rozhraní je dostupné na **stejném
portu**, na kterém běží samotná komponenta (port nastavený v sekci ``server``
výše). Způsob použití je popsán v kapitole :ref:`oper_monit`.

Aby byly metriky dostupné, je nutné v sekci ``management`` povolit jejich
zveřejnění (``exposure``). Samostatný port se zde nenastavuje - endpointy
sdílejí port komponenty.

.. code-block:: yaml

  # Monitorovací (management) rozhraní
  management:
    endpoints:
      web:
        exposure:
          # zpřístupnění endpointů health a prometheus
          include: health,prometheus
    endpoint:
      health:
        probes:
          enabled: true


Logování
==============================

Úroveň logování jednotlivých částí aplikace lze nastavit v sekci ``logging``.
Podporované úrovně jsou ``ERROR``, ``INFO`` a ``DEBUG``.

.. code-block:: yaml

  # Úroveň logování
  logging:
    file:
      name: logs/peva-connector.log
    level:
      # logování vlastní komponenty
      com.lightcomp: INFO


Konfigurace zdroje PEvA
=======================

.. toctree::

   peva.rst
