gpf_agent_geoserver.agent_geoserver module

Main module logic.

class gpf_agent_geoserver.agent_geoserver.GeoserverAgent(endpoint_name: str, pod_id: str, url_entrepot: str, exchange_name: str, publication_result_topic: str, host: str = 'localhost', port: int = 5672, keycloack_user_id: str | None = None, rabbit_login: str | None = None, rabbit_password: str | None = None, service_url_health_check: str = '', health_filepath: Path | None = None, work_dir: Path | None = None, pg_user: str = '', pg_pass: str = '', geoserver_url='', geoserver_user: str = '', geoserver_pass: str = '', listening_mode: bool = True, consistency_checking_timer: int = 300, consistency_checking_enabled: bool = True, mattermost_webhook_scheme: str = 'http', mattermost_webhook_host: str = 'mattermost.gpf-tech.ign.fr', mattermost_webhook_port: int = 80, mattermost_webhook_token: str | None = None, mattermost_request_timeout: int = 60)

Bases : PublishAgent

Cette class définie l’agent de publication qui communique avec le Geoserver.

Au démarrage l’agent attend que le Geoserver démarre. Il l’initialise en interrogeant l’API Entrepot. Il se met en attente des messages à traiter.

__init__(endpoint_name: str, pod_id: str, url_entrepot: str, exchange_name: str, publication_result_topic: str, host: str = 'localhost', port: int = 5672, keycloack_user_id: str | None = None, rabbit_login: str | None = None, rabbit_password: str | None = None, service_url_health_check: str = '', health_filepath: Path | None = None, work_dir: Path | None = None, pg_user: str = '', pg_pass: str = '', geoserver_url='', geoserver_user: str = '', geoserver_pass: str = '', listening_mode: bool = True, consistency_checking_timer: int = 300, consistency_checking_enabled: bool = True, mattermost_webhook_scheme: str = 'http', mattermost_webhook_host: str = 'mattermost.gpf-tech.ign.fr', mattermost_webhook_port: int = 80, mattermost_webhook_token: str | None = None, mattermost_request_timeout: int = 60)

Permet d’initialiser l’agent Geoserver.

Paramètres:
  • endpoint_name (str) – nom du endPoint

  • pod_id (str) – nom de l’identifiant de service

  • url_entrepot (str) – URL de l’Entrepôt

  • exchange_name (str) – topic du bus sur lequel l’agent écoute

  • publication_result_topic (str) – topic du bus sur lequel l’agent envoie une réponse

  • host (str) – nom de l’hôte du serveur RabbitMQ

  • port (int) – port du serveur rabbitMQ

  • keycloack_user_id (str) – id de l’utilisateur technique qui a le

  • /technical (droit d'utiliser les appels en)

  • rabbit_login (str) – utilisateur du bus RabbitMQ

  • rabbit_password (str) – mot de passe pour le bus RabbitMQ

  • work_dir (Path, optional) – dossier dans le quel l’agent peut créer des fichiers

  • pg_user (str, optional) – utilisateur de la base de donnees

  • pg_pass (str, optional) – mot de passe de la base de donnees

  • geoserver_url (str, optional) – url du Geoserver

  • geoserver_user (str, optional) – utilisateur du Geoserver

  • geoserver_pass (str, optional) – mot de passe du Geoserver

  • consistency_checking_timer (int), temps de repos (en secondes)

  • mattermost_webhook_scheme (str)

  • mattermost_webhook_host (str)

  • mattermost_webhook_port (int)

  • mattermost_webhook_token (str)

all_datastores_exist(used_data_list: dict, workspace_name: str) bool

Fonction qui vérifie si les datastores utilisés dans une offre sont déjà publiés sur le serveur. :param used_data_list: liste des datastores utilisés :type used_data_list: dict :param workspace_name: nom du workspace :type workspace_name: str

Renvoie:

True si tous les datastores sont publiés, False sinon

Type renvoyé:

bool

all_layers_exist(used_data_list: dict, workspace_name: str, type: str) bool

Fonction qui vérifie si les layers utilisés dans une offre sont déjà publiés sur le serveur. :param used_data_list: liste des layers utilisés :type used_data_list: dict :param workspace_name: nom du workspace :type workspace_name: str :param type: type du geoservice :type type: str

Renvoie:

True si tous les layers de chaque datastore sont publiés, False sinon

Type renvoyé:

bool

consistency_control()

Fonction qui surcharge celle définie dans pyroger. Le fonctionnement est sensiblement différent dans le cas du Geoserver, où nous allons vérifier la consistence de manière atomique. Nous allons devoir récupérer non plus uniquement le layer_name de l’offre mais tout le message de publication

is_offering_consistent(params: dict) bool

Fonction qui vérifie si une offre est déjà consistente sur le serveur. :param params: offre détaillée :type params: dict

Renvoie:

True si l’offre est consistente, False sinon.

Type renvoyé:

bool

is_offering_published(params: dict) bool

Fonction qui vérifie si une offre est déjà publiée sur le serveur. :param params: offre courante :type params: dict

Renvoie:

True si l’offre a déjà été publiée précédemment, False sinon.

Type renvoyé:

bool

publish_offering(params: dict) Status

Permet de publier un service GEOSERVER.

Paramètres:

params (dict) – paramètres de publication

Renvoie:

état de la publication

Type renvoyé:

Status

synchronize_offering(params: dict) Status

Permet de synchroniser un service DOWNLOAD.

Paramètres:

params (dict) – paramètre de publication

Renvoie:

état de la publication

Type renvoyé:

Status

unpublish_offering(params: dict) Status

Permet de dépublier un service DOWNLOAD.

Paramètres:

params (dict) – paramètres de publication

Renvoie:

état de la publication

Type renvoyé:

Status

gpf_agent_geoserver.agent_geoserver.run(endpoint_name: str, pod_id: str, url_entrepot: str, exchange_name: str, publication_result_topic: str, host: str, port: int, keycloack_user_id: str | None, rabbit_login: str | None, rabbit_password: str | None, service_url_health_check: str, health_filepath: Path | None, work_dir: Path, pg_user: str, pg_pass: str, geoserver_url: str, geoserver_user: str, geoserver_pass: str, consistency_checking_timer: int, consistency_checking_enabled: bool, mattermost_webhook_scheme: str, mattermost_webhook_host: str, mattermost_webhook_port: int, mattermost_webhook_token: str, mattermost_request_timeout: int)

Fonction principale permettant la création de l’agent.

Paramètres:
  • endpoint_name (str) – nom du endPoint pour le bus d’écoute

  • pod_id (str) – Id du POD

  • url_entrepot (str) – URL de l’Entrepôt

  • exchange_name (str) – nom de l’exchange du bus sur lequel écouter, vaut « my_exchange » par défaut. Ne doit pas être une chaîne vide.

  • publication_result_topic (str) – topic du bus sur lequel l’agent envoie une réponse

  • host (str) – nom de l’hôte du serveur RabbitMQ

  • port (int) – port du serveur rabbitMQ

  • keycloack_user_id (str) – id de l’utilisateur technique qui a le droit d’utiliser les appels en /technical

  • rabbit_login (str) – utilisateur du bus RabbitMQ

  • rabbit_password (str) – mot de passe pour le bus RabbitMQ

  • service_url_health_check (str) – url de vérification de l’état du service de téléchargement

  • health_filepath (Path) – Chemin vers le fichier de « health » de l’agent

  • work_dir (Path) – dossier dans le quel l’agent peut créer des fichiers

  • pg_user (str) – utilisateur de la base de donnees

  • pg_pass (str) – mot de passe de la base de donnees

  • geoserver_url (str) – url du Geoserver

  • geoserver_user (str, optional) – utilisateur du Geoserver

  • geoserver_pass (str) – mot de passe du Geoserver

  • consistency_checking_timer (int), temps de repos (en secondes)

  • mattermost_webhook_scheme (str)

  • mattermost_webhook_host (str)

  • mattermost_webhook_port (int)

  • mattermost_webhook_token (str)