Metadata-Version: 2.1
Name: erddaputil
Version: 0.3.0
Summary: Tools for managing ERDDAP
Home-page: https://github.com/dfo-meds/erddaputil
Author: Erin Turnbull
Author-email: erin.a.turnbull@gmail.com
Project-URL: Bug Tracker, https://github.com/dfo-meds/erddaputil/issues
Project-URL: Documentation, https://erddaputil.readthedocs.io/en/latest/
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: zirconium (>=1.2.4)
Requires-Dist: autoinject (>=1.3.2)
Requires-Dist: zrlog (>=0.3.0)
Requires-Dist: click
Requires-Dist: aiohttp
Requires-Dist: requests
Requires-Dist: prometheus-client
Requires-Dist: flask
Requires-Dist: pyyaml
Requires-Dist: toml
Requires-Dist: bs4
Provides-Extra: asb
Requires-Dist: azure-identity ; extra == 'asb'
Requires-Dist: azure-storage-blob ; extra == 'asb'
Requires-Dist: azure-servicebus ; extra == 'asb'
Provides-Extra: dev
Requires-Dist: twine ; extra == 'dev'
Requires-Dist: build ; extra == 'dev'
Requires-Dist: sphinx ; extra == 'dev'
Requires-Dist: sphinx-toolbox ; extra == 'dev'
Requires-Dist: sphinx-click ; extra == 'dev'
Provides-Extra: rabbitmq
Requires-Dist: pika ; extra == 'rabbitmq'
Provides-Extra: webapp
Requires-Dist: waitress ; extra == 'webapp'

# ERDDAPUtil
ERDDAPUtil provides additional tools for managing an ERDDAP installation which focus on:

* Managing ERDDAP in a Kubernetes environment with high availability
* Automating the deployment of new datasets and updated files for ERDDAP to serve
* Obtaining statistics from ERDDAP in a more common format

The tool is divided into four main components:

* The ERDDAPUtil service (or daemon) which performs management operations.
* A command line interface for the ERDDAPUtil service
* A web interface for the ERDDAPUtil service that also provides Prometheus metrics
* An AMPQ worker service that listens for AMPQ messages and interfaces with the ERDDAPUtil service

[Documentation](https://erddaputil.readthedocs.io/en/latest)

## Installation
ERDDAPUtil can be installed as a Python package via `python -m pip install erddaputil`. It
is also available as a Docker image `dfomeds/erddaputil`.

Visit the [Quickstart Guide](https://erddaputil.readthedocs.io/en/latest/setup.html) to obtain
details on getting starting with the tool.

For most features, ERDDAPUtil requires access to the ERDDAP and Tomcat directory structures 
so that it can access and modify files. It should therefore be installed on the same physical
server or in the same Kubernetes Pod as ERDDAP.


## Features

### ERDDAP Management Features
* Trigger dataset reload, including a "badFiles" or a "hard" reload
* Compile ERDDAP's `dataset.xml` file from a directory of XML files
* Block or unblock IP addresses and emails in ERDDAP's `dataset.xml` file
* Add or remove IP addresses from the unlimited requests entry in `datasets.xml` 
* Scrape ERDDAP's `status.html` page and turn it into Prometheus statistics
* Scrape Tomcat's access logs and turn them into Prometheus statistics
* Remove old log files from Tomcat and ERDDAP
  
### Additional Features
* Execute ERDDAP management commands (reloads, compiles, blocks, unblocks) from the command 
  line or by authenticated HTTP request
* Define clusters of ERDDAP servers and pass all commands executed on one server to all other 
  servers in the cluster (requires RabbitMQ or Azure Service Bus)
  


