# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev
# SPDX-FileCopyrightText: 2024 Michael Hollister
# SPDX-FileCopyrightText: 2024 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

# Synapse Usage Exporter
# Project source code URL: https://github.com/loelkes/synapse-usage-exporter

matrix_synapse_usage_exporter_enabled: false

# Controls the hostname and path that this component exposes its web services on.
# Only used if `matrix_synapse_usage_exporter_proxying_enabled` is true.
matrix_synapse_usage_exporter_hostname: "{{ matrix_server_fqn_matrix }}"
matrix_synapse_usage_exporter_path_prefix: /report-usage-stats/push

# matrix_synapse_usage_exporter_identifier controls the identifier of this synapse-usage-exporter instance, which influences:
# - the default storage path
# - the names of systemd services and containers
matrix_synapse_usage_exporter_identifier: matrix-synapse-usage-exporter
matrix_synapse_usage_exporter_container_port: 5000

# No docker images are currently hosted for the repo, so defaulting to true
matrix_synapse_usage_exporter_container_image_self_build: true
matrix_synapse_usage_exporter_container_image_self_build_repo: "https://github.com/loelkes/synapse-usage-exporter.git"

matrix_synapse_usage_exporter_container_image_path: "loelkes/synapse-usage-exporter"
matrix_synapse_usage_exporter_container_image: "{{ matrix_synapse_usage_exporter_container_image_registry_prefix }}{{ matrix_synapse_usage_exporter_container_image_path }}:{{ matrix_synapse_usage_exporter_container_image_tag }}"
matrix_synapse_usage_exporter_container_image_registry_prefix: "{{ 'localhost/' if matrix_synapse_usage_exporter_container_image_self_build else matrix_synapse_usage_exporter_container_image_registry_prefix_upstream }}"
matrix_synapse_usage_exporter_container_image_registry_prefix_upstream: "{{ matrix_synapse_usage_exporter_container_image_registry_prefix_upstream_default }}"
matrix_synapse_usage_exporter_container_image_registry_prefix_upstream_default: "docker.io/"
matrix_synapse_usage_exporter_container_image_tag: "{{ 'main' if matrix_synapse_usage_exporter_container_image_self_build else 'latest' }}"
matrix_synapse_usage_exporter_container_image_force_pull: "{{ matrix_synapse_usage_exporter_container_image.endswith(':latest') }}"

matrix_synapse_usage_exporter_base_path: "{{ matrix_base_data_path }}/{{ matrix_synapse_usage_exporter_identifier }}"
matrix_synapse_usage_exporter_docker_src_files_path: "{{ matrix_synapse_usage_exporter_base_path }}/docker-src"

# List of systemd services that synapse-usage-exporter.service depends on
matrix_synapse_usage_exporter_systemd_required_services_list: "{{ matrix_synapse_usage_exporter_systemd_required_services_list_default + matrix_synapse_usage_exporter_systemd_required_services_list_auto + matrix_synapse_usage_exporter_systemd_required_services_list_custom }}"
matrix_synapse_usage_exporter_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
matrix_synapse_usage_exporter_systemd_required_services_list_auto: []
matrix_synapse_usage_exporter_systemd_required_services_list_custom: []

# List of systemd services that synapse-usage-exporter.service wants
matrix_synapse_usage_exporter_systemd_wanted_services_list: []

# The base container network. It will be auto-created by this role if it doesn't exist already.
matrix_synapse_usage_exporter_container_network: "{{ matrix_synapse_usage_exporter_identifier }}"

# A list of additional container networks that the container would be connected to.
# The role does not create these networks, so make sure they already exist.
# Use this to expose this container to another reverse proxy, which runs in a different container network.
matrix_synapse_usage_exporter_container_additional_networks: []

# Extra arguments for the Docker container
matrix_synapse_usage_exporter_container_extra_arguments: []

# Controls whether the synapse-usage-exporter's web services should be proxied (exposed publicly).
#
# Exposure happens on `matrix.example.com/report-usage-stats/push` by default.
# See: `matrix_synapse_usage_exporter_hostname` and `matrix_synapse_usage_exporter_path_prefix`.
matrix_synapse_usage_exporter_proxying_enabled: false

# matrix_synapse_usage_exporter_container_labels_traefik_enabled controls whether labels to assist a Traefik reverse-proxy will be attached to the container.
# See `../templates/labels.j2` for details.
#
# To inject your own other container labels, see `matrix_synapse_usage_exporter_container_labels_additional_labels`.
matrix_synapse_usage_exporter_container_labels_traefik_enabled: "{{ matrix_synapse_usage_exporter_proxying_enabled }}"
matrix_synapse_usage_exporter_container_labels_traefik_docker_network: "{{ matrix_synapse_usage_exporter_container_network }}"

matrix_synapse_usage_exporter_container_labels_traefik_path_prefix: "{{ matrix_synapse_usage_exporter_path_prefix }}"
matrix_synapse_usage_exporter_container_labels_traefik_rule: "Host(`{{ matrix_synapse_usage_exporter_hostname }}`) && PathPrefix(`{{ matrix_synapse_usage_exporter_container_labels_traefik_path_prefix }}`)"
matrix_synapse_usage_exporter_container_labels_traefik_priority: 0
matrix_synapse_usage_exporter_container_labels_traefik_entrypoints: "web-secure"
matrix_synapse_usage_exporter_container_labels_traefik_tls: "{{ matrix_synapse_usage_exporter_container_labels_traefik_entrypoints != 'web' }}"
matrix_synapse_usage_exporter_container_labels_traefik_tls_certResolver: default  # noqa var-naming

# matrix_synapse_usage_exporter_container_labels_additional_labels contains a multiline string with additional labels to add to the container label file.
# See `../templates/labels.j2` for details.
#
# Example:
# matrix_synapse_usage_exporter_container_labels_additional_labels: |
#   my.label=1
#   another.label="here"
matrix_synapse_usage_exporter_container_labels_additional_labels: ''

# matrix_synapse_usage_exporter_dashboard_urls contains a list of URLs with Grafana dashboard definitions.
# If the Grafana role is enabled, these dashboards will be downloaded.
matrix_synapse_usage_exporter_dashboard_urls:
  - https://raw.githubusercontent.com/spantaleev/matrix-docker-ansible-deploy/master/roles/custom/matrix-synapse-usage-exporter/templates/grafana/synapse-usage-exporter.json
